Cirobb
🚀 Overview
Cirobb is a small, readable 2D rigid body physics engine in C++, built around one state-of-the-art solver.
💡 For more complex simulations with multiple constraints and shapes, we recommend using Box2D, which is considered the best open-source 2D physics engine available.
📸 Captures
⚡ Demos & Examples
Building
Desktop:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/bin/demo
Web (requires the Emscripten SDK):
./build_web.sh
python3 -m http.server -d build-web/web
🔜 Future Features
📚 Learning Resources
Experts and Their Contributions
Erin Catto
- Iterative Dynamics with Temporal Coherence
- Modeling and Solving Constraints
- Soft Constraints
- Numerical Methods
- Continuous Collision Detection
- Understanding Constraints
Dirk Gregorius
- The Separating Axis test Between Convex Polyhedra
- Robust Contact Creation for physics Simulation
Erwin Coumans
- Forum Bullet
- Exploring MLCP Solvers And Featherstone
Tonge Richard
- Iterative Rigid Body Solvers 2012
- Iterative Rigid Body Solvers 2013
Brian Vincent Mirtich
- Impulse-based Dynamic Simulation of Rigid Body Systems
Kenny Erleben
- Book of Physics-Based Animation 2005
- Numerical Methods for Linear Complementarity Problems in Physics-based Animation
David Baraff
- Analytical Methods for Dynamic Simulation of Non-penetrating Rigid Bodies
- Fast Contact Force Computation for Nonpenetrating Rigid Bodies
- Linear-Time Dynamics using Lagrange Multipliers
- Physically Based Modeling, Pixar Animation Studios
Jim Van Verth
- Numerical Integration
- Understanding Rotations
Matthias Müller
Michael B. Cline
- Post-Stabilization for Rigid Body Simulation with Contact and Constraints
Randy Gaul
- Separating Axis Test (SAT) and Support Points in 2D
Books on Game Physics and Collision Detection
- Game Physics Pearls by Gino van den Bergen and Dirk Gregorius
- Real-Time Collision Detection by Christer Ericson
📝 Note
Cirobb is my personal project to practice physics for video games.