## Interpolation Functions

In this section:

 DESCRIPTION ViXL3D.DLL ViXL3D.XLL Cubic Interpolation of 2D Data Cubic interpolation of a 2D data table. Given equal size vectors KnownX and KnownY, and a separate vector DesiredX of arbitrary size, returns the unknown Y values for each of the desired X values. Populates the vector ResultsY of equal size to DesiredX. ViXL_DLL_API int _vxCubicInterp(    const vector &KnownX,    const vector &KnownY,    const vector &DesiredX,    vector &ResultsY );   Populates the vector ResultsY, of equal size to DesiredX, with the unknown Y values. vxCubicInterp(const Matrix &_KnownX,               const Matrix &_KnownY,               const Matrix &_DesiredX );   KnownX = n rows x 1 column KnownY = n rows x 1 column DesiredX = j rows x 1 column   Returns unknown Y values for DesiredX values as j rows x 1 column. Linear Interpolation of 2D Data Linear interpolation of a 2D data table. Given equal size vectors KnownX and KnownY, and a separate vector DesiredX of arbitrary size, returns the unknown Y values for each of the desired X values. Populates the vector ResultsY of equal size to DesiredX. ViXL_DLL_API int _vxLinearInterp(    const vector &KnownX,    const vector &KnownY,    const vector &DesiredX,    vector &ResultsY );   Populates the vector ResultsY, of equal size to DesiredX, with the unknown Y values. vxLinearInterp(const Matrix &_KnownX,                const Matrix &_KnownY,                const Matrix &_DesiredX );   KnownX = n rows x 1 column KnownY = n rows x 1 column DesiredX = j rows x 1 column   Returns unknown Y values for DesiredX values as j rows x 1 column. Interpolate 2D Points with Values Interpolate 2D points with arbitrary values. Given a non-uniform distribution of 2D points KnownPoints, each representing a unique set of one or more values KnownValues, return the unknown values for each desired point as vector DesiredPoints. Populates the array Results, of rows equal to KnownValues and length equal to DesiredPoints. Points lying outside boundary are mapped to nearest in-boundary neighbor if Remap is true. ViXL_DLL_API int _vxInterp2D(    const vector &KnownPoints,    const vector &KnownValues,    const vector &DesiredPoints,    vector &RemapPoints,    vector> &Results );   Populates the array Results, of rows equal to KnownValues and length equal to DesiredPoints. Points lying outside the boundary are mapped to nearest in-boundary neighbor if RemapPoints is true. vxInterp2D(const Matrix &_KnownPoints,            const Matrix &_KnownValues,            const Matrix &_DesiredPoints,            XlfOper &_RemapPoints );   KnownPoints = n rows x 2 columns KnownValues = n rows x j >= 1 columns DesiredPoints = k rows x 2 columns RemapPoints = k rows x 1 column (Boolean)   Returns an array of k rows x j columns, values associated with desired 2D points. Interpolate 3D Points with Values Interpolate 3D points with arbitrary values. Given a non-uniform distribution of 3D points KnownPoints, each representing a unique set of one or more values KnownValues, return the unknown values for each desired point as vector DesiredPoints. Populates the array Results, of rows equal to KnownValues and length equal to DesiredPoints. Points lying outside boundary are mapped to nearest in-boundary neighbor if Remap is true. ViXL_DLL_API int _vxInterp3D(    const vector &KnownPoints,    const vector &KnownValues,    const vector &DesiredPoints,    vector &RemapPoints,    vector> &Results );   Populates the array Results, of rows equal to KnownValues and length equal to DesiredPoints. Points lying outside the boundary are mapped to nearest in-boundary neighbor if RemapPoints is true. vxInterp3D(const Matrix &_KnownPoints,            const Matrix &_KnownValues,            const Matrix &_DesiredPoints,            XlfOper &_RemapPoints );   KnownPoints = n rows x 3 columns KnownValues = n rows x j >= 1 columns DesiredPoints = k rows x 3 columns RemapPoints = k rows x 1 column (Boolean)   Returns an array of k rows x j columns, values associated with desired 3D points. Interpolate 3D Points Using RBF Interpolate 3D points with arbitrary values using Radial Basis Function. Given a non-uniform distribution of 3D points KnownPoints, each representing a unique set of one or more values KnownValues, return the unknown values for each desired point as vector DesiredPoints. Populates the array Results, of rows equal to KnownValues and length equal to DesiredPoints. Points lying outside boundary are mapped to nearest in-boundary neighbor if Remap is true. ViXL_DLL_API int _vxInterp3D(    const vector &KnownPoints,    const vector &KnownValues,    const vector &DesiredPoints,    vector &RemapPoints,    vector> &Results );   Populates the array Results, of rows equal to KnownValues and length equal to DesiredPoints. Points lying outside the boundary are mapped to nearest in-boundary neighbor if RemapPoints is true. vxInterp3DRBF(const Matrix &_KnownPoints,               const Matrix &_KnownValues,               const Matrix &_DesiredPoints,               XlfOper &_RemapPoints );   KnownPoints = n rows x 3 columns KnownValues = n rows x j >= 1 columns DesiredPoints = k rows x 3 columns RemapPoints = k rows x 1 column (Boolean)   Returns an array of k rows x j columns, values associated with desired 3D points. Find Distance Beyond 2D Boundary Determines the relative distance of a vector of points TestPoints, that fall out-side the convex hull boundary surrounding a distribution of 2D points KnownPoints. Populates the vector Results, equal in size to TestPoints, where 0 = in-boundary and values > 0 represent the relative distance beyond the boundary. ViXL_DLL_API int _vxOutDist2D(    const vector &KnownPoints,    const vector &TestPoints,    vector> &Results );   Populates the vector Results, equal in size to TestPoints, where 0 = in-boundary and values > 0 represent the relative distance beyond the boundary. vxOutDist2D(const Matrix &_KnownPoints,             const Matrix &_TestPoints );   KnownPoints = n rows x 2 columns TestPoints = j rows x 2 columns   Returns a vector of j rows x 1 column where 0 = in-boundary, and > 0 represents the relative distance beyond the hull boundary. Find Distance Beyond 3D Boundary Determines the relative distance of a vector of points TestPoints, that fall out-side the convex hull boundary surrounding a distribution of 3D points KnownPoints. Populates the vector Results, equal in size to TestPoints, where 0 = in-boundary and values > 0 represent the relative distance beyond the boundary. ViXL_DLL_API int _vxOutDist3D(    const vector &KnownPoints,    const vector &TestPoints,    vector> &Results );   Populates the vector Results, equal in size to TestPoints, where 0 = in-boundary and values > 0 represent the relative distance beyond the boundary. vxOutDist3D(const Matrix &_KnownPoints,             const Matrix &_TestPoints );   KnownPoints = n rows x 3 columns TestPoints = j rows x 3 columns   Returns a vector of j rows x 1 column where 0 = in-boundary, and > 0 represents the relative distance beyond the hull boundary. Convert XYZ Points to 3D Height Map Convert table of XYZ points KnownPoints, to a 3D height map where Z = height; parameters Xn and Yn define the size of the height map. Populates the vector PointsXY, a height map produced from the table of XYZ points, KnownPoints. ViXL_DLL_API int _vxXYZtoUniformMesh(    const vector & KnownPoints,    int Xn,    int Yn,    double Zscale,    vector> &PointsXY );   Populates the vector PointsXY, a height map produced from the table of XYZ points, KnownPoints. vxXYZtoUniformMesh(    const Matrix &_ PointsXY,    int _Xn,    int _Yn,    double _Zscale, );   KnownPoints = n rows x 3 columns Xn, Yn = 1 cell (float)   Returns the height map produced from the table of XYZ points.