1 #ifndef SimTK_SIMMATH_COLLISION_DETECTION_ALGORITHM_H_ 
    2 #define SimTK_SIMMATH_COLLISION_DETECTION_ALGORITHM_H_ 
  100     :   
public std::map<std::pair<ContactGeometryTypeId, ContactGeometryTypeId>, 
 
  101                         CollisionDetectionAlgorithm*> 
 
  106     static AlgorithmMap algorithmMap;
 
  174                     Real xoffset, std::set<int>& insideFaces) 
const;
 
  176                          std::set<int>& insideFaces) 
const;
 
  194     void processBox(
const Vec3& center, 
Real radius2, 
 
  197                     std::set<int>& insideFaces) 
const;
 
  220                       const Transform& transform, std::set<int>& triangles1, 
 
  221                       std::set<int>& triangles2) 
const;
 
  225                              std::set<int>& triangles) 
const;
 
  228                   int index, 
int depth) 
const;
 
  229     static const int OUTSIDE = -1;
 
  230     static const int UNKNOWN = 0;
 
  231     static const int BOUNDARY = 1;
 
  232     static const int INSIDE = 2;
 
  252     static void addContact
 
Includes internal headers providing declarations for the basic SimTK Core classes,...
 
This is the header file that every Simmath compilation unit should include first.
 
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
 
The Array_<T> container class is a plug-compatible replacement for the C++ standard template library ...
Definition: Array.h:1520
 
This algorithm detects contacts between two ContactGeometry::Convex objects.
Definition: CollisionDetectionAlgorithm.h:239
 
void processObjects(ContactSurfaceIndex index1, const ContactGeometry &object1, const Transform &transform1, ContactSurfaceIndex index2, const ContactGeometry &object2, const Transform &transform2, Array_< Contact > &contacts) const override
Identify contacts between a pair of bodies.
 
virtual ~ConvexConvex()
Definition: CollisionDetectionAlgorithm.h:241
 
This algorithm detects contacts between a ContactGeometry::HalfSpace and a ContactGeometry::Ellipsoid...
Definition: CollisionDetectionAlgorithm.h:130
 
virtual ~HalfSpaceEllipsoid()
Definition: CollisionDetectionAlgorithm.h:132
 
void processObjects(ContactSurfaceIndex index1, const ContactGeometry &object1, const Transform &transform1, ContactSurfaceIndex index2, const ContactGeometry &object2, const Transform &transform2, Array_< Contact > &contacts) const override
Identify contacts between a pair of bodies.
 
This algorithm detects contacts between a ContactGeometry::HalfSpace and a ContactGeometry::Sphere.
Definition: CollisionDetectionAlgorithm.h:114
 
virtual ~HalfSpaceSphere()
Definition: CollisionDetectionAlgorithm.h:116
 
void processObjects(ContactSurfaceIndex index1, const ContactGeometry &object1, const Transform &transform1, ContactSurfaceIndex index2, const ContactGeometry &object2, const Transform &transform2, Array_< Contact > &contacts) const override
Identify contacts between a pair of bodies.
 
This algorithm detects contacts between a ContactGeometry::HalfSpace and a ContactGeometry::TriangleM...
Definition: CollisionDetectionAlgorithm.h:161
 
void processObjects(ContactSurfaceIndex index1, const ContactGeometry &object1, const Transform &transform1, ContactSurfaceIndex index2, const ContactGeometry &object2, const Transform &transform2, Array_< Contact > &contacts) const override
Identify contacts between a pair of bodies.
 
virtual ~HalfSpaceTriangleMesh()
Definition: CollisionDetectionAlgorithm.h:163
 
This algorithm detects contacts between two ContactGeometry::Sphere objects.
Definition: CollisionDetectionAlgorithm.h:145
 
void processObjects(ContactSurfaceIndex index1, const ContactGeometry &object1, const Transform &transform1, ContactSurfaceIndex index2, const ContactGeometry &object2, const Transform &transform2, Array_< Contact > &contacts) const override
Identify contacts between a pair of bodies.
 
virtual ~SphereSphere()
Definition: CollisionDetectionAlgorithm.h:147
 
This algorithm detects contacts between a ContactGeometry::Sphere and a ContactGeometry::TriangleMesh...
Definition: CollisionDetectionAlgorithm.h:184
 
void processObjects(ContactSurfaceIndex index1, const ContactGeometry &object1, const Transform &transform1, ContactSurfaceIndex index2, const ContactGeometry &object2, const Transform &transform2, Array_< Contact > &contacts) const override
Identify contacts between a pair of bodies.
 
virtual ~SphereTriangleMesh()
Definition: CollisionDetectionAlgorithm.h:186
 
This algorithm detects contacts between two ContactGeometry::TriangleMesh objects.
Definition: CollisionDetectionAlgorithm.h:205
 
void processObjects(ContactSurfaceIndex index1, const ContactGeometry &object1, const Transform &transform1, ContactSurfaceIndex index2, const ContactGeometry &object2, const Transform &transform2, Array_< Contact > &contacts) const override
Identify contacts between a pair of bodies.
 
virtual ~TriangleMeshTriangleMesh()
Definition: CollisionDetectionAlgorithm.h:207
 
A CollisionDetectionAlgorithm implements an algorithm for detecting overlaps between pairs of Contact...
Definition: CollisionDetectionAlgorithm.h:43
 
static CollisionDetectionAlgorithm * getAlgorithm(ContactGeometryTypeId type1, ContactGeometryTypeId type2)
Get the CollisionDetectionAlgorithm to use for identifying contacts between bodies of two specific ty...
 
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.
 
virtual ~CollisionDetectionAlgorithm()
Definition: CollisionDetectionAlgorithm.h:52
 
static void registerAlgorithm(ContactGeometryTypeId type1, ContactGeometryTypeId type2, CollisionDetectionAlgorithm *algorithm)
Register a CollisionDetectionAlgorithm to be used for identifying contacts between bodies of two spec...
 
This class represents a small matrix whose size is known at compile time, containing elements of any ...
Definition: Mat.h:97
 
This class represents a rectangular box with arbitrary position and orientation.
Definition: OrientedBoundingBox.h:42
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double.
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:607