Go to the documentation of this file.
40 #ifndef vtkCellTreeLocator_h
41 #define vtkCellTreeLocator_h
43 #include "vtkFiltersGeneralModule.h"
47 class vtkCellPointTraversal;
71 double* weights )
override;
78 double& t,
double x[3],
double pcoords[3],
100 int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double& t,
double x[3],
101 double pcoords[3],
int &subId)
override
103 return this->Superclass::IntersectWithLine(p1, p2, tol, t, x, pcoords, subId);
112 int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double &t,
double x[3],
113 double pcoords[3],
int &subId,
vtkIdType &cellId)
override;
119 const double p1[3],
const double p2[3],
122 return this->Superclass::IntersectWithLine(p1, p2,
points, cellIds);
129 {
return this->Superclass::FindCell(x); }
153 friend class vtkCellPointTraversal;
155 friend class vtkCellTreeBuilder;
185 friend class vtkCellPointTraversal;
186 friend class vtkCellTreeBuilder;
189 void MakeNode(
unsigned int left,
unsigned int d,
float b[2] );
214 const double origin[3],
246 friend class vtkCellPointTraversal;
248 friend class vtkCellTreeBuilder;
represent and manipulate 3D points
void FindCellsWithinBounds(double *bbox, vtkIdList *cells) override
Return a list of unique cell ids inside of a given bounding box.
const float & GetRightMinValue() const
Internal classes made public to allow subclasses to create customized some traversal algorithms.
std::vector< vtkCellTreeNode > Nodes
virtual void BuildLocatorInternal()
vtkIdType FindCell(double x[3]) override
reimplemented from vtkAbstractCellLocator to support bad compilers
int IntersectWithLine(const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId) override
Return intersection point (if any) AND the cell which was intersected by the finite line.
This class is the basic building block of the cell tree.
void SetChildren(unsigned int left)
~vtkCellTreeLocator() override
unsigned int GetLeftChildIndex() const
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkIdType FindCell(double pos[3], double vtkNotUsed, vtkGenericCell *cell, double pcoords[3], double *weights) override
Test a point to find if it is inside a cell.
void MakeLeaf(unsigned int start, unsigned int size)
int IntersectWithLine(const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId) override
reimplemented from vtkAbstractCellLocator to support bad compilers
void GenerateRepresentation(int level, vtkPolyData *pd) override
Method to build a representation at a particular level.
unsigned int Start() const
a simple class to control print indentation
object to represent cell connectivity
void Classify(const double origin[3], const double dir[3], double &rDist, vtkCellTreeNode *&near, vtkCellTreeNode *&mid, vtkCellTreeNode *&far, int &mustCheck)
list of point or cell ids
bool RayMinMaxT(const double origin[3], const double dir[3], double &rTmin, double &rTmax)
virtual void BuildLocatorIfNeeded()
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.
an abstract base class for locators which find cells
const float & GetLeftMaxValue() const
virtual int IntersectCellInternal(vtkIdType cell_ID, const double p1[3], const double p2[3], const double tol, double &t, double ipt[3], double pcoords[3], int &subId)
int IntersectWithLine(const double p1[3], const double p2[3], vtkPoints *points, vtkIdList *cellIds) override
reimplemented from vtkAbstractCellLocator to support bad compilers
unsigned int GetDimension() const
unsigned int GetRightChildIndex() const
dynamic, self-adjusting array of vtkIdType
void MakeNode(unsigned int left, unsigned int d, float b[2])
static vtkCellTreeLocator * New()
Constructor sets the maximum number of cells in a leaf to 8 and number of buckets to 5.
concrete dataset represents vertices, lines, polygons, and triangle strips
provides thread-safe access to cells
std::vector< unsigned int > Leaves
virtual void ForceBuildLocator()
bool RayMinMaxT(const double bounds[6], const double origin[3], const double dir[3], double &rTmin, double &rTmax)
void FreeSearchStructure() override
Satisfy vtkLocator abstract interface.
This class implements the data structures, construction algorithms for fast cell location presented i...
int getDominantAxis(const double dir[3])
void BuildLocator() override
Build the locator from the input dataset.
unsigned int Size() const