BV_KDOPTree< K > Class Template Reference

#include <BV_KDOPTree.h>

Inheritance diagram for BV_KDOPTree< K >:

BV_Tree

List of all members.

Classes

class  bvLeaf

Public Types

typedef BV_Tree BaseClass

Public Member Functions

 BV_KDOPTree ()
 BV_KDOPTree (const BV_KDOPTree &)
virtual ~BV_KDOPTree ()
BV_KDOPTreeoperator= (const BV_KDOPTree &)
virtual const char * getType () const
virtual const BV_TreecastTo (const char *type) const
virtual BV_TreecastTo (const char *type)
const UT_Vector3getPlaneDir (int k) const
 Retrieve the orientation of the k-th slab.

Static Public Member Functions

static int getNumSlabs ()
 This defines the number of "slabs" used to define the polytope.

Protected Member Functions

virtual BV_TreecloneSubclass () const
virtual int64 getMemoryUsageSubclass () const
virtual int getNumLeavesSubclass () const
virtual void saveSubclass (ostream &os, bool onlyStructure) const
virtual bool loadSubclass (UT_IStream &is, bool onlyStructure)
virtual void buildSubclass (BV_LeafIterator &leafIt)
virtual void updateExtentsSubclass (BV_LeafIterator &leafIt)
virtual 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
const BV_KDOPNode< K > * getRoot () const

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_RefArray< bvLeaf > &leafData, int startLeaf, int numLeaves)
static void updateExtentsRecurse (BV_LeafIterator &leafIt, BV_KDOPNode< K > &node)

Static Protected Attributes

static const UT_Vector3 myPlaneDirs [K/2]


Detailed Description

template<int K>
class BV_KDOPTree< K >

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 80 of file BV_KDOPTree.h.


Member Typedef Documentation

template<int K>
typedef BV_Tree BV_KDOPTree< K >::BaseClass

Reimplemented in GU_KDOPTree< K >.

Definition at line 83 of file BV_KDOPTree.h.


Constructor & Destructor Documentation

template<int K>
BV_KDOPTree< K >::BV_KDOPTree (  ) 

template<int K>
BV_KDOPTree< K >::BV_KDOPTree ( const BV_KDOPTree< K > &   ) 

template<int K>
virtual BV_KDOPTree< K >::~BV_KDOPTree (  )  [virtual]


Member Function Documentation

template<int K>
static BV_KDOPNode<K>* BV_KDOPTree< K >::buildRecurse ( UT_RefArray< bvLeaf > &  leafData,
int  startLeaf,
int  numLeaves 
) [static, protected]

template<int K>
virtual void BV_KDOPTree< K >::buildSubclass ( BV_LeafIterator leafIt  )  [protected, virtual]

Implements BV_Tree.

template<int K>
virtual BV_Tree* BV_KDOPTree< K >::castTo ( const char *  type  )  [virtual]

Reimplemented from BV_Tree.

template<int K>
virtual const BV_Tree* BV_KDOPTree< K >::castTo ( const char *  type  )  const [virtual]

Reimplemented from BV_Tree.

template<int K>
virtual BV_Tree* BV_KDOPTree< K >::cloneSubclass (  )  const [protected, virtual]

Implements BV_Tree.

template<int K>
virtual int64 BV_KDOPTree< K >::getMemoryUsageSubclass (  )  const [protected, virtual]

Implements BV_Tree.

template<int K>
virtual int BV_KDOPTree< K >::getNumLeavesSubclass (  )  const [protected, virtual]

Implements BV_Tree.

template<int K>
static int BV_KDOPTree< K >::getNumSlabs (  )  [inline, static]

This defines the number of "slabs" used to define the polytope.

Definition at line 97 of file BV_KDOPTree.h.

template<int K>
const UT_Vector3& BV_KDOPTree< K >::getPlaneDir ( int  k  )  const [inline]

Retrieve the orientation of the k-th slab.

Definition at line 100 of file BV_KDOPTree.h.

template<int K>
const BV_KDOPNode<K>* BV_KDOPTree< K >::getRoot (  )  const [inline, protected]

Definition at line 147 of file BV_KDOPTree.h.

template<int K>
virtual const char* BV_KDOPTree< K >::getType (  )  const [virtual]

Implements BV_Tree.

template<int K>
static bool BV_KDOPTree< K >::intersectRecurse ( BV_Callback callback,
const BV_KDOPNode< K > &  nodea,
const BV_KDOPNode< K > &  nodeb,
fpreal  tol 
) [static, protected]

template<int K>
virtual Status BV_KDOPTree< K >::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 [protected, virtual]

Implements BV_Tree.

template<int K>
virtual bool BV_KDOPTree< K >::loadSubclass ( UT_IStream is,
bool  onlyStructure 
) [protected, virtual]

Implements BV_Tree.

template<int K>
BV_KDOPTree& BV_KDOPTree< K >::operator= ( const BV_KDOPTree< K > &   ) 

template<int K>
virtual void BV_KDOPTree< K >::saveSubclass ( ostream &  os,
bool  onlyStructure 
) const [protected, virtual]

Implements BV_Tree.

template<int K>
static void BV_KDOPTree< K >::updateExtentsRecurse ( BV_LeafIterator leafIt,
BV_KDOPNode< K > &  node 
) [static, protected]

template<int K>
virtual void BV_KDOPTree< K >::updateExtentsSubclass ( BV_LeafIterator leafIt  )  [protected, virtual]

Implements BV_Tree.


Member Data Documentation

template<int K>
const UT_Vector3 BV_KDOPTree< K >::myPlaneDirs[K/2] [static, protected]

Definition at line 144 of file BV_KDOPTree.h.


The documentation for this class was generated from the following file:

Generated on Fri May 25 00:10:17 2012 for HDK by  doxygen 1.5.9