|
HDK
|
#include <BV_KDOPTree.h>
Inheritance diagram for BV_KDOPTree< K >: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.