CollisionDetectionAlgorithm Class Reference

#include <CollisionDetectionAlgorithm.h>

Inheritance diagram for CollisionDetectionAlgorithm:

CollisionDetectionAlgorithm::HalfSpaceSphere CollisionDetectionAlgorithm::HalfSpaceTriangleMesh CollisionDetectionAlgorithm::SphereSphere CollisionDetectionAlgorithm::SphereTriangleMesh CollisionDetectionAlgorithm::TriangleMeshTriangleMesh

List of all members.


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().

Public Member Functions

virtual void processObjects (int index1, const ContactGeometry &object1, const Transform &transform1, int index2, const ContactGeometry &object2, const Transform &transform2, std::vector< 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.

Classes

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...


Member Function Documentation

virtual void processObjects ( int  index1,
const ContactGeometry object1,
const Transform transform1,
int  index2,
const ContactGeometry object2,
const Transform transform2,
std::vector< 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 CollisionDetectionAlgorithm::HalfSpaceSphere, CollisionDetectionAlgorithm::SphereSphere, CollisionDetectionAlgorithm::HalfSpaceTriangleMesh, CollisionDetectionAlgorithm::SphereTriangleMesh, and CollisionDetectionAlgorithm::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

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


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

Generated on Fri Sep 26 07:44:31 2008 for SimTKcore by  doxygen 1.5.6