Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
fcl::IntervalTreeCollisionManager Class Reference

Collision manager based on interval tree. More...

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

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

Classes

struct  EndPoint
 SAP end point. More...
 
struct  SAPInterval
 Extention interval tree's interval to SAP interval, adding more information. More...
 

Public Member Functions

 IntervalTreeCollisionManager ()
 
 ~IntervalTreeCollisionManager ()
 
void registerObject (CollisionObject *obj)
 remove one object from the manager More...
 
void unregisterObject (CollisionObject *obj)
 add one object to 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 to 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...
 

Protected Member Functions

bool checkColl (std::deque< SimpleInterval *>::const_iterator pos_start, std::deque< SimpleInterval *>::const_iterator pos_end, CollisionObject *obj, void *cdata, CollisionCallBack callback) const
 
bool checkDist (std::deque< SimpleInterval *>::const_iterator pos_start, std::deque< SimpleInterval *>::const_iterator pos_end, CollisionObject *obj, void *cdata, DistanceCallBack callback, FCL_REAL &min_dist) const
 
bool collide_ (CollisionObject *obj, void *cdata, CollisionCallBack callback) const
 
bool distance_ (CollisionObject *obj, void *cdata, DistanceCallBack callback, FCL_REAL &min_dist) const
 
- Protected Member Functions inherited from fcl::BroadPhaseCollisionManager
bool inTestedSet (CollisionObject *a, CollisionObject *b) const
 
void insertTestedSet (CollisionObject *a, CollisionObject *b) const
 

Protected Attributes

std::vector< EndPointendpoints [3]
 vector stores all the end points More...
 
IntervalTreeinterval_trees [3]
 interval tree manages the intervals More...
 
std::map< CollisionObject *, SAPInterval * > obj_interval_maps [3]
 
bool setup_
 tag for whether the interval tree is maintained suitably 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

Collision manager based on interval tree.

Constructor & Destructor Documentation

◆ IntervalTreeCollisionManager()

fcl::IntervalTreeCollisionManager::IntervalTreeCollisionManager ( )
inline

References interval_trees.

◆ ~IntervalTreeCollisionManager()

fcl::IntervalTreeCollisionManager::~IntervalTreeCollisionManager ( )
inline

Member Function Documentation

◆ checkColl()

bool fcl::IntervalTreeCollisionManager::checkColl ( std::deque< SimpleInterval *>::const_iterator  pos_start,
std::deque< SimpleInterval *>::const_iterator  pos_end,
CollisionObject obj,
void *  cdata,
CollisionCallBack  callback 
) const
protected

◆ checkDist()

bool fcl::IntervalTreeCollisionManager::checkDist ( std::deque< SimpleInterval *>::const_iterator  pos_start,
std::deque< SimpleInterval *>::const_iterator  pos_end,
CollisionObject obj,
void *  cdata,
DistanceCallBack  callback,
FCL_REAL min_dist 
) const
protected

◆ clear()

void fcl::IntervalTreeCollisionManager::clear ( )
virtual

clear the manager

Implements fcl::BroadPhaseCollisionManager.

Referenced by ~IntervalTreeCollisionManager().

◆ collide() [1/3]

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

Referenced by ~IntervalTreeCollisionManager().

◆ collide() [2/3]

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

◆ collide() [3/3]

void fcl::IntervalTreeCollisionManager::collide ( BroadPhaseCollisionManager other_manager,
void *  cdata,
CollisionCallBack  callback 
) const
virtual

perform collision test with objects belonging to another manager

Implements fcl::BroadPhaseCollisionManager.

◆ collide_()

bool fcl::IntervalTreeCollisionManager::collide_ ( CollisionObject obj,
void *  cdata,
CollisionCallBack  callback 
) const
protected

◆ distance() [1/3]

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

Referenced by ~IntervalTreeCollisionManager().

◆ distance() [2/3]

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

◆ distance() [3/3]

void fcl::IntervalTreeCollisionManager::distance ( BroadPhaseCollisionManager other_manager,
void *  cdata,
DistanceCallBack  callback 
) const
virtual

perform distance test with objects belonging to another manager

Implements fcl::BroadPhaseCollisionManager.

◆ distance_()

bool fcl::IntervalTreeCollisionManager::distance_ ( CollisionObject obj,
void *  cdata,
DistanceCallBack  callback,
FCL_REAL min_dist 
) const
protected

◆ empty()

bool fcl::IntervalTreeCollisionManager::empty ( ) const
virtual

whether the manager is empty

Implements fcl::BroadPhaseCollisionManager.

Referenced by ~IntervalTreeCollisionManager().

◆ getObjects()

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

return the objects managed by the manager

Implements fcl::BroadPhaseCollisionManager.

Referenced by ~IntervalTreeCollisionManager().

◆ registerObject()

void fcl::IntervalTreeCollisionManager::registerObject ( CollisionObject obj)
virtual

remove one object from the manager

Implements fcl::BroadPhaseCollisionManager.

Referenced by ~IntervalTreeCollisionManager().

◆ setup()

void fcl::IntervalTreeCollisionManager::setup ( )
virtual

initialize the manager, related with the specific type of manager

Implements fcl::BroadPhaseCollisionManager.

Referenced by ~IntervalTreeCollisionManager().

◆ size()

size_t fcl::IntervalTreeCollisionManager::size ( ) const
inlinevirtual

the number of objects managed by the manager

Implements fcl::BroadPhaseCollisionManager.

References endpoints.

◆ unregisterObject()

void fcl::IntervalTreeCollisionManager::unregisterObject ( CollisionObject obj)
virtual

add one object to the manager

Implements fcl::BroadPhaseCollisionManager.

Referenced by ~IntervalTreeCollisionManager().

◆ update() [1/3]

void fcl::IntervalTreeCollisionManager::update ( )
virtual

update the condition of manager

Implements fcl::BroadPhaseCollisionManager.

Referenced by ~IntervalTreeCollisionManager().

◆ update() [2/3]

void fcl::IntervalTreeCollisionManager::update ( CollisionObject updated_obj)
virtual

update the manager by explicitly given the object updated

Reimplemented from fcl::BroadPhaseCollisionManager.

◆ update() [3/3]

void fcl::IntervalTreeCollisionManager::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

◆ endpoints

std::vector<EndPoint> fcl::IntervalTreeCollisionManager::endpoints[3]
protected

vector stores all the end points

Referenced by size().

◆ interval_trees

IntervalTree* fcl::IntervalTreeCollisionManager::interval_trees[3]
protected

interval tree manages the intervals

Referenced by IntervalTreeCollisionManager().

◆ obj_interval_maps

std::map<CollisionObject*, SAPInterval*> fcl::IntervalTreeCollisionManager::obj_interval_maps[3]
protected

◆ setup_

bool fcl::IntervalTreeCollisionManager::setup_
protected

tag for whether the interval tree is maintained suitably