All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fcl::SpatialHashingCollisionManager< HashTable > Class Template Reference

spatial hashing collision mananger More...

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

Inheritance diagram for fcl::SpatialHashingCollisionManager< HashTable >:
Collaboration diagram for fcl::SpatialHashingCollisionManager< HashTable >:

Public Member Functions

 SpatialHashingCollisionManager (FCL_REAL cell_size, const Vec3f &scene_min, const Vec3f &scene_max, unsigned int default_table_size=1000)
 
 ~SpatialHashingCollisionManager ()
 
void registerObject (CollisionObject *obj)
 add one object to the manager More...
 
void unregisterObject (CollisionObject *obj)
 remove one object from the manager More...
 
void setup ()
 initialize the manager, related with the specific type of manager More...
 
void update ()
 update the condition of manager More...
 
void update (CollisionObject *updated_obj)
 update the manager by explicitly given the object updated More...
 
void update (const std::vector< CollisionObject * > &updated_objs)
 update the manager by explicitly given the set of objects update More...
 
void clear ()
 clear the manager More...
 
void getObjects (std::vector< CollisionObject * > &objs) const
 return the objects managed by the manager More...
 
void collide (CollisionObject *obj, void *cdata, CollisionCallBack callback) const
 perform collision test between one object and all the objects belonging to the manager More...
 
void distance (CollisionObject *obj, void *cdata, DistanceCallBack callback) const
 perform distance computation between one object and all the objects belonging ot the manager More...
 
void collide (void *cdata, CollisionCallBack callback) const
 perform collision test for the objects belonging to the manager (i.e, N^2 self collision) More...
 
void distance (void *cdata, DistanceCallBack callback) const
 perform distance test for the objects belonging to the manager (i.e., N^2 self distance) More...
 
void collide (BroadPhaseCollisionManager *other_manager, void *cdata, CollisionCallBack callback) const
 perform collision test with objects belonging to another manager More...
 
void distance (BroadPhaseCollisionManager *other_manager, void *cdata, DistanceCallBack callback) const
 perform distance test with objects belonging to another manager More...
 
bool empty () const
 whether the manager is empty More...
 
size_t size () const
 the number of objects managed by the manager More...
 
- Public Member Functions inherited from fcl::BroadPhaseCollisionManager
 BroadPhaseCollisionManager ()
 
virtual ~BroadPhaseCollisionManager ()
 
virtual void registerObjects (const std::vector< CollisionObject * > &other_objs)
 add objects to the manager More...
 

Static Public Member Functions

static void computeBound (std::vector< CollisionObject * > &objs, Vec3f &l, Vec3f &u)
 compute the bound for the environent More...
 

Protected Member Functions

bool collide_ (CollisionObject *obj, void *cdata, CollisionCallBack callback) const
 perform collision test between one object and all the objects belonging to the manager More...
 
bool distance_ (CollisionObject *obj, void *cdata, DistanceCallBack callback, FCL_REAL &min_dist) const
 perform distance computation between one object and all the objects belonging ot the manager More...
 
- Protected Member Functions inherited from fcl::BroadPhaseCollisionManager
bool inTestedSet (CollisionObject *a, CollisionObject *b) const
 
void insertTestedSet (CollisionObject *a, CollisionObject *b) const
 

Protected Attributes

std::list< CollisionObject * > objs
 all objects in the scene More...
 
std::list< CollisionObject * > objs_outside_scene_limit
 objects outside the scene limit are in another list More...
 
AABB scene_limit
 the size of the scene More...
 
std::map< CollisionObject *, AABBobj_aabb_map
 store the map between objects and their aabbs. will make update more convenient More...
 
HashTable * hash_table
 objects in the scene limit (given by scene_min and scene_max) are in the spatial hash table More...
 
- Protected Attributes inherited from fcl::BroadPhaseCollisionManager
std::set< std::pair
< CollisionObject
*, CollisionObject * > > 
tested_set
 tools help to avoid repeating collision or distance callback for the pairs of objects tested before. It can be useful for some of the broadphase algorithms. More...
 
bool enable_tested_set_
 

Detailed Description

template<typename HashTable = SimpleHashTable<AABB, CollisionObject*, SpatialHash>>
class fcl::SpatialHashingCollisionManager< HashTable >

spatial hashing collision mananger

Constructor & Destructor Documentation

template<typename HashTable = SimpleHashTable<AABB, CollisionObject*, SpatialHash>>
fcl::SpatialHashingCollisionManager< HashTable >::SpatialHashingCollisionManager ( FCL_REAL  cell_size,
const Vec3f scene_min,
const Vec3f scene_max,
unsigned int  default_table_size = 1000 
)
inline
template<typename HashTable = SimpleHashTable<AABB, CollisionObject*, SpatialHash>>
fcl::SpatialHashingCollisionManager< HashTable >::~SpatialHashingCollisionManager ( )
inline

Member Function Documentation

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::clear ( )
virtual

clear the manager

Implements fcl::BroadPhaseCollisionManager.

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::collide ( CollisionObject obj,
void *  cdata,
CollisionCallBack  callback 
) const
virtual

perform collision test between one object and all the objects belonging to the manager

Implements fcl::BroadPhaseCollisionManager.

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::collide ( void *  cdata,
CollisionCallBack  callback 
) const
virtual

perform collision test for the objects belonging to the manager (i.e, N^2 self collision)

Implements fcl::BroadPhaseCollisionManager.

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::collide ( BroadPhaseCollisionManager other_manager,
void *  cdata,
CollisionCallBack  callback 
) const
virtual
template<typename HashTable >
bool fcl::SpatialHashingCollisionManager< HashTable >::collide_ ( CollisionObject obj,
void *  cdata,
CollisionCallBack  callback 
) const
protected

perform collision test between one object and all the objects belonging to the manager

References fcl::CollisionObject::getAABB().

Referenced by fcl::SpatialHashingCollisionManager< HashTable >::collide().

template<typename HashTable = SimpleHashTable<AABB, CollisionObject*, SpatialHash>>
static void fcl::SpatialHashingCollisionManager< HashTable >::computeBound ( std::vector< CollisionObject * > &  objs,
Vec3f l,
Vec3f u 
)
inlinestatic

compute the bound for the environent

References fcl::bound(), fcl::AABB::max_, and fcl::AABB::min_.

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::distance ( CollisionObject obj,
void *  cdata,
DistanceCallBack  callback 
) const
virtual

perform distance computation between one object and all the objects belonging ot the manager

Implements fcl::BroadPhaseCollisionManager.

References fcl::details::max().

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::distance ( void *  cdata,
DistanceCallBack  callback 
) const
virtual

perform distance test for the objects belonging to the manager (i.e., N^2 self distance)

Implements fcl::BroadPhaseCollisionManager.

References fcl::details::max().

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::distance ( BroadPhaseCollisionManager other_manager,
void *  cdata,
DistanceCallBack  callback 
) const
virtual
template<typename HashTable >
bool fcl::SpatialHashingCollisionManager< HashTable >::distance_ ( CollisionObject obj,
void *  cdata,
DistanceCallBack  callback,
FCL_REAL min_dist 
) const
protected

perform distance computation between one object and all the objects belonging ot the manager

References fcl::AABB::distance(), fcl::AABB::equal(), fcl::AABB::expand(), fcl::CollisionObject::getAABB(), fcl::details::max(), fcl::AABB::max_, and fcl::AABB::min_.

Referenced by fcl::SpatialHashingCollisionManager< HashTable >::distance().

template<typename HashTable >
bool fcl::SpatialHashingCollisionManager< HashTable >::empty ( ) const
virtual

whether the manager is empty

Implements fcl::BroadPhaseCollisionManager.

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::getObjects ( std::vector< CollisionObject * > &  objs) const
virtual

return the objects managed by the manager

Implements fcl::BroadPhaseCollisionManager.

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::registerObject ( CollisionObject obj)
virtual

add one object to the manager

Implements fcl::BroadPhaseCollisionManager.

References fcl::CollisionObject::getAABB().

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::setup ( )
virtual

initialize the manager, related with the specific type of manager

Implements fcl::BroadPhaseCollisionManager.

template<typename HashTable >
size_t fcl::SpatialHashingCollisionManager< HashTable >::size ( ) const
virtual
template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::unregisterObject ( CollisionObject obj)
virtual

remove one object from the manager

Implements fcl::BroadPhaseCollisionManager.

References fcl::CollisionObject::getAABB().

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::update ( )
virtual

update the condition of manager

Implements fcl::BroadPhaseCollisionManager.

References fcl::CollisionObject::getAABB().

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::update ( CollisionObject updated_obj)
virtual

update the manager by explicitly given the object updated

Reimplemented from fcl::BroadPhaseCollisionManager.

References fcl::CollisionObject::getAABB().

template<typename HashTable >
void fcl::SpatialHashingCollisionManager< HashTable >::update ( const std::vector< CollisionObject * > &  updated_objs)
virtual

update the manager by explicitly given the set of objects update

Reimplemented from fcl::BroadPhaseCollisionManager.

Member Data Documentation

template<typename HashTable = SimpleHashTable<AABB, CollisionObject*, SpatialHash>>
HashTable* fcl::SpatialHashingCollisionManager< HashTable >::hash_table
protected

objects in the scene limit (given by scene_min and scene_max) are in the spatial hash table

Referenced by fcl::SpatialHashingCollisionManager< HashTable >::SpatialHashingCollisionManager(), and fcl::SpatialHashingCollisionManager< HashTable >::~SpatialHashingCollisionManager().

template<typename HashTable = SimpleHashTable<AABB, CollisionObject*, SpatialHash>>
std::map<CollisionObject*, AABB> fcl::SpatialHashingCollisionManager< HashTable >::obj_aabb_map
protected

store the map between objects and their aabbs. will make update more convenient

template<typename HashTable = SimpleHashTable<AABB, CollisionObject*, SpatialHash>>
std::list<CollisionObject*> fcl::SpatialHashingCollisionManager< HashTable >::objs
protected
template<typename HashTable = SimpleHashTable<AABB, CollisionObject*, SpatialHash>>
std::list<CollisionObject*> fcl::SpatialHashingCollisionManager< HashTable >::objs_outside_scene_limit
protected

objects outside the scene limit are in another list

template<typename HashTable = SimpleHashTable<AABB, CollisionObject*, SpatialHash>>
AABB fcl::SpatialHashingCollisionManager< HashTable >::scene_limit
protected

the size of the scene