42#ifndef vtkPointLocator_h
43#define vtkPointLocator_h
45#include "vtkCommonDataModelModule.h"
50class vtkNeighborPoints;
74 vtkSetVector3Macro(Divisions,
int);
75 vtkGetVectorMacro(Divisions,
int,3);
83 vtkGetMacro(NumberOfPointsPerBucket,
int);
106 double radius,
const double x[3],
double& dist2) VTK_OVERRIDE;
108 double radius,
const double x[3],
109 double inputDataLength,
double& dist2);
119 const double bounds[6]) VTK_OVERRIDE;
162 xyz[0] = x; xyz[1] = y; xyz[2] = z;
243 void FreeSearchStructure() VTK_OVERRIDE;
244 void BuildLocator() VTK_OVERRIDE;
253 void GetBucketNeighbors(vtkNeighborPoints* buckets,
254 const
int ijk[3], const
int ndivs[3],
int level);
255 void GetOverlappingBuckets(vtkNeighborPoints* buckets,
256 const
double x[3], const
int ijk[3],
double dist,
258 void GetOverlappingBuckets(vtkNeighborPoints* buckets,
259 const
double x[3],
double dist,
261 int prevMaxLevel[3]);
262 void GenerateFace(
int face,
int i,
int j,
int k,
264 double Distance2ToBucket(const
double x[3], const
int nei[3]);
265 double Distance2ToBounds(const
double x[3], const
double bounds[6]);
269 int NumberOfPointsPerBucket;
273 double InsertionTol2;
275 double InsertionLevel;
279 double FX, FY, FZ, BX, BY, BZ;
282 void GetBucketIndices(const
double *x,
int ijk[3])
const
285 ijk[0] =
static_cast<int>(((x[0] - this->BX) * this->FX));
286 ijk[1] =
static_cast<int>(((x[1] - this->BY) * this->FY));
287 ijk[2] =
static_cast<int>(((x[2] - this->BZ) * this->FZ));
289 ijk[0] = (ijk[0] < 0 ? 0 : (ijk[0] >= XD ? XD-1 : ijk[0]));
290 ijk[1] = (ijk[1] < 0 ? 0 : (ijk[1] >= YD ? YD-1 : ijk[1]));
291 ijk[2] = (ijk[2] < 0 ? 0 : (ijk[2] >= ZD ? ZD-1 : ijk[2]));
297 this->GetBucketIndices(x, ijk);
298 return ijk[0] + ijk[1]*this->XD + ijk[2]*this->SliceSize;
virtual vtkIdType FindClosestPoint(const double x[3])=0
Given a position x, return the id of the point closest to it.
object to represent cell connectivity
list of point or cell ids
Abstract class in support of both point location and point insertion.
virtual vtkIdType IsInsertedPoint(double x, double y, double z)=0
Determine whether or not a given point has been inserted.
a simple class to control print indentation
quickly locate points in 3-space
void InsertPoint(vtkIdType ptId, const double x[3]) override
Incrementally insert a point into search structure with a particular index value.
int InitPointInsertion(vtkPoints *newPts, const double bounds[6]) override
Initialize the point insertion process.
vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double &dist2) override
Given a position x and a radius r, return the id of the point closest to the point in that radius.
vtkIdType IsInsertedPoint(double x, double y, double z) override
Determine whether point given by x[3] has been inserted into points list.
void FindClosestNPoints(int N, const double x[3], vtkIdList *result) override
Find the closest N points to a position.
virtual void FindDistributedPoints(int N, double x, double y, double z, vtkIdList *result, int M)
virtual vtkIdList * GetPointsInBucket(const double x[3], int ijk[3])
Given a position x, return the list of points in the bucket that contains the point.
static vtkPointLocator * New()
Construct with automatic computation of divisions, averaging 25 points per bucket.
virtual void FindDistributedPoints(int N, const double x[3], vtkIdList *result, int M)
Find the closest points to a position such that each octant of space around the position contains at ...
void Initialize() override
See vtkLocator interface documentation.
vtkIdType FindClosestPoint(const double x[3]) override
Given a position x, return the id of the point closest to it.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double inputDataLength, double &dist2)
void ComputePerformanceFactors()
vtkIdType IsInsertedPoint(const double x[3]) override
Determine whether or not a given point has been inserted.
vtkIdType GetBucketIndex(const double *x) const
vtkIdType InsertNextPoint(const double x[3]) override
Incrementally insert a point into search structure.
int InsertUniquePoint(const double x[3], vtkIdType &ptId) override
Determine whether point given by x[3] has been inserted into points list.
int InitPointInsertion(vtkPoints *newPts, const double bounds[6], vtkIdType estSize) override
Initialize the point insertion process.
void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result) override
Find all points within a specified radius R of position x.
vtkIdType FindClosestInsertedPoint(const double x[3]) override
Given a position x, return the id of the point closest to it.
represent and manipulate 3D points
concrete dataset represents vertices, lines, polygons, and triangle strips