Skip to content
joncodeofficialPublic

About

A small, readable 2D rigid body physics engine in C++, built around one state-of-the-art solver.

Topics

Resources

Stars

67 stars

Watchers

3 watching

Forks

Repository files navigation

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

Physics simulation with circles and rectangles Advanced physics interactions

⚡ 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

⬜ Distance Constraint Optional feature for distance-based constraints
⬜ Convex Polygons Collision Detection against convex polygons
✅ Contact Points Change from Distance-Based to Feature-Based

📚 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

  • Position Based Dynamics

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.

About

A small, readable 2D rigid body physics engine in C++, built around one state-of-the-art solver.

Topics

Resources

Stars

67 stars

Watchers

3 watching

Forks

Contributors

Languages