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