VTK
vtkStaticPointLocator2D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkStaticPointLocator2D.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 =========================================================================*/
56 #ifndef vtkStaticPointLocator2D_h
57 #define vtkStaticPointLocator2D_h
58 
59 #include "vtkCommonDataModelModule.h" // For export macro
61 
62 class vtkIdList;
63 struct vtkBucketList2D;
64 
65 
66 class VTKCOMMONDATAMODEL_EXPORT vtkStaticPointLocator2D : public vtkAbstractPointLocator
67 {
68 public:
73  static vtkStaticPointLocator2D *New();
74 
76 
80  void PrintSelf(ostream& os, vtkIndent indent) override;
82 
84 
89  vtkSetClampMacro(NumberOfPointsPerBucket,int,1,VTK_INT_MAX);
90  vtkGetMacro(NumberOfPointsPerBucket,int);
92 
94 
100  vtkSetVector2Macro(Divisions,int);
101  vtkGetVectorMacro(Divisions,int,2);
103 
104  // Re-use any superclass signatures that we don't override.
109 
117  vtkIdType FindClosestPoint(const double x[3]) override;
118 
120 
129  double radius, const double x[3], double& dist2) override;
130  virtual vtkIdType FindClosestPointWithinRadius(double radius, const double x[3],
131  double inputDataLength,
132  double& dist2);
134 
143  void FindClosestNPoints(int N, const double x[3], vtkIdList *result) override;
144 
151  void FindPointsWithinRadius(double R, const double x[3],
152  vtkIdList *result) override;
153 
163  int IntersectWithLine(double a0[3], double a1[3], double tol, double& t,
164  double lineX[3], double ptX[3], vtkIdType &ptId);
165 
166 
168 
174  double FindCloseNBoundedPoints(int N, const double x[3], vtkIdList *result);
176 
184  void MergePoints(double tol, vtkIdType *mergeMap);
185 
187 
191  void Initialize() override;
192  void FreeSearchStructure() override;
193  void BuildLocator() override;
195 
202  vtkIdType GetNumberOfPointsInBucket(vtkIdType bNum);
203 
209  void GetBucketIds(vtkIdType bNum, vtkIdList *bList);
210 
212 
226  vtkSetClampMacro(MaxNumberOfBuckets,vtkIdType,1000,VTK_ID_MAX);
227  vtkGetMacro(MaxNumberOfBuckets,vtkIdType);
229 
237  bool GetLargeIds() {return this->LargeIds;}
238 
240 
243  void GetBounds(double *bounds) override
244  {
245  bounds[0] = this->Bounds[0];
246  bounds[1] = this->Bounds[1];
247  bounds[2] = this->Bounds[2];
248  bounds[3] = this->Bounds[3];
249  }
251 
253 
257  virtual double *GetSpacing() { return this->H; }
258  virtual void GetSpacing(double spacing[3])
259  { spacing[0] = this->H[0]; spacing[1] = this->H[1]; spacing[2] = 0.0; }
261 
263 
268  void GetBucketIndices(const double *x, int ij[2]) const;
269  vtkIdType GetBucketIndex(const double *x) const;
271 
277  void GenerateRepresentation(int level, vtkPolyData *pd) override;
278 
279 protected:
281  ~vtkStaticPointLocator2D() override;
282 
283  int NumberOfPointsPerBucket; // Used with AutomaticOn to control subdivide
284  int Divisions[2]; // Number of sub-divisions in x-y directions
285  double H[2]; // Width of each bucket in x-y directions
286  vtkBucketList2D *Buckets; // Lists of point ids in each bucket
287  vtkIdType MaxNumberOfBuckets; // Maximum number of buckets in locator
288  bool LargeIds; //indicate whether integer ids are small or large
289 
290 private:
292  void operator=(const vtkStaticPointLocator2D&) = delete;
293 
294 };
295 
296 #endif
virtual void BuildLocator()=0
Build the locator from the input dataset.
virtual void GetSpacing(double spacing[3])
Provide an accessor to the bucket spacing.
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.
#define VTK_INT_MAX
Definition: vtkType.h:159
virtual double * GetBounds()
Provide an accessor to the bounds.
virtual double * GetSpacing()
Provide an accessor to the bucket spacing.
int vtkIdType
Definition: vtkType.h:347
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:79
virtual void FreeSearchStructure()=0
Free the memory required for the spatial data structure.
a simple class to control print indentation
Definition: vtkIndent.h:33
void PrintSelf(ostream &os, vtkIndent indent) override
Standard type and print methods.
abstract class to quickly locate points in 3-space
list of point or cell ids
Definition: vtkIdList.h:30
virtual void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result)=0
Find all points within a specified radius R of position x.
void GetBounds(double *bounds) override
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.
#define VTK_ID_MAX
Definition: vtkType.h:351
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.
bool GetLargeIds()
Inform the user as to whether large ids are being used.
virtual void GenerateRepresentation(int level, vtkPolyData *pd)=0
Method to build a representation at a particular level.
quickly locate points in 2-space