187#ifndef vtkModifiedBSPTree_h
188#define vtkModifiedBSPTree_h
191#include "vtkFiltersFlowPathsModule.h"
196VTK_ABI_NAMESPACE_BEGIN
197class Sorted_cell_extents_Lists;
230 int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double& t,
double x[3],
253 double pcoords[3],
double* weights)
override;
293 std::shared_ptr<std::vector<vtkIdType>>
Leaves;
302 std::vector<uint8_t>& cellPart);
313#ifndef DOXYGEN_SHOULD_SKIP_THIS
321 mChild[0] = mChild[1] = mChild[2] =
nullptr;
322 for (
int i = 0; i < 3; i++)
331 for (
int i = 0; i < 3; i++)
337 void setMin(
double minx,
double miny,
double minz)
339 this->Bounds[0] = minx;
340 this->Bounds[2] = miny;
341 this->Bounds[4] = minz;
344 void setMax(
double maxx,
double maxy,
double maxz)
346 this->Bounds[1] = maxx;
347 this->Bounds[3] = maxy;
348 this->Bounds[5] = maxz;
351 bool Inside(
double point[3])
const;
373 void Classify(
const double origin[3],
const double dir[3],
double& rDist, BSPNode*& Near,
374 BSPNode*& Mid, BSPNode*& Far)
const;
375 friend class vtkModifiedBSPTree;
378 static int VTKFILTERSFLOWPATHS_EXPORT getDominantAxis(
const double dir[3]);
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void ShallowCopy(vtkAbstractCellLocator *)
Shallow copy of a vtkAbstractCellLocator.
vtkIdType FindCell(double x[3])
Returns the Id of the cell containing the point, returns -1 if no cell found.
void FindCellsAlongLine(const double p1[3], const double p2[3], double tol, vtkIdList *cells)
Take the passed line segment and intersect it with the data set.
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.
vtkAbstractCellLocator()
Find the cell containing a given point.
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
virtual void BuildLocatorInternal()
This function is not pure virtual to maintain backwards compatibility.
virtual void ForceBuildLocator()
Build the locator from the input dataset (even if UseExistingSearchStructure is on).
virtual void GenerateRepresentation(int level, vtkPolyData *pd)=0
Method to build a representation at a particular level.
virtual void BuildLocator()=0
Build the locator from the input dataset.
virtual void FreeSearchStructure()=0
Free the memory required for the spatial data structure.
std::shared_ptr< BSPNode > mRoot
vtkIdListCollection * GetLeafNodeCellInformation()
After subdivision has completed, one may wish to query the tree to find which cells are in which leaf...
std::shared_ptr< std::vector< vtkIdType > > Leaves
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, std::vector< uint8_t > &cellPart)
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
represent and manipulate 3D points
concrete dataset represents vertices, lines, polygons, and triangle strips