59#include "vtkFiltersGeneralModule.h"
123 double& t,
double x[3],
double pcoords[3],
132 double mid[3],
double min[3],
double size[3]);
141 double mid[3],
double min[3],
double size[3]);
166 double p0[3],
double p1[3],
185 void BuildLocator() VTK_OVERRIDE;
207 double mid[3],
double min[3],
double size[3]);
221 void operator=(const
vtkOBBTree&) VTK_DELETE_FUNCTION;
an abstract base class for locators which find cells
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.
object to represent cell connectivity
abstract class to specify dataset behavior
provides thread-safe access to cells
list of point or cell ids
a simple class to control print indentation
represent and manipulate 4x4 transformation matrices
void DebugPrintTree(int level, double *leaf_vol, int *minCells, int *maxCells)
generate oriented bounding box (OBB) tree
void ComputeOBB(vtkDataSet *input, double corner[3], double max[3], double mid[3], double min[3], double size[3])
Compute an OBB for the input dataset using the cells in the data.
void FreeSearchStructure() override
Satisfy locator's abstract interface, see vtkLocator.
int DisjointOBBNodes(vtkOBBNode *nodeA, vtkOBBNode *nodeB, vtkMatrix4x4 *XformBtoA)
Returns true if nodeB and nodeA are disjoint after optional transformation of nodeB with matrix Xform...
int InsideOrOutside(const double point[3])
Determine whether a point is inside or outside the data used to build this OBB tree.
int LineIntersectsNode(vtkOBBNode *pA, double b0[3], double b1[3])
Returns true if line intersects node.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static vtkOBBTree * New()
Construct with automatic computation of divisions, averaging 25 cells per octant.
int IntersectWithLine(const double a0[3], const double a1[3], vtkPoints *points, vtkIdList *cellIds) override
Take the passed line segment and intersect it with the data set.
int IntersectWithOBBTree(vtkOBBTree *OBBTreeB, vtkMatrix4x4 *XformBtoA, int(*function)(vtkOBBNode *nodeA, vtkOBBNode *nodeB, vtkMatrix4x4 *Xform, void *arg), void *data_arg)
For each intersecting leaf node pair, call function.
int TriangleIntersectsNode(vtkOBBNode *pA, double p0[3], double p1[3], double p2[3], vtkMatrix4x4 *XformBtoA)
Returns true if triangle (optionally transformed) intersects node.
static void ComputeOBB(vtkPoints *pts, double corner[3], double max[3], double mid[3], double min[3], double size[3])
Compute an OBB from the list of points given.
int IntersectWithLine(double a0[3], double a1[3], double tol, double &t, double x[3], double pcoords[3], int &subId, vtkIdType &cellId, vtkGenericCell *cell) override
Return the first intersection of the specified line segment with the OBB tree, as well as information...
represent and manipulate 3D points
concrete dataset represents vertices, lines, polygons, and triangle strips