CollisionDetectionAlgorithm Class Reference

A CollisionDetectionAlgorithm implements an algorithm for detecting overlaps between pairs of ContactGeometry objects, and creating Contact objects based on them. More...

#include <CollisionDetectionAlgorithm.h>

Inheritance diagram for CollisionDetectionAlgorithm:
HalfSpaceSphere HalfSpaceTriangleMesh SphereSphere SphereTriangleMesh TriangleMeshTriangleMesh

List of all members.

Classes

struct  AlgorithmMap
class  HalfSpaceSphere
 This algorithm detects contacts between a ContactGeometry::HalfSpace and a ContactGeometry::Sphere. More...
class  HalfSpaceTriangleMesh
 This algorithm detects contacts between a ContactGeometry::HalfSpace and a ContactGeometry::TriangleMesh. More...
class  SphereSphere
 This algorithm detects contacts between two ContactGeometry::Sphere objects. More...
class  SphereTriangleMesh
 This algorithm detects contacts between a ContactGeometry::Sphere and a ContactGeometry::TriangleMesh. More...
class  TriangleMeshTriangleMesh
 This algorithm detects contacts between two ContactGeometry::TriangleMesh objects. More...

Public Member Functions

virtual ~CollisionDetectionAlgorithm ()
virtual void processObjects (ContactSurfaceIndex index1, const ContactGeometry &object1, const Transform &transform1, ContactSurfaceIndex index2, const ContactGeometry &object2, const Transform &transform2, Array_< Contact > &contacts) const =0
 Identify contacts between a pair of bodies.

Static Public Member Functions

static void registerAlgorithm (const std::string &type1, const std::string &type2, CollisionDetectionAlgorithm *algorithm)
 Register a CollisionDetectionAlgorithm to be used for identifying contacts between bodies of two specific types.
static
CollisionDetectionAlgorithm
getAlgorithm (int typeIndex1, int typeIndex2)
 Get the CollisionDetectionAlgorithm to use for identifying contacts between bodies of two specific types.

Detailed Description

A CollisionDetectionAlgorithm implements an algorithm for detecting overlaps between pairs of ContactGeometry objects, and creating Contact objects based on them.

This class is used internally by GeneralContactSubsystem, and there usually is no reason to access it directly. The exception is if you are defining a new ContactGeometry subclass. In that case, you will also need to define one or more CollisionDetectionAlgorithms to detect collisions with your new geometry type, then register it calling registerAlgorithm().


Constructor & Destructor Documentation

virtual ~CollisionDetectionAlgorithm (  )  [inline, virtual]

Member Function Documentation

static CollisionDetectionAlgorithm* getAlgorithm ( int  typeIndex1,
int  typeIndex2 
) [static]

Get the CollisionDetectionAlgorithm to use for identifying contacts between bodies of two specific types.

Parameters:
typeIndex1 the type index of the first body's ContactGeometry
typeIndex2 the type index of the second body's ContactGeometry
Returns:
the CollisionDetectionAlgorithm to use, or NULL if no suitable algorithm has been registered
virtual void processObjects ( ContactSurfaceIndex  index1,
const ContactGeometry object1,
const Transform transform1,
ContactSurfaceIndex  index2,
const ContactGeometry object2,
const Transform transform2,
Array_< Contact > &  contacts 
) const [pure virtual]

Identify contacts between a pair of bodies.

Parameters:
index1 the index of the first body within its contact set
object1 the ContactGeometry for the first body
transform1 the location and orientation of the first body in the ground frame
index2 the index of the second body within its contact set
object2 the ContactGeometry for the second body
transform2 the location and orientation of the second body in the ground frame
contacts if the bodies overlap, a Contact should be added to this for each distinct contact between them. (Multiple contacts may exist if one of the bodies is concave.)

Implemented in HalfSpaceSphere, SphereSphere, HalfSpaceTriangleMesh, SphereTriangleMesh, and TriangleMeshTriangleMesh.

static void registerAlgorithm ( const std::string &  type1,
const std::string &  type2,
CollisionDetectionAlgorithm algorithm 
) [static]

Register a CollisionDetectionAlgorithm to be used for identifying contacts between bodies of two specific types.

Parameters:
type1 the type identifier for the ContactGeometry subclass the algorithm expects as the first body
type2 the type identifier for the ContactGeometry subclass the algorithm expects as the second body
algorithm the algorithm to use for bodies of the specified types

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

Generated on Thu Aug 12 16:37:57 2010 for SimTKcore by  doxygen 1.6.1