61#include "vtkFiltersGeneralModule.h"
63VTK_ABI_NAMESPACE_BEGIN
67class VTKFILTERSGENERAL_EXPORT vtkOBBNode
78 void DebugPrintTree(
int level,
double* leaf_vol,
int* minCells,
int* maxCells);
81 vtkOBBNode(
const vtkOBBNode& other) =
delete;
82 vtkOBBNode& operator=(
const vtkOBBNode& rhs) =
delete;
111 int IntersectWithLine(
const double a0[3],
const double a1[3],
double tol,
double& t,
double x[3],
126 const double a0[3],
const double a1[3],
vtkPoints* points,
vtkIdList* cellIds)
override;
134 vtkPoints* pts,
double corner[3],
double max[3],
double mid[3],
double min[3],
double size[3]);
167 vtkOBBNode* pA,
double p0[3],
double p1[3],
double p2[3],
vtkMatrix4x4* XformBtoA);
174 int (*function)(vtkOBBNode* nodeA, vtkOBBNode* nodeB,
vtkMatrix4x4* Xform,
void* arg),
an abstract base class for locators which find cells
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.
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
generate oriented bounding box (OBB) tree
represent and manipulate 3D points
concrete dataset represents vertices, lines, polygons, and triangle strips
int IntersectWithLine(const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId) override
Line-edge intersection.
static vtkBiQuadraticQuadraticHexahedron * New()
void PrintSelf(ostream &os, vtkIndent indent) override
@ Cells
A cell specified by degrees of freedom held in arrays.
int DisjointOBBNodes(vtkOBBNode *nodeA, vtkOBBNode *nodeB, vtkMatrix4x4 *XformBtoA)
Returns true if nodeB and nodeA are disjoint after optional transformation of nodeB with matrix Xform...
void BuildTree(vtkIdList *cells, vtkOBBNode *parent, int level)
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 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.
void GeneratePolygons(vtkOBBNode *OBBptr, int level, int repLevel, vtkPoints *pts, vtkCellArray *polys)
void ForceBuildLocator() override
Satisfy locator's abstract interface, see vtkLocator.
void BuildLocator() override
Satisfy locator's abstract interface, see vtkLocator.
void DeleteTree(vtkOBBNode *OBBptr)
void FreeSearchStructure() override
Satisfy locator's abstract interface, see vtkLocator.
int LineIntersectsNode(vtkOBBNode *pA, const double b0[3], const double b1[3])
Returns true if line intersects node.
void BuildLocatorInternal() override
void GenerateRepresentation(int level, vtkPolyData *pd) override
Create polygonal representation for OBB tree at specified level.
int InsideOrOutside(const double point[3])
Determine whether a point is inside or outside the data used to build this OBB tree.