Point3DGrid
Description
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. The virtual grid in memory, where the 3D points are stored, has its width and height. One dimension of this grid corresponds to the number of 3D scanner samples that make up a single scan. The other dimension corresponds to the number of scans collected during the scan. Storing point data in this way makes it possible to define a Region of interest for Point3DGrid object. Also, there is no guarantee that two points that are neighbors in the grid lie close to each other in the 3D space. 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.
Library Definition
Methods:
int Width()
- returns number of grid columnsint Height()
- returns number of grid rowsPoint3D* Data()
- returns pointer to point cloud data bufferPoint3D* operator[]( int index )
- returns pointer to first point in the index rowstatic bool IsPointValid( const Point3D& inPoint )
- checks if a point is a valid point, i.e. it is not missing