My final year university project involved programming a physically accurate simulation of a game of pool. In this project I used C++ and OpenGL to apply maths and physics principles such as:
- Linear and angular motion
- Conservation of linear and conservation of angular momentum
- Collision detection techniques
- Collision response techniques, including oblique collision response techniques which were used to determine the collision response of two colliding balls
As well as researching and applying these principles, I also implemented a finite state machine to handle game states, such as accessing the help screen, handling fouls and determining winning/losing conditions.
A demo can be viewed here