Classes | Public Member Functions | Public Attributes | Static Public Attributes | Protected Attributes
fcl::implementation_array::HierarchyTree< BV > Class Template Reference

Class for hierarchy tree structure. More...

#include <hpp/fcl/broadphase/hierarchy_tree.h>

Collaboration diagram for fcl::implementation_array::HierarchyTree< BV >:
[legend]

List of all members.

Classes

struct  SortByMorton

Public Member Functions

 HierarchyTree (int bu_threshold_=16, int topdown_level_=0)
 Create hierarchy tree with suitable setting.
 ~HierarchyTree ()
void init (NodeType *leaves, int n_leaves_, int level=0)
 Initialize the tree by a set of leaves using algorithm with a given level.
size_t insert (const BV &bv, void *data)
 Initialize the tree by a set of leaves using algorithm with a given level.
void remove (size_t leaf)
 Remove a leaf node.
void clear ()
 Clear the tree.
bool empty () const
 Whether the tree is empty.
void update (size_t leaf, int lookahead_level=-1)
 update one leaf node
bool update (size_t leaf, const BV &bv)
 update the tree when the bounding volume of a given leaf has changed
bool update (size_t leaf, const BV &bv, const Vec3f &vel, FCL_REAL margin)
 update one leaf's bounding volume, with prediction
bool update (size_t leaf, const BV &bv, const Vec3f &vel)
 update one leaf's bounding volume, with prediction
size_t getMaxHeight () const
 get the max height of the tree
size_t getMaxDepth () const
 get the max depth of the tree
void balanceBottomup ()
 balance the tree from bottom
void balanceTopdown ()
 balance the tree from top
void balanceIncremental (int iterations)
 balance the tree in an incremental way
void refit ()
 refit the tree, i.e., when the leaf nodes' bounding volumes change, update the entire tree in a bottom-up manner
void extractLeaves (size_t root, NodeType *&leaves) const
 extract all the leaves of the tree
size_t size () const
 number of leaves in the tree
size_t getRoot () const
 get the root of the tree
NodeTypegetNodes () const
 get the pointer to the nodes array
void print (size_t root, int depth)
 print the tree in a recursive way

Public Attributes

int topdown_level
 decide which topdown algorithm to use
int bu_threshold
 decide the depth to use expensive bottom-up algorithm

Static Public Attributes

static const size_t NULL_NODE = -1

Protected Attributes

size_t root_node
NodeTypenodes
size_t n_nodes
size_t n_nodes_alloc
size_t n_leaves
size_t freelist
unsigned int opath
int max_lookahead_level

Detailed Description

template<typename BV>
class fcl::implementation_array::HierarchyTree< BV >

Class for hierarchy tree structure.


Constructor & Destructor Documentation

template<typename BV >
fcl::implementation_array::HierarchyTree< BV >::HierarchyTree ( int  bu_threshold_ = 16,
int  topdown_level_ = 0 
)

Create hierarchy tree with suitable setting.

bu_threshold decides the height of tree node to start bottom-up construction / optimization; topdown_level decides different methods to construct tree in topdown manner. lower level method constructs tree with better quality but is slower.

References fcl::implementation_array::NodeBase< BV >::next.

template<typename BV >
fcl::implementation_array::HierarchyTree< BV >::~HierarchyTree ( )

Member Function Documentation

template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::balanceBottomup ( )

balance the tree from bottom

References fcl::implementation_array::NodeBase< BV >::next.

template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::balanceIncremental ( int  iterations)

balance the tree in an incremental way

template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::balanceTopdown ( )

balance the tree from top

References fcl::implementation_array::NodeBase< BV >::next.

template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::clear ( )
template<typename BV >
bool fcl::implementation_array::HierarchyTree< BV >::empty ( ) const

Whether the tree is empty.

Referenced by fcl::DynamicAABBTreeCollisionManager_Array::empty().

template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::extractLeaves ( size_t  root,
NodeType *&  leaves 
) const

extract all the leaves of the tree

template<typename BV >
size_t fcl::implementation_array::HierarchyTree< BV >::getMaxDepth ( ) const

get the max depth of the tree

template<typename BV >
size_t fcl::implementation_array::HierarchyTree< BV >::getMaxHeight ( ) const

get the max height of the tree

template<typename BV >
HierarchyTree< BV >::NodeType * fcl::implementation_array::HierarchyTree< BV >::getNodes ( ) const

get the pointer to the nodes array

template<typename BV >
size_t fcl::implementation_array::HierarchyTree< BV >::getRoot ( ) const

get the root of the tree

template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::init ( NodeType leaves,
int  n_leaves_,
int  level = 0 
)

Initialize the tree by a set of leaves using algorithm with a given level.

template<typename BV>
size_t fcl::implementation_array::HierarchyTree< BV >::insert ( const BV &  bv,
void *  data 
)

Initialize the tree by a set of leaves using algorithm with a given level.

template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::print ( size_t  root,
int  depth 
)
template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::refit ( )

refit the tree, i.e., when the leaf nodes' bounding volumes change, update the entire tree in a bottom-up manner

template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::remove ( size_t  leaf)

Remove a leaf node.

template<typename BV >
size_t fcl::implementation_array::HierarchyTree< BV >::size ( ) const

number of leaves in the tree

Referenced by fcl::DynamicAABBTreeCollisionManager_Array::size().

template<typename BV >
void fcl::implementation_array::HierarchyTree< BV >::update ( size_t  leaf,
int  lookahead_level = -1 
)

update one leaf node

template<typename BV>
bool fcl::implementation_array::HierarchyTree< BV >::update ( size_t  leaf,
const BV &  bv 
)

update the tree when the bounding volume of a given leaf has changed

template<typename BV>
bool fcl::implementation_array::HierarchyTree< BV >::update ( size_t  leaf,
const BV &  bv,
const Vec3f vel,
FCL_REAL  margin 
)

update one leaf's bounding volume, with prediction

template<typename BV>
bool fcl::implementation_array::HierarchyTree< BV >::update ( size_t  leaf,
const BV &  bv,
const Vec3f vel 
)

update one leaf's bounding volume, with prediction


Member Data Documentation

template<typename BV>
int fcl::implementation_array::HierarchyTree< BV >::bu_threshold

decide the depth to use expensive bottom-up algorithm

template<typename BV>
size_t fcl::implementation_array::HierarchyTree< BV >::freelist [protected]
template<typename BV>
int fcl::implementation_array::HierarchyTree< BV >::max_lookahead_level [protected]
template<typename BV>
size_t fcl::implementation_array::HierarchyTree< BV >::n_leaves [protected]
template<typename BV>
size_t fcl::implementation_array::HierarchyTree< BV >::n_nodes [protected]
template<typename BV>
size_t fcl::implementation_array::HierarchyTree< BV >::n_nodes_alloc [protected]
template<typename BV>
NodeType* fcl::implementation_array::HierarchyTree< BV >::nodes [protected]
template<typename BV>
const size_t fcl::implementation_array::HierarchyTree< BV >::NULL_NODE = -1 [static]
template<typename BV>
unsigned int fcl::implementation_array::HierarchyTree< BV >::opath [protected]
template<typename BV>
size_t fcl::implementation_array::HierarchyTree< BV >::root_node [protected]
template<typename BV>
int fcl::implementation_array::HierarchyTree< BV >::topdown_level

decide which topdown algorithm to use

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines