Blender V4.3
btComputeGjkEpaPenetration.h File Reference

Go to the source code of this file.

Functions

template<typename btConvexTemplate >
bool btGjkEpaCalcPenDepth (const btConvexTemplate &a, const btConvexTemplate &b, const btGjkCollisionDescription &colDesc, btVector3 &v, btVector3 &wWitnessOnA, btVector3 &wWitnessOnB)
 
template<typename btConvexTemplate , typename btGjkDistanceTemplate >
int btComputeGjkEpaPenetration (const btConvexTemplate &a, const btConvexTemplate &b, const btGjkCollisionDescription &colDesc, btVoronoiSimplexSolver &simplexSolver, btGjkDistanceTemplate *distInfo)
 

Function Documentation

◆ btComputeGjkEpaPenetration()

template<typename btConvexTemplate , typename btGjkDistanceTemplate >
int btComputeGjkEpaPenetration ( const btConvexTemplate & a,
const btConvexTemplate & b,
const btGjkCollisionDescription & colDesc,
btVoronoiSimplexSolver & simplexSolver,
btGjkDistanceTemplate * distInfo )

this is another degenerate case, where the initial GJK calculation reports a degenerate case EPA reports no penetration, and the second GJK (using the supporting vector without margin) reports a valid positive distance. Use the results of the second GJK instead of failing. thanks to Jacob.Langford for the reproduction case http://code.google.com/p/bullet/issues/detail?id=250

Definition at line 61 of file btComputeGjkEpaPenetration.h.

References b, BT_LARGE_FLOAT, btAssert, btGjkEpaCalcPenDepth(), btSqrt(), btTransform, distance(), distance2(), length(), btGjkCollisionDescription::m_firstDir, btGjkCollisionDescription::m_gjkRelError2, btGjkCollisionDescription::m_maxGjkIterations, btGjkCollisionDescription::m_maximumDistanceSquared, printf, SIMD_EPSILON, and w().

◆ btGjkEpaCalcPenDepth()

template<typename btConvexTemplate >
bool btGjkEpaCalcPenDepth ( const btConvexTemplate & a,
const btConvexTemplate & b,
const btGjkCollisionDescription & colDesc,
btVector3 & v,
btVector3 & wWitnessOnA,
btVector3 & wWitnessOnB )