Skip to main content

Posts

Showing posts with the label axis

SAT Collision Part 2

In this collision tutorial, we will take more in detail with how exact we get the normals and how we get the intervals.  However, I will not be going in detail regarding vector math needed to understand this, although it is simple and I will eventually post blogs regarding them. Down to business.  Our shape is composed of vertices.  In the case of this rectangle, there is four vertices, in red, and four normals, in brown.  The vertices are self explanatory and the normals describe the orientation or the way a side of the triangle is facing.  Take note that the vertices are defined such that the center of the triangle, not indicated in the picture, is at position(0,0) and all vertices defining the vertex is relative to this location; just like in a normal coordinate system. Now, to get the normal for a side of the rectangle we take two vertices defining an edge of the rectangle and subtract them.  Further, we swap the x, and y components and negate the ne...

Introduction to SAT

When writing games, collision detection is important, especially one that is fast and robust.  True, you can get away with having a simple rectangular collision detection where your checking if two squares overlay, but that becomes less reliable when objects in your application/game are moving fast and many I good collision detection system is SAT or  Separating axis theorem.  It says that if two convex shapes' (shapes that do not invaginate) projections along their respective normals does not overlap then the shapes do not overlay.  More clearly, if there is any project that separates the two shapes, then there is a collision. That is it. However, this requires further explanation.  A convex shape is like a rectangle, an octagon, or any shape that does not fold into itself.  When using SAT, we use its normals, denoted by brown lines, to project two convex shapes while comparing to see if the two's intervals overlap. If an overlap exist, then a collisio...