132 #ifndef vtkModifiedBSPTree_h
133 #define vtkModifiedBSPTree_h
136 #include "vtkFiltersFlowPathsModule.h"
139 VTK_ABI_NAMESPACE_BEGIN
140 class Sorted_cell_extents_Lists;
172 int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double& t,
double x[3],
196 const double p1[3],
const double p2[3],
double tolerance,
vtkIdList* cellsIds)
override
198 this->Superclass::FindCellsAlongLine(p1, p2, tolerance, cellsIds);
209 double pcoords[3],
double* weights)
override;
261 #ifndef DOXYGEN_SHOULD_SKIP_THIS
269 mChild[0] = mChild[1] = mChild[2] =
nullptr;
270 for (
int i = 0; i < 6; i++)
271 sorted_cell_lists[i] =
nullptr;
272 for (
int i = 0; i < 3; i++)
281 for (
int i = 0; i < 3; i++)
283 for (
int i = 0; i < 6; i++)
284 delete[] sorted_cell_lists[i];
287 void setMin(
double minx,
double miny,
double minz)
289 this->Bounds[0] = minx;
290 this->Bounds[2] = miny;
291 this->Bounds[4] = minz;
294 void setMax(
double maxx,
double maxy,
double maxz)
296 this->Bounds[1] = maxx;
297 this->Bounds[3] = maxy;
298 this->Bounds[5] = maxz;
301 bool Inside(
double point[3])
const;
317 void Classify(
const double origin[3],
const double dir[3],
double& rDist, BSPNode*& Near,
318 BSPNode*& Mid, BSPNode*& Far)
const;
322 static int VTKFILTERSFLOWPATHS_EXPORT getDominantAxis(
const double dir[3]);
327 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