|AHELP for CIAO 4.2||
Is a point (or set of points) inside a region?
Short_Type regInsideRegion( Region_Type Region, Double_Type X, Double_Type Y ) Array_Type regInsideRegion( Region_Type Region, Array_Type Xarr, Array_Type Yarr )
The regInsideRegion routine queries a region to find out if a point (or an array of points) is inside the region or not. 1 is returned for yes, and 0 if no. The input values are a CIAO region variable (as returned from regParse), and the positions to query which can be either a single X, Y position or two arrays of positions, Xarray and Yarray.
The region module is not available by default; to use it in a S-Lang program, it must be loaded using the S-Lang require() function:
slsh> require("region"); slsh> reg = regParse("circle(10,10,4)"); slsh> flag = regInsideRegion( reg, 12, 11 ); slsh> print(flag); 1
Here we use the regInsideRegion() routine to find out whether the point at (12,11) is inside the circle centered at (10,10) with a radius of 4 pixels. The answer is 1, since it is.
slsh> xc = [ 10, 16, 12 ]; slsh> yc = [ 11, -4, 8 ]; slsh> flag = regInsideRegion( reg, xc, yc ); slsh> print(xc); 10 16 12 slsh> print(yc); 11 -4 8 slsh> print(flag); 1 0 1 slsh> i = where( flag ); slsh> xx = xc[i]; slsh> yy = yc[i]; slsh> print(xx); 10 12 slsh> print(yy); 11 8
Here we have found that the points (10,11) and (12,8) are inside the region, but that (16,-4) is not. The where() routine is then used to show how you can extract from the arrays only those points that lie inside the region. If the where() function had been written
where( flag == 0 )
then it would have selected those points that lie outside the region.
See the bugs page for the region library on the CIAO website for an up-to-date listing of known bugs.