Find all the points in a Curve which fall on or within a specified rectangle.
int GetRectPoints( fpoint & fptTopLeft, fpoint & fptBottomRight, vector<double> & vX, vector<double> & vY, vector<int> & vIndex )
Returns the number of data points found within the rectangle (0,1,2,3...) on success and returns a negative integer on failure. Also returns the coordinates and index of all points within the rectangle.
EX1
int curvebase_GetRectPoints_ex1(string wksName = "Book1") { // Assumes Book1_A(X) and Book1_B(Y) exist with the following data: // Book1_B={1,2,3,4,5,6,7,8,9,10} // Book1_A={1,2,3,4,5,6,7,8,9,10}; Worksheet wks(wksName); Dataset ds1(wksName,0), ds2(wksName,1), ds3; Curve crv(ds1, ds2); int colnum = wks.AddCol("Index"); ds1.Attach(wksName,colnum); colnum = wks.AddCol("Xval"); ds2.Attach(wksName,colnum); colnum = wks.AddCol("Yval"); ds3.Attach(wksName,colnum); fpoint fptTL(3,8); fpoint fptBR(7,2); vector<double> vX, vY; vector<int> vIndex; int num = crv.GetRectPoints( fptTL, fptBR, vX, vY, vIndex ); vIndex+=1; //adjust because 0 based ds1 = vIndex; ds2 = vX; ds3 = vY; return num; }
Find all the points in a Curve which fall on or within a specified rectangle. The rectangle is specified by its top-left and bottom-right corners.
There is a similar method in DataPlot class that is more useful as it is not possible to get curvebase from a data plot. The following example shows how to count number of data points given a rectangle region of the graph layer:
void dd(double x1, double x2, double y1, double y2) { fpoint fptTL(x1,y2); fpoint fptBR(x2,y1); vector vX, vY; GraphLayer gl = Project.ActiveLayer(); int ii = 1; foreach (DataPlot dp in gl.DataPlots) { int nn = dp.GetRectPoints(fptTL, fptBR, vX, vY); printf("%d: Found %d\n", ii++, nn); } }
origin.h