Robustness of the Separating Axis Theorem
Currently, there is a flaw in our SAT implementation. You can see this flaw in action by testing two triangles that lay on the same plane. Let's assume that we run the SAT test with the following triangles:
- T1: (-2, -1, 0), (-3, 0, 0), (-1, 0, 0)
- T2: (2, 1, 0), (3, 0, 0), (1, 0, 0)
These two triangles will report a false positive. Visualizing them, they look like this:
Why does this happen? When we compute the cross products of the edges of the triangles, the cross product of parallel vectors is the zero vector. When edges or face normals are parallel, we end up with an invalid axis to test.
We are ...