50 #ifndef __vtkIncrementalOctreePointLocator_h
51 #define __vtkIncrementalOctreePointLocator_h
59 class vtkIncrementalOctreeNode;
79 vtkSetClampMacro( MaxPointsPerLeaf,
int, 16, 256 );
80 vtkGetMacro( MaxPointsPerLeaf,
int );
85 vtkSetMacro( BuildCubicOctree,
int );
86 vtkGetMacro( BuildCubicOctree,
int );
87 vtkBooleanMacro( BuildCubicOctree,
int );
93 vtkGetObjectMacro( LocatorPoints,
vtkPoints );
103 virtual void GetBounds(
double * bounds );
112 int GetNumberOfPoints();
169 (
double radius,
const double x[3],
double & dist2 );
179 vtkIdType FindClosestPointWithinSquaredRadius
180 (
double radius2,
const double x[3],
double & dist2 );
190 (
double R,
const double x[3],
vtkIdList * result );
199 void FindPointsWithinSquaredRadius
200 (
double R2,
const double x[3],
vtkIdList * result );
210 (
int N,
const double x[3],
vtkIdList * result );
286 void InsertPointWithoutChecking
287 (
const double point[3],
vtkIdType & pntId,
int insert );
298 int BuildCubicOctree;
299 int MaxPointsPerLeaf;
300 double InsertTolerance2;
301 double OctreeMaxDimSize;
304 vtkIncrementalOctreeNode * OctreeRootNode;
307 static void DeleteAllDescendants( vtkIncrementalOctreeNode * node );
312 static void AddPolys( vtkIncrementalOctreeNode * node,
320 vtkIncrementalOctreeNode * GetLeafContainer( vtkIncrementalOctreeNode * node,
321 const double pnt[3] );
331 vtkIdType FindClosestPointInLeafNode( vtkIncrementalOctreeNode * leafNode,
332 const double point[3],
double * dist2 );
348 (
const double point[3],
double radius2, vtkIncrementalOctreeNode * maskNode,
349 double * minDist2,
const double * refDist2 );
367 vtkIdType FindClosestPointInSphereWithoutTolerance(
const double point[3],
368 double radius2, vtkIncrementalOctreeNode * maskNode,
double * minDist2 );
376 void FindPointsWithinSquaredRadius( vtkIncrementalOctreeNode * node,
377 double radius2,
const double point[3],
vtkIdList * idList );
395 vtkIdType FindClosestPointInSphereWithTolerance(
const double point[3],
396 double radius2, vtkIncrementalOctreeNode * maskNode,
double * minDist2 );
409 vtkIncrementalOctreeNode ** leafContainer );
420 vtkIdType IsInsertedPointForZeroTolerance
421 (
const double x[3], vtkIncrementalOctreeNode ** leafContainer );
433 vtkIdType IsInsertedPointForNonZeroTolerance
434 (
const double x[3], vtkIncrementalOctreeNode ** leafContainer );
443 vtkIdType FindDuplicatePointInLeafNode( vtkIncrementalOctreeNode * leafNode,
444 const double point[3] );
454 vtkIdType FindDuplicateFloatTypePointInVisitedLeafNode
455 ( vtkIncrementalOctreeNode * leafNode,
const double point[3] );
465 vtkIdType FindDuplicateDoubleTypePointInVisitedLeafNode
466 ( vtkIncrementalOctreeNode * leafNode,
const double point[3] );
virtual void FreeSearchStructure()=0
virtual void Initialize()
virtual vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double &dist2)=0
virtual int InsertUniquePoint(const double x[3], vtkIdType &ptId)=0
virtual vtkIdType IsInsertedPoint(double x, double y, double z)=0
Abstract class in support of both point location and point insertion.
virtual double * GetBounds()
void PrintSelf(ostream &os, vtkIndent indent)
concrete dataset represents vertices, lines, polygons, and triangle strips
virtual int InitPointInsertion(vtkPoints *newPts, const double bounds[6])=0
a simple class to control print indentation
list of point or cell ids
virtual void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result)=0
virtual void FindClosestNPoints(int N, const double x[3], vtkIdList *result)=0
object to represent cell connectivity
virtual vtkIdType InsertNextPoint(const double x[3])=0
virtual vtkIdType FindClosestInsertedPoint(const double x[3])=0
virtual double * GetBounds()
virtual vtkIdType FindClosestPoint(const double x[3])=0
virtual void BuildLocator()=0
virtual void InsertPoint(vtkIdType ptId, const double x[3])=0
virtual void GenerateRepresentation(int level, vtkPolyData *pd)=0
represent and manipulate 3D points
Incremental octree in support of both point location and point insertion.