I've got this problem, and I don't know what may be the cause of it.
I finished reading this article on sphere-triangle collision.
My character (the sphere) stops before it reaches the triangle, and then over like 2 seconds it slowly reaches the "expected" spot where I really want it to stop.
Thing is, I tried switching my whole algorithm from floats to doubles, and they problem stays. So I'm not really sure if that's a number precision problem, although after many debugging I think that there could be a problem with the precision of the next calculation: (t0 and t1)
Real signedDistToTrianglePlane = trianglePlane.signedDistanceTo(colPackage->basePoint); Real normalDotVelocity = glm::dot(trianglePlane.normal(),colPackage->velocity); t0 = ((Real)-1.0 - signedDistToTrianglePlane) / normalDotVelocity; t1 = ((Real)1.0 - signedDistToTrianglePlane) / normalDotVelocity;
Could the dot product function be a trap for precise calculations? (signedDistanceTo() uses glm::dot as well)
Here's my collision detection & response algorithms.
One last thing to note is that on page 47 in the article, the author uses a
verySmallDistance number where he only updates some variables if
distanceToCollision is bigger than it. I don't understand these lines.
I've been struggling with this issue for a week now. Any help or idea on the subject will be highly appreciated!