This project follows along with Ian Millington's Game Physics Engine Development and is is meant to serve as a demonstration of core understanding. This engine is written in C++, built with CMake and tested using gtest and GitHub Actions for CI.
This engine was written to provide a framework for use in games, but could certainly be extended for other purposes as well. Documentation for each class is included in the docs folder. The engine itself is broken up into sections, with descriptions and links to included classes under the corresponding sections.
Vectors in the engine exist in , or in other words they are 3 Dimmensional. The primary class to store these vectors as objects is Vector3. These objects contain methods for various types of vector manipulation and arithmetic, including scalar and vector products, as well as the creation of an orthogonal Basis.
A particle is defined as an object that has position but no orientation. Some objects that are treated as particles may technically have orientation, such as a bullet, but it is not useful to track that orientation for the purposes of the engine. As expected, the primary class that stores particle objects is Particle. This class has an aggregate relationship with Vector3 as each particle contains vectors for position, velocity and acceleration.