40#ifndef vtkCellTreeLocator_h
41#define vtkCellTreeLocator_h
43#include "vtkFiltersGeneralModule.h"
47class vtkCellPointTraversal;
71 double* weights ) VTK_OVERRIDE;
78 double& t,
double x[3],
double pcoords[3],
101 double p1[3],
double p2[3],
double tol,
double& t,
double x[3],
102 double pcoords[3],
int &subId) VTK_OVERRIDE
104 return this->Superclass::IntersectWithLine(p1, p2, tol, t, x, pcoords, subId);
114 double p1[3],
double p2[3],
double tol,
double &t,
double x[3],
115 double pcoords[3],
int &subId,
vtkIdType &cellId) VTK_OVERRIDE;
121 const double p1[3],
const double p2[3],
124 return this->Superclass::IntersectWithLine(p1, p2,
points, cellIds);
131 {
return this->Superclass::FindCell(x); }
139 virtual
void BuildLocatorInternal();
140 virtual
void BuildLocatorIfNeeded();
141 virtual
void ForceBuildLocator();
142 void BuildLocator() VTK_OVERRIDE;
155 friend class vtkCellPointTraversal;
157 friend class vtkCellTreeBuilder;
187 friend class vtkCellPointTraversal;
188 friend class vtkCellTreeBuilder;
191 void MakeNode(
unsigned int left,
unsigned int d,
float b[2] );
210 bool RayMinMaxT(const
double origin[3],
215 bool RayMinMaxT(const
double bounds[6],
216 const
double origin[3],
221 int getDominantAxis(const
double dir[3]);
224 void Classify(const
double origin[3],
235 virtual
int IntersectCellInternal(
vtkIdType cell_ID, const
double p1[3],
248 friend class vtkCellPointTraversal;
250 friend class vtkCellTreeBuilder;
an abstract base class for locators which find cells
object to represent cell connectivity
This class is the basic building block of the cell tree.
void MakeLeaf(unsigned int start, unsigned int size)
unsigned int GetRightChildIndex() const
unsigned int Start() const
unsigned int GetDimension() const
const float & GetRightMinValue() const
void SetChildren(unsigned int left)
void MakeNode(unsigned int left, unsigned int d, float b[2])
const float & GetLeftMaxValue() const
unsigned int GetLeftChildIndex() const
unsigned int Size() const
Internal classes made public to allow subclasses to create customized some traversal algorithms.
std::vector< unsigned int > Leaves
std::vector< vtkCellTreeNode > Nodes
This class implements the data structures, construction algorithms for fast cell location presented i...
void FindCellsWithinBounds(double *bbox, vtkIdList *cells) override
Return a list of unique cell ids inside of a given bounding box.
int IntersectWithLine(const double p1[3], const double p2[3], vtkPoints *points, vtkIdList *cellIds) override
reimplemented from vtkAbstractCellLocator to support bad compilers
int IntersectWithLine(double a0[3], 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 pos[3], double vtkNotUsed, vtkGenericCell *cell, double pcoords[3], double *weights) override
Test a point to find if it is inside a cell.
int IntersectWithLine(double p1[3], double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId) override
reimplemented from vtkAbstractCellLocator to support bad compilers
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkIdType FindCell(double x[3]) override
reimplemented from vtkAbstractCellLocator to support bad compilers
~vtkCellTreeLocator() override
int IntersectWithLine(double p1[3], 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.
void FreeSearchStructure() override
Satisfy vtkLocator abstract interface.
static vtkCellTreeLocator * New()
Constructor sets the maximum number of cells in a leaf to 8 and number of buckets to 5.
provides thread-safe access to cells
list of point or cell ids
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
represent and manipulate 3D points
concrete dataset represents vertices, lines, polygons, and triangle strips