41 #ifndef vtkPointLocator_h
42 #define vtkPointLocator_h
44 #include "vtkCommonDataModelModule.h"
50 VTK_ABI_NAMESPACE_BEGIN
53 class vtkNeighborPoints;
77 vtkSetVector3Macro(Divisions,
int);
78 vtkGetVectorMacro(Divisions,
int, 3);
85 vtkSetClampMacro(NumberOfPointsPerBucket,
int, 1,
VTK_INT_MAX);
86 vtkGetMacro(NumberOfPointsPerBucket,
int);
110 double radius,
const double x[3],
double inputDataLength,
double& dist2);
212 virtual void FindDistributedPoints(
int N,
const double x[3],
vtkIdList* result,
int M);
213 virtual void FindDistributedPoints(
int N,
double x,
double y,
double z,
vtkIdList* result,
int M);
230 virtual vtkIdList* GetPointsInBucket(
const double x[3],
int ijk[3]);
258 void GetBucketNeighbors(
259 vtkNeighborPoints* buckets,
const int ijk[3],
const int ndivs[3],
int level);
260 void GetOverlappingBuckets(
261 vtkNeighborPoints* buckets,
const double x[3],
const int ijk[3],
double dist,
int level);
262 void GetOverlappingBuckets(vtkNeighborPoints* buckets,
const double x[3],
double dist,
263 int prevMinLevel[3],
int prevMaxLevel[3]);
265 double Distance2ToBucket(
const double x[3],
const int nei[3]);
266 double Distance2ToBounds(
const double x[3],
const double bounds[6]);
280 double FX, FY,
FZ, BX, BY, BZ;
289 vtkIdType tmp0 = vtkMathUtilities::SafeCastFromDouble<vtkIdType>((x[0] - this->BX) * this->FX);
290 vtkIdType tmp1 = vtkMathUtilities::SafeCastFromDouble<vtkIdType>((x[1] - this->BY) * this->FY);
291 vtkIdType tmp2 = vtkMathUtilities::SafeCastFromDouble<vtkIdType>((x[2] - this->BZ) * this->FZ);
293 ijk[0] = std::min(std::max<vtkIdType>(tmp0, 0), this->XD - 1);
294 ijk[1] = std::min(std::max<vtkIdType>(tmp1, 0), this->YD - 1);
295 ijk[2] = std::min(std::max<vtkIdType>(tmp2, 0), this->ZD - 1);
301 this->GetBucketIndices(x, ijk);
302 return ijk[0] + ijk[1] * this->XD + ijk[2] * this->SliceSize;
305 void ComputePerformanceFactors();
312 VTK_ABI_NAMESPACE_END
int NumberOfPointsPerBucket
vtkIdType GetBucketIndex(const double *x) const
vtkIdType IsInsertedPoint(double x, double y, double z) override
Determine whether point given by x[3] has been inserted into points list.
void GetBucketIndices(const double *x, int ijk[3]) const
virtual void BuildLocator()=0
Build the locator from the input dataset.
virtual vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double &dist2)=0
Given a position x and a radius r, return the id of the point closest to the point in that radius...
quickly locate points in 3-space
virtual int InsertUniquePoint(const double x[3], vtkIdType &ptId)=0
Insert a point unless there has been a duplicate in the search structure.
vtkIdType InsertionPointId
virtual vtkIdType IsInsertedPoint(double x, double y, double z)=0
Determine whether or not a given point has been inserted.
Abstract class in support of both point location and point insertion.
concrete dataset represents vertices, lines, polygons, and triangle strips
virtual void FreeSearchStructure()=0
Free the memory required for the spatial data structure.
virtual int InitPointInsertion(vtkPoints *newPts, const double bounds[6])=0
Initialize the point insertion process.
a simple class to control print indentation
virtual void BuildLocatorInternal()
This function is not pure virtual to maintain backwards compatibility.
list of point or cell ids
virtual void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result)=0
Find all points within a specified radius R of position x.
virtual void FindClosestNPoints(int N, const double x[3], vtkIdList *result)=0
Find the closest N points to a position.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard type and print methods.
object to represent cell connectivity
virtual vtkIdType InsertNextPoint(const double x[3])=0
Insert a given point and return the point index.
virtual vtkIdType FindClosestInsertedPoint(const double x[3])=0
Given a point x assumed to be covered by the search structure, return the index of the closest point ...
virtual vtkIdType FindClosestPoint(const double x[3])=0
Given a position x, return the id of the point closest to it.
virtual void Initialize()
Initialize locator.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
virtual void InsertPoint(vtkIdType ptId, const double x[3])=0
Insert a given point with a specified point index ptId.
virtual void GenerateRepresentation(int level, vtkPolyData *pd)=0
Method to build a representation at a particular level.
represent and manipulate 3D points
virtual void ForceBuildLocator()
Build the locator from the input dataset (even if UseExistingSearchStructure is on).