I am currently implementing a separating axis theorem collision response. It can be used by oriented bounding boxes and axis-aligned bounding boxes.

So far I have covered face-something contacts. I struggle witth the edge-edge cases. I know the all the axis, penetration depth and the collision normal. But I don't understand the how I can receive a contact point. I read something about using supporting points but what is a supporting point? There are just a few explanations with even less information.

Do you know a good source which explains something? I already digged into some source code of different physic engines. But every engine calculates it different and the comments often don't even exist.


1 Answer 1


The supporting point is the point that lies at the penetration depth. If you already have working SAT then you've already used the supporting point as otherwise you'd have no way to find penetration depth for OBBs. The supporting point might be buried or abstracted by the specific implementation of SAT you're using, though (if you derive from basics, you'll be working with it, but the shape-specific simplifications of SAT can avoid needing an explicit point for many shapes after simplifying all the math).

The supporting point is one thing you can find to get contact points. You use this point to help identify the incident edge and reference edge of the shapes. Then you use polygon clipping to find one, two, or more (for 3D) points that have the most impact on collision resolution.

This is commonly referred to as the contact manifold.

See Randy Gauls' articels on physics for some details on finding the contact points. Read the whole series.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .