ReactPhysics3D
v0.10.2
C++ Physics engine library
|
This class implements the Separating Axis Theorem algorithm (SAT). More...
#include <include/reactphysics3d/collision/narrowphase/SAT/SATAlgorithm.h>
Public Member Functions | |
SATAlgorithm (bool clipWithPreviousAxisIfStillColliding, MemoryAllocator &memoryAllocator) | |
Constructor. | |
~SATAlgorithm ()=default | |
Destructor. | |
SATAlgorithm (const SATAlgorithm &algorithm)=delete | |
Deleted copy-constructor. | |
SATAlgorithm & | operator= (const SATAlgorithm &algorithm)=delete |
Deleted assignment operator. | |
bool | testCollisionSphereVsConvexPolyhedron (NarrowPhaseInfoBatch &narrowPhaseInfoBatch, uint32 batchStartIndex, uint32 batchNbItems) const |
Test collision between a sphere and a convex mesh. | |
bool | testCollisionCapsuleVsConvexPolyhedron (NarrowPhaseInfoBatch &narrowPhaseInfoBatch, uint32 batchIndex) const |
Test collision between a capsule and a convex mesh. | |
bool | computeCapsulePolyhedronFaceContactPoints (uint32 referenceFaceIndex, decimal capsuleRadius, const ConvexPolyhedronShape *polyhedron, decimal penetrationDepth, const Transform &polyhedronToCapsuleTransform, Vector3 &normalWorld, const Vector3 &separatingAxisCapsuleSpace, const Vector3 &capsuleSegAPolyhedronSpace, const Vector3 &capsuleSegBPolyhedronSpace, NarrowPhaseInfoBatch &narrowPhaseInfoBatch, uint32 batchIndex, bool isCapsuleShape1) const |
Compute the two contact points between a polyhedron and a capsule when the separating axis is a face normal of the polyhedron. | |
bool | isMinkowskiFaceCapsuleVsEdge (const Vector3 &capsuleSegment, const Vector3 &edgeAdjacentFace1Normal, const Vector3 &edgeAdjacentFace2Normal) const |
bool | testCollisionConvexPolyhedronVsConvexPolyhedron (NarrowPhaseInfoBatch &narrowPhaseInfoBatch, uint32 batchStartIndex, uint32 batchNbItems) const |
Test collision between two convex meshes. | |
This class implements the Separating Axis Theorem algorithm (SAT).
This algorithm is used to find the axis of minimum penetration between two convex polyhedra. If none is found, the objects are separated. Otherwise, the two objects are in contact and we use clipping to get the contact points.