coal 3.0.1
Coal, The Collision Detection Library. Previously known as HPP-FCL, fork of FCL -- The Flexible Collision Library
Loading...
Searching...
No Matches
coal::SaPCollisionManager Class Reference

Rigorous SAP collision manager. More...

#include <coal/broadphase/broadphase_SaP.h>

Inheritance diagram for coal::SaPCollisionManager:
Collaboration diagram for coal::SaPCollisionManager:

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 Types

typedef BroadPhaseCollisionManager Base
 

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
 
virtual 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, CollisionCallBackBase *callback) const
 perform collision test between one object and all the objects belonging to the manager
 
void distance (CollisionObject *obj, DistanceCallBackBase *callback) const
 perform distance computation between one object and all the objects belonging to the manager
 
void collide (CollisionCallBackBase *callback) const
 perform collision test for the objects belonging to the manager (i.e., N^2 self collision)
 
void distance (DistanceCallBackBase *callback) const
 perform distance test for the objects belonging to the manager (i.e., N^2 self distance)
 
void collide (BroadPhaseCollisionManager *other_manager, CollisionCallBackBase *callback) const
 perform collision test with objects belonging to another manager
 
void distance (BroadPhaseCollisionManager *other_manager, DistanceCallBackBase *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
 
virtual void getObjects (std::vector< CollisionObject * > &objs) const=0
 return the objects managed by the manager
 
virtual std::vector< CollisionObject * > getObjects () const
 return the objects managed by the manager
 
- Public Member Functions inherited from coal::BroadPhaseCollisionManager
 BroadPhaseCollisionManager ()
 
virtual ~BroadPhaseCollisionManager ()
 

Protected Member Functions

void update_ (SaPAABB *updated_aabb)
 
void updateVelist ()
 
bool distance_ (CollisionObject *obj, DistanceCallBackBase *callback, Scalar &min_dist) const
 
bool collide_ (CollisionObject *obj, CollisionCallBackBase *callback) const
 
void addToOverlapPairs (const SaPPair &p)
 
void removeFromOverlapPairs (const SaPPair &p)
 
- Protected Member Functions inherited from coal::BroadPhaseCollisionManager
bool inTestedSet (CollisionObject *a, CollisionObject *b) const
 
void insertTestedSet (CollisionObject *a, CollisionObject *b) const
 

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.
 
int optimal_axis
 
std::map< CollisionObject *, SaPAABB * > obj_aabb_map
 
- Protected Attributes inherited from coal::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.
 
bool enable_tested_set_
 

Detailed Description

Rigorous SAP collision manager.

Member Typedef Documentation

◆ Base

Constructor & Destructor Documentation

◆ SaPCollisionManager()

coal::SaPCollisionManager::SaPCollisionManager ( )

◆ ~SaPCollisionManager()

coal::SaPCollisionManager::~SaPCollisionManager ( )

Member Function Documentation

◆ addToOverlapPairs()

void coal::SaPCollisionManager::addToOverlapPairs ( const SaPPair p)
protected

◆ clear()

void coal::SaPCollisionManager::clear ( )
virtual

clear the manager

Implements coal::BroadPhaseCollisionManager.

◆ collide() [1/3]

void coal::SaPCollisionManager::collide ( BroadPhaseCollisionManager other_manager,
CollisionCallBackBase callback 
) const
virtual

perform collision test with objects belonging to another manager

Implements coal::BroadPhaseCollisionManager.

◆ collide() [2/3]

void coal::SaPCollisionManager::collide ( CollisionCallBackBase callback) const
virtual

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

Implements coal::BroadPhaseCollisionManager.

◆ collide() [3/3]

void coal::SaPCollisionManager::collide ( CollisionObject obj,
CollisionCallBackBase callback 
) const
virtual

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

Implements coal::BroadPhaseCollisionManager.

◆ collide_()

bool coal::SaPCollisionManager::collide_ ( CollisionObject obj,
CollisionCallBackBase callback 
) const
protected

◆ distance() [1/3]

void coal::SaPCollisionManager::distance ( BroadPhaseCollisionManager other_manager,
DistanceCallBackBase callback 
) const
virtual

perform distance test with objects belonging to another manager

Implements coal::BroadPhaseCollisionManager.

◆ distance() [2/3]

void coal::SaPCollisionManager::distance ( CollisionObject obj,
DistanceCallBackBase callback 
) const
virtual

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

Implements coal::BroadPhaseCollisionManager.

◆ distance() [3/3]

void coal::SaPCollisionManager::distance ( DistanceCallBackBase callback) const
virtual

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

Implements coal::BroadPhaseCollisionManager.

◆ distance_()

bool coal::SaPCollisionManager::distance_ ( CollisionObject obj,
DistanceCallBackBase callback,
Scalar min_dist 
) const
protected

◆ empty()

bool coal::SaPCollisionManager::empty ( ) const
virtual

whether the manager is empty

Implements coal::BroadPhaseCollisionManager.

◆ getObjects() [1/3]

virtual std::vector< CollisionObject * > coal::BroadPhaseCollisionManager::getObjects ( ) const
inlinevirtual

return the objects managed by the manager

Reimplemented from coal::BroadPhaseCollisionManager.

◆ getObjects() [2/3]

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

return the objects managed by the manager

Implements coal::BroadPhaseCollisionManager.

◆ getObjects() [3/3]

virtual void coal::BroadPhaseCollisionManager::getObjects ( std::vector< CollisionObject * > &  objs) const
virtual

return the objects managed by the manager

Implements coal::BroadPhaseCollisionManager.

◆ registerObject()

void coal::SaPCollisionManager::registerObject ( CollisionObject obj)
virtual

remove one object from the manager

Implements coal::BroadPhaseCollisionManager.

◆ registerObjects()

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

add objects to the manager

Reimplemented from coal::BroadPhaseCollisionManager.

◆ removeFromOverlapPairs()

void coal::SaPCollisionManager::removeFromOverlapPairs ( const SaPPair p)
protected

◆ setup()

void coal::SaPCollisionManager::setup ( )
virtual

initialize the manager, related with the specific type of manager

Implements coal::BroadPhaseCollisionManager.

◆ size()

size_t coal::SaPCollisionManager::size ( ) const
virtual

the number of objects managed by the manager

Implements coal::BroadPhaseCollisionManager.

◆ unregisterObject()

void coal::SaPCollisionManager::unregisterObject ( CollisionObject obj)
virtual

add one object to the manager

Implements coal::BroadPhaseCollisionManager.

◆ update() [1/3]

virtual void coal::SaPCollisionManager::update ( )
virtual

update the condition of manager

Implements coal::BroadPhaseCollisionManager.

◆ update() [2/3]

void coal::SaPCollisionManager::update ( CollisionObject updated_obj)
virtual

update the manager by explicitly given the object updated

Reimplemented from coal::BroadPhaseCollisionManager.

◆ update() [3/3]

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

update the manager by explicitly given the set of objects update

Reimplemented from coal::BroadPhaseCollisionManager.

◆ update_()

void coal::SaPCollisionManager::update_ ( SaPAABB updated_aabb)
protected

◆ updateVelist()

void coal::SaPCollisionManager::updateVelist ( )
protected

Member Data Documentation

◆ AABB_arr

std::list<SaPAABB*> coal::SaPCollisionManager::AABB_arr
protected

SAP interval list.

◆ elist

EndPoint* coal::SaPCollisionManager::elist[3]
protected

End point list for x, y, z coordinates.

◆ obj_aabb_map

std::map<CollisionObject*, SaPAABB*> coal::SaPCollisionManager::obj_aabb_map
protected

◆ optimal_axis

int coal::SaPCollisionManager::optimal_axis
protected

◆ overlap_pairs

std::list<SaPPair> coal::SaPCollisionManager::overlap_pairs
protected

The pair of objects that should further check for collision.

◆ velist

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

vector version of elist, for acceleration


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