141 #ifndef vtkModifiedBSPTree_h
142 #define vtkModifiedBSPTree_h
145 #include "vtkFiltersFlowPathsModule.h"
148 VTK_ABI_NAMESPACE_BEGIN
149 class Sorted_cell_extents_Lists;
181 int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double& t,
double x[3],
205 const double p1[3],
const double p2[3],
double tolerance,
vtkIdList* cellsIds)
override
207 this->Superclass::FindCellsAlongLine(p1, p2, tolerance, cellsIds);
218 double pcoords[3],
double* weights)
override;
270 #ifndef DOXYGEN_SHOULD_SKIP_THIS
278 mChild[0] = mChild[1] = mChild[2] =
nullptr;
279 for (
int i = 0; i < 6; i++)
280 sorted_cell_lists[i] =
nullptr;
281 for (
int i = 0; i < 3; i++)
290 for (
int i = 0; i < 3; i++)
292 for (
int i = 0; i < 6; i++)
293 delete[] sorted_cell_lists[i];
296 void setMin(
double minx,
double miny,
double minz)
298 this->Bounds[0] = minx;
299 this->Bounds[2] = miny;
300 this->Bounds[4] = minz;
303 void setMax(
double maxx,
double maxy,
double maxz)
305 this->Bounds[1] = maxx;
306 this->Bounds[3] = maxy;
307 this->Bounds[5] = maxz;
310 bool Inside(
double point[3])
const;
326 void Classify(
const double origin[3],
const double dir[3],
double& rDist, BSPNode*& Near,
327 BSPNode*& Mid, BSPNode*& Far)
const;
331 static int VTKFILTERSFLOWPATHS_EXPORT getDominantAxis(
const double dir[3]);
336 VTK_ABI_NAMESPACE_END
an abstract base class for locators which find cells
virtual vtkIdType FindCell(double x[3])
Returns the Id of the cell containing the point, returns -1 if no cell found.
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.
abstract class to specify dataset behavior
provides thread-safe access to cells
maintain an ordered list of IdList objects
list of point or cell ids
a simple class to control print indentation
Generate axis aligned BBox tree for ray-casting and other Locator based searches.
int IntersectWithLine(const double p1[3], const double p2[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.
void FindCellsAlongLine(const double p1[3], const double p2[3], double tolerance, vtkIdList *cellsIds) override
Take the passed line segment and intersect it with the data set.
void ShallowCopy(vtkAbstractCellLocator *locator) override
Shallow copy of a vtkModifiedBSPTree.
std::shared_ptr< BSPNode > mRoot
~vtkModifiedBSPTree() override
void GenerateRepresentation(int level, vtkPolyData *pd) override
Satisfy vtkLocator abstract interface.
int IntersectWithLine(const double p1[3], const double p2[3], double tol, vtkPoints *points, vtkIdList *cellIds, vtkGenericCell *cell) override
Take the passed line segment and intersect it with the data set.
vtkIdListCollection * GetLeafNodeCellInformation()
After subdivision has completed, one may wish to query the tree to find which cells are in which leaf...
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods to print and obtain type-related information.
vtkIdType FindCell(double x[3], double vtkNotUsed(tol2), vtkGenericCell *GenCell, int &subId, double pcoords[3], double *weights) override
Find the cell containing a given point.
void BuildLocatorInternal() override
This function is not pure virtual to maintain backwards compatibility.
void ForceBuildLocator() override
Satisfy vtkLocator abstract interface.
virtual void GenerateRepresentationLeafs(vtkPolyData *pd)
Generate BBox representation of all leaf nodes.
void Subdivide(BSPNode *node, Sorted_cell_extents_Lists *lists, vtkDataSet *dataSet, vtkIdType nCells, int depth, int maxlevel, vtkIdType maxCells, int &MaxDepth)
static vtkModifiedBSPTree * New()
Construct with maximum 32 cells per node.
void FreeSearchStructure() override
Satisfy vtkLocator abstract interface.
void BuildLocator() override
Satisfy vtkLocator abstract interface.
represent and manipulate 3D points
concrete dataset represents vertices, lines, polygons, and triangle strips