Go to the documentation of this file.
146 #ifndef vtkModifiedBSPTree_h
147 #define vtkModifiedBSPTree_h
149 #include "vtkFiltersFlowPathsModule.h"
153 class Sorted_cell_extents_Lists;
203 double p1[3],
double p2[3],
double tol,
double &t,
double x[3],
204 double pcoords[3],
int &subId,
vtkIdType &cellId);
211 double p1[3],
double p2[3],
double tol,
double &t,
double x[3],
223 const double p1[3],
const double p2[3],
const double tol,
231 double pcoords[3],
double *weights);
261 const double tol,
double &t,
double ipt[3],
double pcoords[3],
int &subId);
275 #ifndef DOXYGEN_SHOULD_SKIP_THIS
287 for (
int i=0; i<3; i++)
delete mChild[i];
291 void setMin(
double minx,
double miny,
double minz) {
295 void setMax(
double maxx,
double maxy,
double maxz) {
318 double &rTmin,
double &rTmax)
const;
324 const double bounds[6],
const double origin[3],
const double dir[3],
double &rTmin,
double &rTmax);
represent and manipulate 3D points
virtual int IntersectWithLine(double p1[3], 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.
static bool VTKFILTERSFLOWPATHS_EXPORT RayMinMaxT(const double bounds[6], const double origin[3], const double dir[3], double &rTmin, double &rTmax)
void Subdivide(BSPNode *node, Sorted_cell_extents_Lists *lists, vtkDataSet *dataSet, vtkIdType nCells, int depth, int maxlevel, vtkIdType maxCells, int &MaxDepth)
virtual int IntersectWithLine(const double p1[3], const double p2[3], const double tol, vtkPoints *points, vtkIdList *cellIds)
Take the passed line segment and intersect it with the data set.
virtual vtkIdType FindCell(double x[3], double tol2, vtkGenericCell *GenCell, double pcoords[3], double *weights)
Test a point to find if it is inside a cell.
void setMax(double maxx, double maxy, double maxz)
void BuildLocatorInternal()
virtual int IntersectWithLine(double p1[3], double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId, vtkGenericCell *cell)
Return intersection point (if any) AND the cell which was intersected by the finite line.
bool InsideCellBounds(double x[3], vtkIdType cell_ID)
Quickly test if a point is inside the bounds of a particular cell.
virtual vtkIdType FindCell(double x[3])
Returns the Id of the cell containing the point, returns -1 if no cell found.
void Classify(const double origin[3], const double dir[3], double &rDist, BSPNode *&Near, BSPNode *&Mid, BSPNode *&Far) 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)
void setMin(double minx, double miny, double minz)
vtkIdType * sorted_cell_lists[6]
vtkIdListCollection * GetLeafNodeCellInformation()
After subdivision has completed, one may wish to query the tree to find which cells are in which leaf...
bool Inside(double point[3]) const
void BuildLocatorIfNeeded()
void BuildLocator()
Build Tree.
virtual void GenerateRepresentationLeafs(vtkPolyData *pd)
Generate BBox representation of all leaf nodes.
a simple class to control print indentation
list of point or cell ids
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
maintain an unordered list of dataarray objects
an abstract base class for locators which find cells
abstract class to specify dataset behavior
virtual void GenerateRepresentation(int level, vtkPolyData *pd)
Generate BBox representation of Nth level.
static vtkModifiedBSPTree * New()
Construct with maximum 32 cells per node.
bool RayMinMaxT(const double origin[3], const double dir[3], double &rTmin, double &rTmax) const
virtual int IntersectWithLine(double p1[3], double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId)
Return intersection point (if any) AND the cell which was intersected by the finite line.
concrete dataset represents vertices, lines, polygons, and triangle strips
static int VTKFILTERSFLOWPATHS_EXPORT getDominantAxis(const double dir[3])
provides thread-safe access to cells
void FreeSearchStructure()
Free tree memory.
Generate axis aligned BBox tree for raycasting and other Locator based searches.
friend class vtkParticleBoxTree