Class IntervalTreeCollisionManager

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class IntervalTreeCollisionManager : public coal::BroadPhaseCollisionManager

Collision manager based on interval tree.

Public Types

typedef BroadPhaseCollisionManager Base

Public Functions

IntervalTreeCollisionManager()
~IntervalTreeCollisionManager()
virtual void registerObject(CollisionObject *obj)

remove one object from the manager

virtual void unregisterObject(CollisionObject *obj)

add one object to the manager

virtual void setup()

initialize the manager, related with the specific type of manager

virtual void update()

update the condition of manager

virtual void update(CollisionObject *updated_obj)

update the manager by explicitly given the object updated

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

update the manager by explicitly given the set of objects update

virtual void clear()

clear the manager

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

return the objects managed by the manager

virtual void collide(CollisionObject *obj, CollisionCallBackBase *callback) const

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

virtual void distance(CollisionObject *obj, DistanceCallBackBase *callback) const

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

virtual void collide(CollisionCallBackBase *callback) const

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

virtual void distance(DistanceCallBackBase *callback) const

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

virtual void collide(BroadPhaseCollisionManager *other_manager, CollisionCallBackBase *callback) const

perform collision test with objects belonging to another manager

virtual void distance(BroadPhaseCollisionManager *other_manager, DistanceCallBackBase *callback) const

perform distance test with objects belonging to another manager

virtual bool empty() const

whether the manager is empty

virtual 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

inline virtual std::vector<CollisionObject*> getObjects() const

return the objects managed by the manager

Protected Functions

bool checkColl(typename std::deque<detail::SimpleInterval*>::const_iterator pos_start, typename std::deque<detail::SimpleInterval*>::const_iterator pos_end, CollisionObject *obj, CollisionCallBackBase *callback) const
bool checkDist(typename std::deque<detail::SimpleInterval*>::const_iterator pos_start, typename std::deque<detail::SimpleInterval*>::const_iterator pos_end, CollisionObject *obj, DistanceCallBackBase *callback, CoalScalar &min_dist) const
bool collide_(CollisionObject *obj, CollisionCallBackBase *callback) const
bool distance_(CollisionObject *obj, DistanceCallBackBase *callback, CoalScalar &min_dist) const

Protected Attributes

std::vector<EndPoint> endpoints[3]

vector stores all the end points

detail::IntervalTree *interval_trees[3]

interval tree manages the intervals

std::map<CollisionObject*, SAPInterval*> obj_interval_maps[3]
bool setup_

tag for whether the interval tree is maintained suitably

struct EndPoint

SAP end point.

SAP end point

Public Functions

bool operator<(const EndPoint &p) const

Public Members

CollisionObject *obj

object related with the end point

CoalScalar value

end point value

char minmax

tag for whether it is a lower bound or higher bound of an interval, 0 for lo, and 1 for hi

struct SAPInterval : public coal::detail::SimpleInterval

Extention interval tree’s interval to SAP interval, adding more information.

Public Functions

SAPInterval(CoalScalar low_, CoalScalar high_, CollisionObject *obj_)

Public Members

CollisionObject *obj