Go to the documentation of this file. 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
271 #endif // SimTK_SIMMATH_COLLISION_DETECTION_ALGORITHM_H_
This algorithm detects contacts between a ContactGeometry::HalfSpace and a ContactGeometry::Ellipsoid...
Definition: CollisionDetectionAlgorithm.h:130
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.
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 ~HalfSpaceEllipsoid()
Definition: CollisionDetectionAlgorithm.h:132
This class represents a rectangular box with arbitrary position and orientation.
Definition: OrientedBoundingBox.h:42
virtual ~ConvexConvex()
Definition: CollisionDetectionAlgorithm.h:241
A CollisionDetectionAlgorithm implements an algorithm for detecting overlaps between pairs of Contact...
Definition: CollisionDetectionAlgorithm.h:43
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.
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
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 ~SphereSphere()
Definition: CollisionDetectionAlgorithm.h:147
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 is a System that represents the dynamics of a particle moving along a smooth surface.
Definition: Assembler.h:37
virtual ~CollisionDetectionAlgorithm()
Definition: CollisionDetectionAlgorithm.h:52
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.
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
This algorithm detects contacts between a ContactGeometry::Sphere and a ContactGeometry::TriangleMesh...
Definition: CollisionDetectionAlgorithm.h:184
virtual ~TriangleMeshTriangleMesh()
Definition: CollisionDetectionAlgorithm.h:207
virtual ~HalfSpaceSphere()
Definition: CollisionDetectionAlgorithm.h:116
static void registerAlgorithm(ContactGeometryTypeId type1, ContactGeometryTypeId type2, CollisionDetectionAlgorithm *algorithm)
Register a CollisionDetectionAlgorithm to be used for identifying contacts between bodies of two spec...
static CollisionDetectionAlgorithm * getAlgorithm(ContactGeometryTypeId type1, ContactGeometryTypeId type2)
Get the CollisionDetectionAlgorithm to use for identifying contacts between bodies of two specific ty...
This algorithm detects contacts between two ContactGeometry::Convex objects.
Definition: CollisionDetectionAlgorithm.h:239
The Array_<T> container class is a plug-compatible replacement for the C++ standard template library ...
Definition: Array.h:53
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:606
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 class represents a small matrix whose size is known at compile time, containing elements of any ...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:620
This algorithm detects contacts between a ContactGeometry::HalfSpace and a ContactGeometry::Sphere.
Definition: CollisionDetectionAlgorithm.h:114
virtual ~SphereTriangleMesh()
Definition: CollisionDetectionAlgorithm.h:186