Polygon Intersections
+Separating Axis Theorem
+ The Separating Axis Theorem (SAT) provides a way to find the intersection between any n-sided convex polygon or circle. In this tutorial, I will explain how this theorem works, and how you can use it to both detect and resolve collisions in your simulation. +
+Explanation of Separating Axis Theorem
+
+ SAT makes use of vector projection to figure out whether or not two concave polygons are intersecting. The way to think about it is this:
+
+
+
+
+ Given two shapes A and B.
+
+ Imagine we could isolate a single edge of A and shine a light on it.
+
+
+
Algorithm for Finding the Intersection
++ Given two polygons A and B: +
-
+
- For each edge on A, get the normal n of that edge. +
- Project each vertex v of A onto n. Return the minimum and maximum projection of all vertices. +
- Repeat Step 2 for polygon B. +
- If the min and max projections found in Steps 2 and 3 do NOT overlap, the polygons are not intersecting. Return false. +
- If the projections overlap for each edge of both shapes, the shapes are intersecting. Return true. +