Course: CS350 (Space Partitioning)
Used Tech: Self-made Native C++ and OpenGL engine.
This is a project I did for my CS350 class (Space Partitioning) at Digipen Bilbao.
It showcases a collision system. The system uses an octree, bounding volumes and the separating axis theorem. The idea is to do cheap tests first to rule out non collisions and avoid expensive calculations.
The octree is used as a first step. It separates the space into nodes, the objects are placed in one of these nodes. In this implementation if an object would be divided between several child nodes it is left at the parent.
Objects within each node, or in this case its sons, are collided against each other using their Bounding Volumes.
Finally, and only if the other cheaper tests could not discard a collision a geometry vs geometry collision test is done using the separating axis theorem. This theorem means basically that if it can be proved that there is a separating axis between two convex objects there is no collision and that there is otherwise.