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 =========================================================================*/
59 #ifndef vtkStaticPointLocator2D_h
60 #define vtkStaticPointLocator2D_h
61 
62 #include "vtkCommonDataModelModule.h" // For export macro
64 
65 class vtkIdList;
66 struct vtkBucketList2D;
67 
68 
69 class VTKCOMMONDATAMODEL_EXPORT vtkStaticPointLocator2D : public vtkAbstractPointLocator
70 {
71 public:
76  static vtkStaticPointLocator2D *New();
77 
79 
83  void PrintSelf(ostream& os, vtkIndent indent) override;
85 
87 
92  vtkSetClampMacro(NumberOfPointsPerBucket,int,1,VTK_INT_MAX);
93  vtkGetMacro(NumberOfPointsPerBucket,int);
95 
97 
103  vtkSetVector2Macro(Divisions,int);
104  vtkGetVectorMacro(Divisions,int,2);
106 
107  // Re-use any superclass signatures that we don't override.
112 
120  vtkIdType FindClosestPoint(const double x[3]) override;
121 
123 
132  double radius, const double x[3], double& dist2) override;
133  virtual vtkIdType FindClosestPointWithinRadius(double radius, const double x[3],
134  double inputDataLength,
135  double& dist2);
137 
146  void FindClosestNPoints(int N, const double x[3], vtkIdList *result) override;
147 
154  void FindPointsWithinRadius(double R, const double x[3],
155  vtkIdList *result) override;
156 
166  int IntersectWithLine(double a0[3], double a1[3], double tol, double& t,
167  double lineX[3], double ptX[3], vtkIdType &ptId);
168 
169 
171 
177  double FindCloseNBoundedPoints(int N, const double x[3], vtkIdList *result);
179 
187  void MergePoints(double tol, vtkIdType *mergeMap);
188 
190 
194  void Initialize() override;
195  void FreeSearchStructure() override;
196  void BuildLocator() override;
198 
205  vtkIdType GetNumberOfPointsInBucket(vtkIdType bNum);
206 
212  void GetBucketIds(vtkIdType bNum, vtkIdList *bList);
213 
215 
229  vtkSetClampMacro(MaxNumberOfBuckets,vtkIdType,1000,VTK_ID_MAX);
230  vtkGetMacro(MaxNumberOfBuckets,vtkIdType);
232 
240  bool GetLargeIds() {return this->LargeIds;}
241 
243 
246  void GetBounds(double *bounds) override
247  {
248  bounds[0] = this->Bounds[0];
249  bounds[1] = this->Bounds[1];
250  bounds[2] = this->Bounds[2];
251  bounds[3] = this->Bounds[3];
252  }
254 
256 
260  virtual double *GetSpacing() { return this->H; }
261  virtual void GetSpacing(double spacing[3])
262  { spacing[0] = this->H[0]; spacing[1] = this->H[1]; spacing[2] = 0.0; }
264 
266 
271  void GetBucketIndices(const double *x, int ij[2]) const;
272  vtkIdType GetBucketIndex(const double *x) const;
274 
280  void GenerateRepresentation(int level, vtkPolyData *pd) override;
281 
282 protected:
284  ~vtkStaticPointLocator2D() override;
285 
286  int NumberOfPointsPerBucket; // Used with AutomaticOn to control subdivide
287  int Divisions[2]; // Number of sub-divisions in x-y directions
288  double H[2]; // Width of each bucket in x-y directions
289  vtkBucketList2D *Buckets; // Lists of point ids in each bucket
290  vtkIdType MaxNumberOfBuckets; // Maximum number of buckets in locator
291  bool LargeIds; //indicate whether integer ids are small or large
292 
293 private:
295  void operator=(const vtkStaticPointLocator2D&) = delete;
296 
297 };
298 
299 #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:85
virtual void FreeSearchStructure()=0
Free the memory required for the spatial data structure.
a simple class to control print indentation
Definition: vtkIndent.h:39
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:36
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