Classes | Public Member Functions | Protected Member Functions | Protected Attributes
fcl::SaPCollisionManager Class Reference

Rigorous SAP collision manager. More...

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

Inheritance diagram for fcl::SaPCollisionManager:
[legend]
Collaboration diagram for fcl::SaPCollisionManager:
[legend]

List of all members.

Classes

struct  EndPoint
 End point for an interval. More...
class  isNotValidPair
 Functor to help remove collision pairs no longer valid (i.e., should be culled away) More...
class  isUnregistered
 Functor to help unregister one object. More...
struct  SaPAABB
 SAP interval for one object. More...
struct  SaPPair
 A pair of objects that are not culling away and should further check collision. More...

Public Member Functions

 SaPCollisionManager ()
 ~SaPCollisionManager ()
void registerObjects (const std::vector< CollisionObject * > &other_objs)
 add objects to the manager
void registerObject (CollisionObject *obj)
 remove one object from the manager
void unregisterObject (CollisionObject *obj)
 add one object to the manager
void setup ()
 initialize the manager, related with the specific type of manager
void update ()
 update the condition of manager
void update (CollisionObject *updated_obj)
 update the manager by explicitly given the object updated
void update (const std::vector< CollisionObject * > &updated_objs)
 update the manager by explicitly given the set of objects update
void clear ()
 clear the manager
void getObjects (std::vector< CollisionObject * > &objs) const
 return the objects managed by the manager
void collide (CollisionObject *obj, void *cdata, CollisionCallBack callback) const
 perform collision test between one object and all the objects belonging to the manager
void distance (CollisionObject *obj, void *cdata, DistanceCallBack callback) const
 perform distance computation between one object and all the objects belonging to the manager
void collide (void *cdata, CollisionCallBack callback) const
 perform collision test for the objects belonging to the manager (i.e., N^2 self collision)
void distance (void *cdata, DistanceCallBack callback) const
 perform distance test for the objects belonging to the manager (i.e., N^2 self distance)
void collide (BroadPhaseCollisionManager *other_manager, void *cdata, CollisionCallBack callback) const
 perform collision test with objects belonging to another manager
void distance (BroadPhaseCollisionManager *other_manager, void *cdata, DistanceCallBack 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

Protected Member Functions

void update_ (SaPAABB *updated_aabb)
void updateVelist ()
bool distance_ (CollisionObject *obj, void *cdata, DistanceCallBack callback, FCL_REAL &min_dist) const
bool collide_ (CollisionObject *obj, void *cdata, CollisionCallBack callback) const
void addToOverlapPairs (const SaPPair &p)
void removeFromOverlapPairs (const SaPPair &p)

Protected Attributes

EndPointelist [3]
 End point list for x, y, z coordinates.
std::vector< EndPoint * > velist [3]
 vector version of elist, for acceleration
std::list< SaPAABB * > AABB_arr
 SAP interval list.
std::list< SaPPairoverlap_pairs
 The pair of objects that should further check for collision.
size_t optimal_axis
std::map< CollisionObject
*, SaPAABB * > 
obj_aabb_map

Detailed Description

Rigorous SAP collision manager.


Constructor & Destructor Documentation

fcl::SaPCollisionManager::SaPCollisionManager ( ) [inline]

References elist, and optimal_axis.

fcl::SaPCollisionManager::~SaPCollisionManager ( ) [inline]

References clear().


Member Function Documentation

void fcl::SaPCollisionManager::addToOverlapPairs ( const SaPPair p) [inline, protected]

References overlap_pairs.

void fcl::SaPCollisionManager::clear ( ) [virtual]

clear the manager

Implements fcl::BroadPhaseCollisionManager.

Referenced by ~SaPCollisionManager().

void fcl::SaPCollisionManager::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.

void fcl::SaPCollisionManager::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.

void fcl::SaPCollisionManager::collide ( BroadPhaseCollisionManager other_manager,
void *  cdata,
CollisionCallBack  callback 
) const [virtual]

perform collision test with objects belonging to another manager

Implements fcl::BroadPhaseCollisionManager.

bool fcl::SaPCollisionManager::collide_ ( CollisionObject obj,
void *  cdata,
CollisionCallBack  callback 
) const [protected]
void fcl::SaPCollisionManager::distance ( CollisionObject obj,
void *  cdata,
DistanceCallBack  callback 
) const [virtual]

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

Implements fcl::BroadPhaseCollisionManager.

void fcl::SaPCollisionManager::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.

void fcl::SaPCollisionManager::distance ( BroadPhaseCollisionManager other_manager,
void *  cdata,
DistanceCallBack  callback 
) const [virtual]

perform distance test with objects belonging to another manager

Implements fcl::BroadPhaseCollisionManager.

bool fcl::SaPCollisionManager::distance_ ( CollisionObject obj,
void *  cdata,
DistanceCallBack  callback,
FCL_REAL min_dist 
) const [protected]
bool fcl::SaPCollisionManager::empty ( ) const [virtual]

whether the manager is empty

Implements fcl::BroadPhaseCollisionManager.

void fcl::SaPCollisionManager::getObjects ( std::vector< CollisionObject * > &  objs) const [virtual]

return the objects managed by the manager

Implements fcl::BroadPhaseCollisionManager.

void fcl::SaPCollisionManager::registerObject ( CollisionObject obj) [virtual]

remove one object from the manager

Implements fcl::BroadPhaseCollisionManager.

void fcl::SaPCollisionManager::registerObjects ( const std::vector< CollisionObject * > &  other_objs) [virtual]

add objects to the manager

Reimplemented from fcl::BroadPhaseCollisionManager.

void fcl::SaPCollisionManager::removeFromOverlapPairs ( const SaPPair p) [inline, protected]

References overlap_pairs.

void fcl::SaPCollisionManager::setup ( ) [virtual]

initialize the manager, related with the specific type of manager

Implements fcl::BroadPhaseCollisionManager.

size_t fcl::SaPCollisionManager::size ( ) const [inline, virtual]

the number of objects managed by the manager

Implements fcl::BroadPhaseCollisionManager.

References AABB_arr.

Referenced by updateVelist().

void fcl::SaPCollisionManager::unregisterObject ( CollisionObject obj) [virtual]

add one object to the manager

Implements fcl::BroadPhaseCollisionManager.

void fcl::SaPCollisionManager::update ( ) [virtual]

update the condition of manager

Implements fcl::BroadPhaseCollisionManager.

void fcl::SaPCollisionManager::update ( CollisionObject updated_obj) [virtual]

update the manager by explicitly given the object updated

Reimplemented from fcl::BroadPhaseCollisionManager.

void fcl::SaPCollisionManager::update ( const std::vector< CollisionObject * > &  updated_objs) [virtual]

update the manager by explicitly given the set of objects update

Reimplemented from fcl::BroadPhaseCollisionManager.

void fcl::SaPCollisionManager::update_ ( SaPAABB updated_aabb) [protected]
void fcl::SaPCollisionManager::updateVelist ( ) [inline, protected]

Member Data Documentation

SAP interval list.

Referenced by size().

End point list for x, y, z coordinates.

Referenced by SaPCollisionManager(), and updateVelist().

Referenced by SaPCollisionManager().

The pair of objects that should further check for collision.

Referenced by addToOverlapPairs(), and removeFromOverlapPairs().

std::vector<EndPoint*> fcl::SaPCollisionManager::velist[3] [protected]

vector version of elist, for acceleration

Referenced by updateVelist().

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines