2.1.18.8 ocmath_find_xy_in_rect
Description
Select given XY array to find all points inside the rectangle defined by XY
min max values.
Syntax
int ocmath_find_xy_in_rect( uint nPts, const double * pX, const double * pY, uint * pIndices, double dxMin, double dyMin, double dxMax, double dyMax )
Parameters
- nPts
- [input] The number of input data points in pX, pY, pZ;
- pX
- [input] The array of X coordinates, must no be NULL;
- pY
- [input] The array of Y coordinates, must no be NULL;
- pIndices
- [output], must be SetSize to nPts on input and will receive the
- indices of the XY points inside rect.
- dxMin
- [input] The minimum value of output X array;
- dyMin
- [input] The minimum value of output Y array;
- dxMax
- [input] The maximum value of output X array, must not be less than dXMin;
- dyMax
- [input] The maximum value of output Y array, must not be less than dYMin.
Return
0 if none found to be inside rect, otherwise the number of points found,
and will always be less than nPts.
-1 if given XY range does not define a valid Rect, like if xmin>=xmax or
ymin>=ymax.
Examples
EX1
//Before running, make sure a worksheet is active in current project
//the worksheet should has at least 2 columns and without any missing value in the first two columns
#include <wks2mat.h>
void ocmath_find_xy_in_rect_ex1(double dXMin = -1, double dYMin = -1, double dXMax = 1, double dYMax = 1)
{
Worksheet wks = Project.ActiveLayer();
Dataset dsX(wks, 0), dsY(wks, 1);
vector vX(dsX), vY(dsY);
vector<uint> vIndices(dsX.GetSize());
int nPts = ocmath_find_xy_in_rect(dsX.GetSize(), vX, vY, vIndices, dXMin, dYMin, dXMax, dYMax);
ocmath_d_copy(nPts, vIndices, vX, vX, vX.GetSize());
ocmath_d_copy(nPts, vIndices, vY, vY, vY.GetSize());
printf("%d data points are found within rect.\n", nPts);
vX.SetSize(nPts);
vY.SetSize(nPts);
dsX = vX;
dsY = vY;
}
Remark
Should trim Missing Value before using this function
See Also
ocmath_find_xy_in_circle
Header to Include
wks2mat.h
Reference
|