FCL  0.6.0
Flexible Collision Library
fcl::SpatialHashingCollisionManager< S, HashTable > Class Template Reference

spatial hashing collision mananger More...

#include <broadphase_spatialhash.h>

Inheritance diagram for fcl::SpatialHashingCollisionManager< S, HashTable >:
fcl::BroadPhaseCollisionManager< S >

Public Member Functions

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

Static Public Member Functions

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

Protected Member Functions

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

Protected Attributes

std::list< CollisionObject< S > * > objs
 all objects in the scene
 
std::list< CollisionObject< S > * > objs_partially_penetrating_scene_limit
 objects partially penetrating (not totally inside nor outside) the scene limit are in another list
 
std::list< CollisionObject< S > * > objs_outside_scene_limit
 objects outside the scene limit are in another list
 
AABB< S > scene_limit
 the size of the scene
 
std::map< CollisionObject< S > *, AABB< S > > obj_aabb_map
 store the map between objects and their aabbs. will make update more convenient
 
HashTable * hash_table
 objects in the scene limit (given by scene_min and scene_max) are in the spatial hash table
 
- Protected Attributes inherited from fcl::BroadPhaseCollisionManager< S >
std::set< std::pair< CollisionObject< S > *, CollisionObject< S > * > > 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.
 
bool enable_tested_set_
 

Detailed Description

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

spatial hashing collision mananger


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