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] );