Go to the documentation of this file.
44 #ifndef vtkCellLocator_h
45 #define vtkCellLocator_h
47 #include "vtkCommonDataModelModule.h"
50 class vtkNeighborCells;
85 double& t,
double x[3],
double pcoords[3],
101 const double x[3],
double closestPoint[3],
103 int &subId,
double& dist2)
override;
123 double x[3],
double radius,
double closestPoint[3],
125 int &subId,
double& dist2,
int &inside)
override;
145 double pcoords[3],
double *weights)
override;
162 double tolerance,
vtkIdList *cells)
override;
182 int prevMinLevel[3],
int prevMaxLevel[3]);
209 double OctantBounds[6];
212 if ( this->OctantBounds[0]-tol <= x[0] && x[0] <= this->OctantBounds[1]+tol &&
213 this->OctantBounds[2]-tol <= x[1] && x[1] <= this->OctantBounds[3]+tol &&
214 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
double Distance2ToBounds(const double x[3], double bounds[6])
int GenerateIndex(int offset, int numDivs, int i, int j, int k, vtkIdType &idx)
octree-based spatial search object to quickly locate cells
void ClearCellHasBeenVisited(vtkIdType id)
virtual int GetNumberOfBuckets(void)
Return number of buckets available.
virtual void BuildLocatorIfNeeded()
virtual void BuildLocatorInternal()
void BuildLocator() override
Build the locator from the input dataset.
virtual vtkIdType FindCell(double x[3])
Returns the Id of the cell containing the point, returns -1 if no cell found.
void FreeSearchStructure() override
Satisfy vtkLocator abstract interface.
void ComputeOctantBounds(int i, int j, int k)
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.
vtkIdType FindClosestPointWithinRadius(double x[3], double radius, double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2, int &inside) override
Return the closest point within a specified radius and the cell which is closest to the point x.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void GetOverlappingBuckets(const double x[3], int ijk[3], double dist, int prevMinLevel[3], int prevMaxLevel[3])
void FindClosestPoint(const double x[3], double closestPoint[3], vtkGenericCell *cell, vtkIdType &cellId, int &subId, double &dist2) override
Return the closest point and the cell which is closest to the point x.
virtual void SetNumberOfCellsPerNode(int)
Specify the preferred/maximum number of cells in each node/bucket.
int IntersectWithLine(const double a0[3], const double a1[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId, vtkGenericCell *cell) override
Return intersection point (if any) AND the cell which was intersected by the finite line.
vtkIdType FindCell(double x[3], double tol2, vtkGenericCell *GenCell, double pcoords[3], double *weights) override
Find the cell containing a given point.
virtual vtkIdList * GetCells(int bucket)
Get the cells in a particular bucket.
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
void GetBucketNeighbors(int ijk[3], int ndivs, int level)
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.
virtual void ForceBuildLocator()
void GetChildren(int idx, int level, int children[8])
void FindCellsWithinBounds(double *bbox, vtkIdList *cells) override
Return a list of unique cell ids inside of a given bounding box.
void GenerateRepresentation(int level, vtkPolyData *pd) override
Method to build a representation at a particular level.
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.
~vtkCellLocator() override
void GenerateFace(int face, int numDivs, int i, int j, int k, vtkPoints *pts, vtkCellArray *polys)
unsigned char QueryNumber
concrete dataset represents vertices, lines, polygons, and triangle strips
void MarkParents(void *, int, int, int, int, int)
provides thread-safe access to cells
void FindCellsAlongLine(const double p1[3], const double p2[3], double tolerance, vtkIdList *cells) override
Given a finite line defined by the two points (p1,p2), return the list of unique cell ids in the buck...
static vtkCellLocator * New()
Construct with automatic computation of divisions, averaging 25 cells per bucket.
void ClearCellHasBeenVisited()
double Distance2ToBucket(const double x[3], int nei[3])