HDK
|
#include <BV_KDOPTree.h>
Classes | |
class | bvLeaf |
Public Types | |
typedef BV_Tree | BaseClass |
Public Types inherited from BV_Tree | |
enum | BV_Status { BV_PASS, BV_FAIL_ROTATIONS_UNSUPPORTED, BV_FAIL_BAD_TYPE, BV_FAIL } |
Public Member Functions | |
BV_KDOPTree () | |
BV_KDOPTree (const BV_KDOPTree &) | |
~BV_KDOPTree () override | |
BV_KDOPTree & | operator= (const BV_KDOPTree &) |
const char * | getType () const override |
const BV_Tree * | castTo (const char *type) const override |
BV_Tree * | castTo (const char *type) override |
Public Member Functions inherited from BV_Tree | |
BV_Tree () | |
virtual | ~BV_Tree () |
BV_Tree * | clone () const |
int64 | getMemoryUsage () const |
int | getNumLeaves () const |
void | build (BV_LeafIterator &leafIt) |
Construct a volume hierarchy from the given primitives. More... | |
void | updateExtents (BV_LeafIterator &leafIt) |
void | save (std::ostream &os, bool onlyStructure) const |
bool | load (UT_IStream &is, bool onlyStructure) |
BV_Status | intersect (BV_Callback &callback, const BV_Tree &treeb, const UT_DMatrix4 &xforma, const UT_DMatrix4 &xformb, fpreal tol=0.001F) const |
BV_Status | intersect (BV_Callback &callback, const BV_Tree &treeb, fpreal tol=0.001F) const |
Static boxes only! More... | |
BV_Status | intersect (BV_Callback &callback, const BV_Tree &treeb, const UT_DMatrix4 &startxforma, const UT_DMatrix4 &startxformb, const UT_DMatrix4 &endxforma, const UT_DMatrix4 &endxformb, fpreal tol=0.001F) const |
Moving boxes only! More... | |
BV_Status | intersect (BV_Callback &callback, const BV_Tree &treeb, const UT_DMatrix4 &xforma, const UT_DMatrix4 &startxforma, const UT_DMatrix4 &startxformb, const UT_DMatrix4 &xformb, const UT_DMatrix4 &endxforma, const UT_DMatrix4 &endxformb, fpreal tol=0.001F) const |
Moving boxes only! More... | |
Static Public Member Functions | |
static int | getNumSlabs () |
This defines the number of "slabs" used to define the polytope. More... | |
static const UT_Vector3 & | getPlaneDir (int k) |
Retrieve the orientation of the k-th slab. More... | |
Protected Member Functions | |
BV_Tree * | cloneSubclass () const override |
int64 | getMemoryUsageSubclass () const override |
int | getNumLeavesSubclass () const override |
void | saveSubclass (std::ostream &os, bool onlyStructure) const override |
bool | loadSubclass (UT_IStream &is, bool onlyStructure) override |
void | buildSubclass (BV_LeafIterator &leafIt) override |
void | updateExtentsSubclass (BV_LeafIterator &leafIt) override |
BV_Status | intersectSubclass (BV_Callback &callback, const BV_Tree &treeb, const UT_DMatrix4 &startxforma, const UT_DMatrix4 &startxformb, const UT_DMatrix4 &endxforma, const UT_DMatrix4 &endxformb, fpreal tol) const override |
const BV_KDOPNode< K > * | getRoot () const |
Protected Member Functions inherited from BV_Tree | |
BV_Tree (const BV_Tree &tree) | |
Static Protected Member Functions | |
static bool | intersectRecurse (BV_Callback &callback, const BV_KDOPNode< K > &nodea, const BV_KDOPNode< K > &nodeb, fpreal tol) |
static BV_KDOPNode< K > * | buildRecurse (UT_Array< bvLeaf > &leafData, int startLeaf, int numLeaves) |
static void | updateExtentsRecurse (BV_LeafIterator &leafIt, BV_KDOPNode< K > &node) |
Bounding Volume Tree using k-Discrete Oriented Polytopes.
Build: O(n^2) Update extents: O(n log n)
Defined for: k=6 (axis aligned bounding box) k=14 (AABB with cut corners) k=18 (AABB with cut edges) k=26 (AABB with cut corners and edges).
Source: Klosowski, Held, Mitchell, Sowizral and Zikan, "Efficient Collision Detection Using Bounding Volume Hierarchies of k-DOPs," IEEE Transactions on Visualization and Computer Graphics 4(1):21-36, 1998. ftp://ams.sunysb.edu/pub/geometry/cd-tvcg-97.ps.gz
Definition at line 74 of file BV_KDOPTree.h.
typedef BV_Tree BV_KDOPTree< K >::BaseClass |
Definition at line 77 of file BV_KDOPTree.h.
BV_KDOPTree< K >::BV_KDOPTree | ( | ) |
BV_KDOPTree< K >::BV_KDOPTree | ( | const BV_KDOPTree< K > & | ) |
|
override |
|
staticprotected |
|
overrideprotectedvirtual |
Implements BV_Tree.
|
overridevirtual |
Reimplemented from BV_Tree.
|
overridevirtual |
Reimplemented from BV_Tree.
|
overrideprotectedvirtual |
Implements BV_Tree.
|
overrideprotectedvirtual |
Implements BV_Tree.
|
overrideprotectedvirtual |
Implements BV_Tree.
|
inlinestatic |
This defines the number of "slabs" used to define the polytope.
Definition at line 92 of file BV_KDOPTree.h.
|
static |
Retrieve the orientation of the k-th slab.
|
inlineprotected |
Definition at line 136 of file BV_KDOPTree.h.
|
overridevirtual |
Implements BV_Tree.
|
staticprotected |
|
overrideprotectedvirtual |
Implements BV_Tree.
|
overrideprotectedvirtual |
Implements BV_Tree.
BV_KDOPTree& BV_KDOPTree< K >::operator= | ( | const BV_KDOPTree< K > & | ) |
|
overrideprotectedvirtual |
Implements BV_Tree.
|
staticprotected |
|
overrideprotectedvirtual |
Implements BV_Tree.