Blender V2.61 - r43446
|
#include <btSubSimplexConvexCast.h>
Public Member Functions | |
btSubsimplexConvexCast (const btConvexShape *shapeA, const btConvexShape *shapeB, btSimplexSolverInterface *simplexSolver) | |
virtual bool | calcTimeOfImpact (const btTransform &fromA, const btTransform &toA, const btTransform &fromB, const btTransform &toB, CastResult &result) |
btSubsimplexConvexCast implements Gino van den Bergens' paper "Ray Casting against bteral Convex Objects with Application to Continuous Collision Detection" GJK based Ray Cast, optimized version Objects should not start in overlap, otherwise results are not defined.
Definition at line 28 of file btSubSimplexConvexCast.h.
btSubsimplexConvexCast::btSubsimplexConvexCast | ( | const btConvexShape * | shapeA, |
const btConvexShape * | shapeB, | ||
btSimplexSolverInterface * | simplexSolver | ||
) |
Definition at line 25 of file btSubSimplexConvexCast.cpp.
bool btSubsimplexConvexCast::calcTimeOfImpact | ( | const btTransform & | fromA, |
const btTransform & | toA, | ||
const btTransform & | fromB, | ||
const btTransform & | toB, | ||
CastResult & | result | ||
) | [virtual] |
SimsimplexConvexCast calculateTimeOfImpact calculates the time of impact+normal for the linear cast (sweep) between two moving objects. Precondition is that objects should not penetration/overlap at the start from the interval. Overlap can be tested using btGjkPairDetector.
take relative motion
Just like regular GJK only add the vertex if it isn't already (close) to current vertex, it would lead to divisions by zero and NaN etc.
Implements btConvexCast.
Definition at line 38 of file btSubSimplexConvexCast.cpp.
References KDL::epsilon, btTransform::getBasis(), btTransform::getOrigin(), btConvexCast::CastResult::m_allowedPenetration, btConvexCast::CastResult::m_fraction, btConvexCast::CastResult::m_hitPoint, btConvexCast::CastResult::m_normal, MAX_ITERATIONS, p, SIMD_EPSILON, and simple_enum_gen::w.
Referenced by btConvexConcaveCollisionAlgorithm::calculateTimeOfImpact(), btSoftBodyConcaveCollisionAlgorithm::calculateTimeOfImpact(), and btCollisionWorld::rayTestSingle().