Matrix::GetInterpolatedValue

Description

Get an interpolated Z value from an internal Origin matrix.

Syntax

double GetInterpolatedValue( double dX, double dY, int nMethod = INTERPOLATE_NEAREST, int * pnError = NULL )

Parameters

dX
[input] The X coordinate value
dY
[input] The Y coordinate value
nMethod
[input] Determines interpolation method. An enumerated value from the system header file OC_const.h including the values INTERPOLATE_NEAREST,
INTERPOLATE_BILINEAR, INTERPOLATE_BICUBIC, INTERPOLATE_2DSPLINE, and INTERPOLATE_VERTICINTERPOL
pnError
[output] A pointer to an error code

Return

Returns the interpolated Z value on success or NANUM and an error code on failure.

Possible values for *pnError include:

-1=Complex matrix not supported

-5=Interpolate method does not exist

-6=dX or dY value is out of range

-8=The matrix must be at least 2*2 for bilinear method

-9=The matrix must be at least 3*3 for bicubic method

-10=The matrix must be at least 4*4 for 2D spline method

73=Memory allocation failed

243=Data is too ill conditioned to compute the B spline

Examples

EX1

// Get the interpolated Z value from a matrix
void Matrix_GetInterpolatedValue_ex1()
{
    double dZ;
    int nError;

    matrix mat1 = {
        {2, 2, 2, 2},
        {2, 1, 1, 2},
        {2, 1, 1, 2},
        {2, 2, 2, 2}
    };
    
    MatrixPage MatPg1;
    MatPg1.Create("Origin");
    MatrixLayer MatLy1 = MatPg1.Layers(0);
    Matrix Mat1(MatLy1);
    printf("  Target matrix %s has been created.\n",Mat1.GetName());
    Mat1.SetXMin(0);
    Mat1.SetXMax(10);
    Mat1.SetYMin(0);
    Mat1.SetYMax(10);
    Mat1 = mat1;
    
    // Demonstaration of GetInterpolatedValue to get the interpolated Z value
    // This will print the following message:
    // Interpolated Z value at (5,5) = 0.734375
    dZ = Mat1.GetInterpolatedValue(5,5,INTERPOLATE_2DSPLINE, &nError );
    if(dZ==NANUM) {
        printf("  Error: GetInterpolatedValue failed.Error code = %d\n",nError);
        return;
    }
    else 
        printf("  Interpolated Z value at (5,5) = %g\n",dZ);
}

Remark

Get an interpolated Z value from an internal Origin matrix using the specified interpolation method and interpolating in two dimensions for the specified x and y coordinates.

See Also

Matrix::ImageLinesProfile

header to Include

origin.h