The Point3DGrid data type represents a cloud of points in a three-dimensional space. Although the points are organized in a grid structure just like in a Surface object, unlike there the X and Y coordinates of the points can have arbitrary values. Therefore the whole Point3DGrid object has only a virtual grid structure, there is no guarantee that two points that are neighbors in the grid lie close to each other in the space. However, the grid structure allows to define regions of interest for a Point3DGrid object. For every point in the cloud it is possible that it does not exist. In this case a special value of point is stored to mark that the point is missing.
For most purposes the Surface objects should be preferred than Point3DGrid objects. Surface requires much less space and ensures that two neighboring points lie quite close to each other, at least in XY plane.
Some filters can introduce invalid points, that is, points that have an infinite value in the one or more of the coordinates.
Invalid points can be localized using Point3DGridValidPointsRegion. This filter will also return a region of all valid points, which, most of the time, should be the only points considered in further processing.
int Width()- returns number of grid columns
int Height()- returns number of grid rows
Point3D* Data()- returns pointer to point cloud data buffer
Point3D* operator( int index )- returns pointer to first point in the index row
static bool IsPointValid( const Point3D& inPoint )- checks if a point is a valid point, i.e. it is not missing