VTK  9.6.20260527
vtkStaticPointLocator2D.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
53
54#ifndef vtkStaticPointLocator2D_h
55#define vtkStaticPointLocator2D_h
56
58#include "vtkCommonDataModelModule.h" // For export macro
59#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_7_0
60
61VTK_ABI_NAMESPACE_BEGIN
62class vtkDoubleArray;
63class vtkIdList;
64struct vtkBucketList2D;
66
67class VTKCOMMONDATAMODEL_EXPORT vtkStaticPointLocator2D : public vtkAbstractPointLocator
68{
69public:
75
77
81 void PrintSelf(ostream& os, vtkIndent indent) override;
83
85
90 vtkSetClampMacro(NumberOfPointsPerBucket, int, 1, VTK_INT_MAX);
91 vtkGetMacro(NumberOfPointsPerBucket, int);
93
95
101 vtkSetVector2Macro(Divisions, int);
102 vtkGetVectorMacro(Divisions, int, 2);
104
105 // Reuse any superclass signatures that we don't override.
110
118 vtkIdType FindClosestPoint(const double x[3]) override;
119
121
129 vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double& dist2) override;
131 double radius, const double x[3], double inputDataLength, double& dist2);
133
142 void FindClosestNPoints(int N, const double x[3], vtkIdList* result) override;
143
161 double FindNPointsInAnnulus(int N, const double x[3], vtkDist2TupleArray& results,
162 double minDist2 = (-0.1), bool sort = true, vtkDoubleArray* petals = nullptr);
163
170 void FindPointsWithinRadius(double R, const double x[3], vtkIdList* result) override;
171
181 int IntersectWithLine(double a0[3], double a1[3], double tol, double& t, double lineX[3],
182 double ptX[3], vtkIdType& ptId);
183
185
192 double FindCloseNBoundedPoints(int N, const double x[3], vtkIdList* result);
194
202 void MergePoints(double tol, vtkIdType* mergeMap);
203
205
209 void Initialize() override;
210 void FreeSearchStructure() override;
211 void BuildLocator() override;
212 void ForceBuildLocator() override;
214
222
228 void GetBucketIds(vtkIdType bNum, vtkIdList* bList);
229
231
245 vtkSetClampMacro(MaxNumberOfBuckets, vtkIdType, 1000, VTK_ID_MAX);
248
256 bool GetLargeIds() { return this->LargeIds; }
257
259
262 void GetBounds(double* bounds) override
263 {
264 bounds[0] = this->Bounds[0];
265 bounds[1] = this->Bounds[1];
266 bounds[2] = this->Bounds[2];
267 bounds[3] = this->Bounds[3];
268 }
269
270
272
276 virtual double* GetSpacing() { return this->H; }
277 virtual void GetSpacing(double spacing[3])
278 {
279 spacing[0] = this->H[0];
280 spacing[1] = this->H[1];
281 spacing[2] = 0.0;
282 }
283
284
286
291 void GetBucketIndices(const double* x, int ij[2]) const;
292 vtkIdType GetBucketIndex(const double* x) const;
294
296
302 VTK_DEPRECATED_IN_9_7_0("Use UseExistingSearchStructureOn instead.")
303 void StaticOn() { this->Static = true; }
304 VTK_DEPRECATED_IN_9_7_0("Use UseExistingSearchStructureOff instead.")
305 void StaticOff() { this->Static = false; }
306 VTK_DEPRECATED_IN_9_7_0("Use GetUseExistingSearchStructure instead.")
307 vtkGetMacro(Static, vtkTypeBool);
309
313 vtkBucketList2D* GetBuckets() { return this->Buckets; }
314
320 void GenerateRepresentation(int level, vtkPolyData* pd) override;
321
322protected:
325
326 void BuildLocatorInternal() override;
327
328 int NumberOfPointsPerBucket; // Used with AutomaticOn to control subdivide
329 int Divisions[2]; // Number of sub-divisions in x-y directions
330 double H[2]; // Width of each bucket in x-y directions
331 vtkBucketList2D* Buckets; // Lists of point ids in each bucket
332 vtkIdType MaxNumberOfBuckets; // Maximum number of buckets in locator
333 bool LargeIds; // indicate whether integer ids are small or large
334 vtkTypeBool Static; // Control whether to repeatedly check modified time
335
336private:
338 void operator=(const vtkStaticPointLocator2D&) = delete;
339};
340
341VTK_ABI_NAMESPACE_END
342#endif
virtual void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result)=0
Find all points within a specified radius R of position x.
virtual vtkIdType FindClosestPoint(const double x[3])=0
Given a position x, return the id of the point closest to it.
virtual double * GetBounds()
Provide an accessor to the bounds.
virtual void FindClosestNPoints(int N, const double x[3], vtkIdList *result)=0
Find the closest N points to a position.
dynamic, self-adjusting array of double
list of point or cell ids
Definition vtkIdList.h:135
a simple class to control print indentation
Definition vtkIndent.h:108
concrete dataset represents vertices, lines, polygons, and triangle strips
vtkIdType FindClosestPoint(const double x[3]) override
Given a position x, return the id of the point closest to it.
void BuildLocator() override
See vtkLocator and vtkAbstractPointLocator interface documentation.
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 within that radius...
void PrintSelf(ostream &os, vtkIndent indent) override
Standard type and print methods.
void FindClosestNPoints(int N, const double x[3], vtkIdList *result) override
Find the closest N points to a position.
double FindCloseNBoundedPoints(int N, const double x[3], vtkIdList *result)
Special method for 2D operations (e.g., vtkVoronoi2D).
~vtkStaticPointLocator2D() override
bool GetLargeIds()
Inform the user as to whether large ids are being used.
void BuildLocatorInternal() override
This function is not pure virtual to maintain backwards compatibility.
void StaticOn()
Turn on/off flag to control whether the locator checks modified time after it is built.
void GetBucketIndices(const double *x, int ij[2]) const
Given a point x[3], return the locator index (i,j) which contains the point.
double FindNPointsInAnnulus(int N, const double x[3], vtkDist2TupleArray &results, double minDist2=(-0.1), bool sort=true, vtkDoubleArray *petals=nullptr)
Find approximately N close points which are strictly greater than >minDist2 away from the query point...
virtual vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double inputDataLength, double &dist2)
Given a position x and a radius r, return the id of the point closest to the point within that radius...
vtkIdType GetBucketIndex(const double *x) const
Given a point x[3], return the locator index (i,j) which contains the point.
int IntersectWithLine(double a0[3], double a1[3], double tol, double &t, double lineX[3], double ptX[3], vtkIdType &ptId)
Intersect the points contained in the locator with the line defined by (a0,a1).
void Initialize() override
See vtkLocator and vtkAbstractPointLocator interface documentation.
vtkBucketList2D * GetBuckets()
This method is useful for accessing the raw binned data.
void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result) override
Find all points within a specified radius R of position x.
void GetBounds(double *bounds) override
Provide an accessor to the bounds.
void GenerateRepresentation(int level, vtkPolyData *pd) override
Populate a polydata with the faces of the bins that potentially contain cells.
void GetBucketIds(vtkIdType bNum, vtkIdList *bList)
Given a bucket number bNum between 0 <= bNum < this->GetNumberOfBuckets(), return a list of point ids...
virtual double * GetSpacing()
Provide an accessor to the bucket spacing.
static vtkStaticPointLocator2D * New()
Construct with automatic computation of divisions, averaging 5 points per bucket.
void StaticOff()
Turn on/off flag to control whether the locator checks modified time after it is built.
void ForceBuildLocator() override
See vtkLocator and vtkAbstractPointLocator interface documentation.
void FreeSearchStructure() override
See vtkLocator and vtkAbstractPointLocator interface documentation.
void MergePoints(double tol, vtkIdType *mergeMap)
Merge points in the locator given a tolerance.
virtual void GetSpacing(double spacing[3])
Provide an accessor to the bucket spacing.
vtkIdType GetNumberOfPointsInBucket(vtkIdType bNum)
Given a bucket number bNum between 0 <= bNum < this->GetNumberOfBuckets(), return the number of point...
Private declarations for 2D binned spatial locator.
Represent an array of vtkDist2Tuples.
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_DEPRECATED_IN_9_7_0(reason)
int vtkIdType
Definition vtkType.h:363
#define VTK_ID_MAX
Definition vtkType.h:367
#define VTK_INT_MAX
Definition vtkType.h:192