{"id":29091196,"url":"https://github.com/kinetictactic/orbits","last_synced_at":"2025-08-02T16:32:41.798Z","repository":{"id":300606087,"uuid":"1005967989","full_name":"KineticTactic/orbits","owner":"KineticTactic","description":"2D newtonian gravity sandbox.","archived":false,"fork":false,"pushed_at":"2025-06-22T16:51:18.000Z","size":2754,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-22T17:36:06.244Z","etag":null,"topics":["cpp","gravity","raylib","sandbox","simulation"],"latest_commit_sha":null,"homepage":"https://kinetictactic.github.io/orbits/","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/KineticTactic.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,"zenodo":null}},"created_at":"2025-06-21T07:31:26.000Z","updated_at":"2025-06-22T16:51:21.000Z","dependencies_parsed_at":"2025-06-22T17:49:09.389Z","dependency_job_id":null,"html_url":"https://github.com/KineticTactic/orbits","commit_stats":null,"previous_names":["kinetictactic/orbits"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/KineticTactic/orbits","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KineticTactic%2Forbits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KineticTactic%2Forbits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KineticTactic%2Forbits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KineticTactic%2Forbits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KineticTactic","download_url":"https://codeload.github.com/KineticTactic/orbits/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KineticTactic%2Forbits/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262382731,"owners_count":23302296,"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":["cpp","gravity","raylib","sandbox","simulation"],"created_at":"2025-06-28T06:05:48.901Z","updated_at":"2025-06-28T06:05:50.762Z","avatar_url":"https://github.com/KineticTactic.png","language":"C","readme":"# Orbits! - A Newtonian Gravity Sandbox\n\n**Orbits!** is a 2D gravity simulation built in C++ using [raylib](https://www.raylib.com/). It simulates Newtonian gravitational interactions between multiple bodies and visualizes their motion and orbital paths in real time. It uses **Velocity Verlet** integration for stable, energy-preserving orbits.\n\n![orbits](assets/orbits.gif)\n\n# Controls\n\n-   **Left Click Drag** to add a body and set its velocity. **Scroll** to change the mass of the body.\n-   **Right Click Drag** to pan the view.\n-   **Scroll** to zoom in and out.\n-   **Space** to pause the simulation.\n\n### Touch controls:\n\n-   Use buttons for selecting modes.\n-   In PAN mode, drag to pan the view and pinch to zoom.\n-   In ADD mode, tap to add a body and drag to set its velocity. Pinch to change the mass of the body.\n\n# Building\n\nUse CMake to build the project. Raylib is automatically downloaded and built as a dependency.\n\n```bash\nmkdir build\ncmake -B build -S . # -G \"MinGW Makefiles\"\ncmake --build build\t # or make or mingw32-make\n```\n\norbits.exe will be created in the build directory.\n\n### Building for WebAssembly\n\nTo build the project for WebAssembly, you need to use the Emscripten toolchain. First, make sure you have Emscripten installed and set up correctly. Then, you can create a build using the following commands:\n\n```bash\nmkdir buildweb\nemcmake cmake -B buildweb -S .\ncmake --build buildweb\n\nemrun --no_browser --port 8080 buildweb/index.html # to run the server\n```\n\nThis will generate a WebAssembly version of the project that can be run in a web browser.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkinetictactic%2Forbits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkinetictactic%2Forbits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkinetictactic%2Forbits/lists"}