Invert GMLscripts.com

ds_grid_get_bicubic

Press [SPACE] to create a new sample grid.Download

NOTE: Depends on spline4().

ds_grid_get_bicubic(id,x,y)
Returns the bicubic interpolation of the sixteen grid cells surrounding the given fractional coordinate.
COPY/// ds_grid_get_bicubic(id,x,y)
//
//  Returns the bicubic interpolation of the sixteen grid
//  cells surrounding the given fractional coordinate.
//  Depends on spline4().
//
//      id          grid data structure, real
//      x,y         coordinate pair, real
//
/// GMLscripts.com/license
{
    var ix,iy,fx,fy;
    ix = floor(argument1);
    iy = floor(argument2);
    fx = argument1 - ix;
    fy = argument2 - iy;

    return spline4(fx,
        spline4(fy,
            ds_grid_get(argument0,ix-1,iy-1),
            ds_grid_get(argument0,ix-1,iy  ),
            ds_grid_get(argument0,ix-1,iy+1),
            ds_grid_get(argument0,ix-1,iy+2)),
        spline4(fy,
            ds_grid_get(argument0,ix  ,iy-1),
            ds_grid_get(argument0,ix  ,iy  ),
            ds_grid_get(argument0,ix  ,iy+1),
            ds_grid_get(argument0,ix  ,iy+2)),
        spline4(fy,
            ds_grid_get(argument0,ix+1,iy-1),
            ds_grid_get(argument0,ix+1,iy  ),
            ds_grid_get(argument0,ix+1,iy+1),
            ds_grid_get(argument0,ix+1,iy+2)),
        spline4(fy,
            ds_grid_get(argument0,ix+2,iy-1),
            ds_grid_get(argument0,ix+2,iy  ),
            ds_grid_get(argument0,ix+2,iy+1),
            ds_grid_get(argument0,ix+2,iy+2)));
}

Contributors: xot

GitHub: View · Commits · Blame · Raw