Go to the documentation of this file.
38 #ifndef vtkCellLocator_h
39 #define vtkCellLocator_h
41 #include "vtkCommonDataModelModule.h"
44 class vtkNeighborCells;
79 double& t,
double x[3],
double pcoords[3],
95 const double x[3],
double closestPoint[3],
97 int &subId,
double& dist2)
override;
117 double x[3],
double radius,
double closestPoint[3],
119 int &subId,
double& dist2,
int &inside)
override;
130 virtual int GetNumberOfBuckets(
void);
139 double pcoords[3],
double *weights)
override;
156 double tolerance,
vtkIdList *cells)
override;
164 virtual void BuildLocatorIfNeeded();
165 virtual void ForceBuildLocator();
166 virtual void BuildLocatorInternal();
174 void GetBucketNeighbors(
int ijk[3],
int ndivs,
int level);
175 void GetOverlappingBuckets(
const double x[3],
int ijk[3],
double dist,
176 int prevMinLevel[3],
int prevMaxLevel[3]);
178 void ClearCellHasBeenVisited();
179 void ClearCellHasBeenVisited(
int id);
181 double Distance2ToBucket(
const double x[3],
int nei[3]);
182 double Distance2ToBounds(
const double x[3],
double bounds[6]);
191 void MarkParents(
void*,
int,
int,
int,
int,
int);
192 void GetChildren(
int idx,
int level,
int children[8]);
193 int GenerateIndex(
int offset,
int numDivs,
int i,
int j,
int k,
195 void GenerateFace(
int face,
int numDivs,
int i,
int j,
int k,
202 void ComputeOctantBounds(
int i,
int j,
int k);
203 double OctantBounds[6];
206 if ( this->OctantBounds[0]-tol <= x[0] && x[0] <= this->OctantBounds[1]+tol &&
207 this->OctantBounds[2]-tol <= x[1] && x[1] <= this->OctantBounds[3]+tol &&
208 this->OctantBounds[4]-tol <= x[2] && x[2] <= this->OctantBounds[5]+tol )
int IsInOctantBounds(const double x[3], double tol=0.0)
represent and manipulate 3D points
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
octree-based spatial search object to quickly locate cells
virtual void FindCellsAlongLine(const double p1[3], const double p2[3], double tolerance, vtkIdList *cells)
Given a finite line defined by the two points (p1,p2), return the list of unique cell ids in the buck...
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
virtual vtkIdType FindCell(double x[3])
Returns the Id of the cell containing the point, returns -1 if no cell found.
virtual vtkIdType FindClosestPointWithinRadius(double x[3], double radius, double closestPoint[3], vtkIdType &cellId, int &subId, double &dist2)
Return the closest point within a specified radius and the cell which is closest to the point x.
virtual void FindCellsWithinBounds(double *bbox, vtkIdList *cells)
Return a list of unique cell ids inside of a given bounding box.
virtual void SetNumberOfCellsPerNode(int)
Specify the preferred/maximum number of cells in each node/bucket.
virtual void GenerateRepresentation(int level, vtkPolyData *pd)=0
Method to build a representation at a particular level.
void SetNumberOfCellsPerBucket(int N)
Specify the average number of cells in each octant.
a simple class to control print indentation
object to represent cell connectivity
list of point or cell ids
unsigned char * CellHasBeenVisited
virtual void BuildLocator()=0
Build the locator from the input dataset.
an abstract base class for locators which find cells
int GetNumberOfCellsPerBucket()
virtual void FindClosestPoint(const double x[3], double closestPoint[3], vtkIdType &cellId, int &subId, double &dist2)
Return the closest point and the cell which is closest to the point x.
vtkNeighborCells * Buckets
virtual int IntersectWithLine(const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId)
Return intersection point (if any) of finite line with cells contained in cell locator.
unsigned char QueryNumber
concrete dataset represents vertices, lines, polygons, and triangle strips
provides thread-safe access to cells
virtual void FreeSearchStructure()=0
Free the memory required for the spatial data structure.