146 #ifndef vtkModifiedBSPTree_h 
  147 #define vtkModifiedBSPTree_h 
  149 #include "vtkFiltersFlowPathsModule.h"  
  153 class Sorted_cell_extents_Lists;
 
  196   virtual void GenerateRepresentationLeafs(
vtkPolyData *pd);
 
  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);
 
  253   void Subdivide(
BSPNode *node, Sorted_cell_extents_Lists *lists, 
vtkDataSet *dataSet,
 
  260   virtual int IntersectCellInternal(
vtkIdType cell_ID, 
const double p1[3], 
const double p2[3],
 
  261     const double tol, 
double &t, 
double ipt[3], 
double pcoords[3], 
int &subId);
 
  263   void BuildLocatorIfNeeded();
 
  264   void ForceBuildLocator();
 
  265   void BuildLocatorInternal();
 
  275 #ifndef DOXYGEN_SHOULD_SKIP_THIS 
  281       mChild[0] = mChild[1] = mChild[2] = NULL;
 
  282       for (
int i=0; i<6; i++) sorted_cell_lists[i] = NULL;
 
  287       for (
int i=0; i<3; i++) 
delete mChild[i];
 
  288       for (
int i=0; i<6; i++) 
delete []sorted_cell_lists[i];
 
  291     void setMin(
double minx, 
double miny, 
double minz) {
 
  292       this->Bounds[0] = minx; this->Bounds[2] = miny; this->Bounds[4] = minz;
 
  295     void setMax(
double maxx, 
double maxy, 
double maxz) {
 
  296       this->Bounds[1] = maxx; this->Bounds[3] = maxy; this->Bounds[5] = maxz;
 
  299     bool Inside(
double point[3]) 
const;
 
  314     void Classify(
const double origin[3], 
const double dir[3],
 
  317     bool RayMinMaxT(
const double origin[3], 
const double dir[3],
 
  318       double &rTmin, 
double &rTmax) 
const;
 
  321     friend class vtkParticleBoxTree;
 
  323   static bool VTKFILTERSFLOWPATHS_EXPORT RayMinMaxT(
 
  324     const double bounds[6], 
const double origin[3], 
const double dir[3], 
double &rTmin, 
double &rTmax);
 
  325   static int  VTKFILTERSFLOWPATHS_EXPORT getDominantAxis(
const double dir[3]);
 
virtual void BuildLocator()=0
Build the locator from the input dataset. 
 
virtual bool InsideCellBounds(double x[3], vtkIdType cell_ID)
Quickly test if a point is inside the bounds of a particular cell. 
 
abstract class to specify dataset behavior 
 
an abstract base class for locators which find cells 
 
concrete dataset represents vertices, lines, polygons, and triangle strips 
 
virtual void FreeSearchStructure()=0
Free the memory required for the spatial data structure. 
 
provides thread-safe access to cells 
 
void setMax(double maxx, double maxy, double maxz)
 
a simple class to control print indentation 
 
virtual vtkIdType FindCell(double x[3])
Returns the Id of the cell containing the point, returns -1 if no cell found. 
 
list of point or cell ids 
 
void setMin(double minx, double miny, double minz)
 
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. 
 
maintain an unordered list of dataarray objects 
 
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses. 
 
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
 
virtual void GenerateRepresentation(int level, vtkPolyData *pd)=0
Method to build a representation at a particular level. 
 
represent and manipulate 3D points 
 
Generate axis aligned BBox tree for raycasting and other Locator based searches.