Hello,
I have recently implemented continuous collision detection using Conservative Advancement and I am currently trying to switch to Bilateral Advancement as described by Erin Catto in his GDC 2013 talk "Continuous Collision". However I am having trouble finding the right separation functions to use in 3D. I think I have the Vertex-Vertex, Vertex-Face, Edge-Face and Face-Face separation functions working correctly but I am unsure of the Vertex-Edge and Edge-Edge case.
I have found (from the bullet forums) how to get the separation axis for the Edge-Edge case using:
Vector3 EdgeA = closestFeatures.verticesA[1] - closestFeatures.verticesA[0];
EdgeA.Normalize();
Vector3 EdgeB = closestFeatures.verticesB[1] - closestFeatures.verticesB[0];
EdgeB.Normalize();
Vector3 Axis = Vector3::CrossProduct(EdgeA, EdgeB);
if (Vector3::DotProduct(closestFeatures.verticesB[0] - closestFeatures.verticesA[0], Axis) < 0.0f)
{
Axis = -Axis;
EdgeB = -EdgeB;
}
But I am unsure of where to go from here, I'm sure it is something simple that I am missing.
If anyone who has implemented technique before could help me, it would be greatly appreciated.
Thanks