{"id":19825049,"url":"https://github.com/jonpena/cirobb","last_synced_at":"2025-05-01T13:31:50.937Z","repository":{"id":153881931,"uuid":"241248138","full_name":"jonpena/Cirobb","owner":"jonpena","description":"A small 🎮 2D physics engine that explains mechanics ⚡ in physics engines for educational use ✨.","archived":false,"fork":false,"pushed_at":"2025-02-26T11:14:32.000Z","size":7994,"stargazers_count":59,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T14:11:59.662Z","etag":null,"topics":["physics-2d","physics-engine","physics-simulation","rigid-bodies"],"latest_commit_sha":null,"homepage":"https://jonpena.github.io/Cirobb-wasm","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonpena.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-18T01:47:18.000Z","updated_at":"2025-03-26T08:06:31.000Z","dependencies_parsed_at":"2025-01-14T22:28:04.071Z","dependency_job_id":"2f6e2e98-8ac9-4b95-862b-ed0135362e36","html_url":"https://github.com/jonpena/Cirobb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonpena%2FCirobb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonpena%2FCirobb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonpena%2FCirobb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonpena%2FCirobb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonpena","download_url":"https://codeload.github.com/jonpena/Cirobb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251881720,"owners_count":21659149,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["physics-2d","physics-engine","physics-simulation","rigid-bodies"],"created_at":"2024-11-12T11:06:47.104Z","updated_at":"2025-05-01T13:31:50.932Z","avatar_url":"https://github.com/jonpena.png","language":"C","readme":"# Cirobb\n\n## 🚀 Overview\n\n**Cirobb** is a **2D Rigid Body Physics Engine** inspired by **Box2D Lite** that was created with the purpose of helping people who are starting in this wonderful world of physics for Videogames. The Engine uses the Erin Catto's Contact Persistence Algorithm and it's implementation of the PGS (Projected Gauss Seidel) solver to solve the MLCP very well known as a SI (Sequential Impulse).\n\nAdditionally, it features a straightforward 2D Collision Detection system that efficiently calculates Contact Points, Normal Direction, and Penetration depth. This project aims to provide a clear and detailed understanding of how physics engines work under the hood, making it an ideal learning resource for game developers.\n\n\u003e 💡 For more complex simulations with multiple constraints and shapes, we recommend using **Box2D**, which is considered the best open-source 2D physics engine available.\n\n## 📸 Captures\n\n![Physics simulation with circles and rectangles](/images/img1.gif?raw=true)\n![Advanced physics interactions](/images/img3.gif?raw=true)\n\n## ⚡ Demos \u0026 Examples\n\n- [WebAssembly Demo (v1.1.8)](https://jonpena.github.io/Cirobb-wasm)\n- [YouTube Demo Video (v1.1.4)](https://youtu.be/j2p6qmOVA7M)\n\n## 🔜 Future Features\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e✨ Direct Solver\u003c/td\u003e\n    \u003ctd\u003eImprove Velocity Solver convergence\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e🔗 Distance Constraint\u003c/td\u003e\n    \u003ctd\u003eOptional feature for distance-based constraints\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e🔷 Convex Polygons\u003c/td\u003e\n    \u003ctd\u003eCollision Detection against convex polygons\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e🔄 Contact Points\u003c/td\u003e\n    \u003ctd\u003eChange from Distance-Based to Feature-Based\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## 📚 Learning Resources\n\n### Experts and Their Contributions\n\n#### Erin Catto\n\n- Iterative Dynamics with Temporal Coherence\n- Modeling and Solving Constraints\n- Soft Constraints\n- Numerical Methods\n- Continuous Collision Detection\n- Understanding Constraints\n\n#### Dirk Gregorius\n\n- The Separating Axis test Between Convex Polyhedra\n- Robust Contact Creation for physics Simulation\n\n#### Erwin Coumans\n\n- Forum Bullet\n- Exploring MLCP Solvers And Featherstone\n\n#### Tonge Richard\n\n- Iterative Rigid Body Solvers 2012\n- Iterative Rigid Body Solvers 2013\n\n#### Brian Vincent Mirtich\n\n- Impulse-based Dynamic Simulation of Rigid Body Systems\n\n#### Kenny Erleben\n\n- Book of Physics-Based Animation 2005\n- Numerical Methods for Linear Complementarity Problems in Physics-based Animation\n\n#### David Baraff\n\n- Analytical Methods for Dynamic Simulation of Non-penetrating Rigid Bodies\n- Fast Contact Force Computation for Nonpenetrating Rigid Bodies\n- Linear-Time Dynamics using Lagrange Multipliers\n- Physically Based Modeling, Pixar Animation Studios\n\n#### Jim Van Verth\n\n- Numerical Integration\n- Understanding Rotations\n\n#### Matthias Müller\n\n- Position Based Dynamics\n\n#### Michael B. Cline\n\n- Post-Stabilization for Rigid Body Simulation with Contact and Constraints\n\n#### Randy Gaul\n\n- Separating Axis Test (SAT) and Support Points in 2D\n\n### Books on Game Physics and Collision Detection\n\n- Game Physics Pearls by Gino van den Bergen and Dirk Gregorius\n- Real-Time Collision Detection by Christer Ericson\n\n## 📝 Note\n\nCirobb is designed as an educational introduction to 2D physics engines. It intentionally maintains simplicity to facilitate learning and understanding of fundamental concepts.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonpena%2Fcirobb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonpena%2Fcirobb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonpena%2Fcirobb/lists"}