VTK  9.0.1
vtkStaticPointLocator.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkStaticPointLocator.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
50 #ifndef vtkStaticPointLocator_h
51 #define vtkStaticPointLocator_h
52 
54 #include "vtkCommonDataModelModule.h" // For export macro
55 
56 class vtkIdList;
57 struct vtkBucketList;
58 
59 class VTKCOMMONDATAMODEL_EXPORT vtkStaticPointLocator : public vtkAbstractPointLocator
60 {
61 public:
67 
69 
73  void PrintSelf(ostream& os, vtkIndent indent) override;
75 
77 
82  vtkSetClampMacro(NumberOfPointsPerBucket, int, 1, VTK_INT_MAX);
83  vtkGetMacro(NumberOfPointsPerBucket, int);
85 
87 
93  vtkSetVector3Macro(Divisions, int);
94  vtkGetVectorMacro(Divisions, int, 3);
96 
97  // Re-use any superclass signatures that we don't override.
102 
109  vtkIdType FindClosestPoint(const double x[3]) override;
110 
112 
120  vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double& dist2) override;
122  double radius, const double x[3], double inputDataLength, double& dist2);
124 
133  void FindClosestNPoints(int N, const double x[3], vtkIdList* result) override;
134 
141  void FindPointsWithinRadius(double R, const double x[3], vtkIdList* result) override;
142 
152  int IntersectWithLine(double a0[3], double a1[3], double tol, double& t, double lineX[3],
153  double ptX[3], vtkIdType& ptId);
154 
162  void MergePoints(double tol, vtkIdType* mergeMap);
163 
165 
169  void Initialize() override;
170  void FreeSearchStructure() override;
171  void BuildLocator() override;
172  void BuildLocator(const double* bounds);
174 
180  void GenerateRepresentation(int level, vtkPolyData* pd) override;
181 
187 
193  void GetBucketIds(vtkIdType bNum, vtkIdList* bList);
194 
196 
210  vtkSetClampMacro(MaxNumberOfBuckets, vtkIdType, 1000, VTK_ID_MAX);
211  vtkGetMacro(MaxNumberOfBuckets, vtkIdType);
213 
221  bool GetLargeIds() { return this->LargeIds; }
222 
224 
228  virtual double* GetSpacing() { return this->H; }
229  virtual void GetSpacing(double spacing[3])
230  {
231  spacing[0] = this->H[0];
232  spacing[1] = this->H[1];
233  spacing[2] = this->H[2];
234  }
236 
237 protected:
240 
241  int NumberOfPointsPerBucket; // Used with AutomaticOn to control subdivide
242  int Divisions[3]; // Number of sub-divisions in x-y-z directions
243  double H[3]; // Width of each bucket in x-y-z directions
244  vtkBucketList* Buckets; // Lists of point ids in each bucket
245  vtkIdType MaxNumberOfBuckets; // Maximum number of buckets in locator
246  bool LargeIds; // indicate whether integer ids are small or large
247 
248 private:
250  void operator=(const vtkStaticPointLocator&) = delete;
251 };
252 
253 #endif
abstract class to quickly locate points in 3-space
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.
list of point or cell ids
Definition: vtkIdList.h:31
a simple class to control print indentation
Definition: vtkIndent.h:34
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
quickly locate points in 3-space
void MergePoints(double tol, vtkIdType *mergeMap)
Merge points in the locator given a tolerance.
vtkIdType GetNumberOfPointsInBucket(vtkIdType bNum)
Given a bucket number bNum between 0 <= bNum < this->GetNumberOfBuckets(), return the number of point...
void Initialize() 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 in that radius.
static vtkStaticPointLocator * New()
Construct with automatic computation of divisions, averaging 5 points per bucket.
void FindClosestNPoints(int N, const double x[3], vtkIdList *result) override
Find the closest N points to a position.
bool GetLargeIds()
Inform the user as to whether large ids are being used.
~vtkStaticPointLocator() override
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 FreeSearchStructure() override
Free the memory required for the spatial data structure.
virtual vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double inputDataLength, double &dist2)
void BuildLocator(const double *bounds)
void GetBucketIds(vtkIdType bNum, vtkIdList *bList)
Given a bucket number bNum between 0 <= bNum < this->GetNumberOfBuckets(), return a list of point ids...
void GenerateRepresentation(int level, vtkPolyData *pd) override
Populate a polydata with the faces of the bins that potentially contain cells.
void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result) override
Find all points within a specified radius R of position x.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkIdType FindClosestPoint(const double x[3]) override
Given a position x, return the id of the point closest to it.
virtual double * GetSpacing()
Provide an accessor to the bucket spacing.
void BuildLocator() override
Build the locator from the input dataset.
virtual void GetSpacing(double spacing[3])
@ level
Definition: vtkX3D.h:401
@ spacing
Definition: vtkX3D.h:487
@ radius
Definition: vtkX3D.h:258
int vtkIdType
Definition: vtkType.h:338
#define VTK_ID_MAX
Definition: vtkType.h:342
#define VTK_INT_MAX
Definition: vtkType.h:155