{"id":16323640,"url":"https://github.com/im-rises/nbody-simulator-docker","last_synced_at":"2026-04-06T21:31:02.049Z","repository":{"id":171395135,"uuid":"647879775","full_name":"Im-Rises/nbody-simulator-docker","owner":"Im-Rises","description":"N-body simulator using bruteforce method using docker for calculations","archived":false,"fork":false,"pushed_at":"2024-03-29T03:38:56.000Z","size":112615,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-31T10:22:42.364Z","etag":null,"topics":["containers","cpp","docker","javascript","n-body","n-body-simulator","nbody-simulation","nodejs","simulation","simulator"],"latest_commit_sha":null,"homepage":"https://im-rises.github.io/nbody-simulator-webgl/","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/Im-Rises.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}},"created_at":"2023-05-31T18:10:43.000Z","updated_at":"2023-09-03T06:10:21.000Z","dependencies_parsed_at":"2023-07-10T06:34:33.068Z","dependency_job_id":"6c82939b-7762-4fdd-889b-b28b1ed9429b","html_url":"https://github.com/Im-Rises/nbody-simulator-docker","commit_stats":{"total_commits":138,"total_committers":6,"mean_commits":23.0,"dds":"0.34782608695652173","last_synced_commit":"7ca8487547ee23d94c80e5ed6cd6e646e3880a7d"},"previous_names":["im-rises/nbody-simulator-cloud"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2Fnbody-simulator-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2Fnbody-simulator-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2Fnbody-simulator-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2Fnbody-simulator-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Im-Rises","download_url":"https://codeload.github.com/Im-Rises/nbody-simulator-docker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238207641,"owners_count":19434095,"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":["containers","cpp","docker","javascript","n-body","n-body-simulator","nbody-simulation","nodejs","simulation","simulator"],"created_at":"2024-10-10T22:55:19.364Z","updated_at":"2025-10-25T20:31:03.675Z","avatar_url":"https://github.com/Im-Rises.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nbody-simulator-docker\n\n\u003cp align=\"center\"\u003e\n        \u003cimg src=\"https://user-images.githubusercontent.com/59691442/183268126-b3d19e66-8f2d-463a-805e-ae6ef7cc6c01.png\" alt=\"cmakeLogo\" style=\"height:60px;\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/C%2B%2B-00599C?style=for-the-badge\u0026logo=c%2B%2B\u0026logoColor=white\" alt=\"cppLogo\" style=\"height:60px;\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/OpenGL-FFFFFF?style=for-the-badge\u0026logo=opengl\" alt=\"openglLogo\" style=\"height:60px;\"/\u003e\n        \u003cimg src=\"https://github.com/Im-Rises/nbody-simulator-docker/assets/59691442/b527fd70-f38f-4384-878d-3de6929e1e30\" alt=\"imGuiLogo\" style=\"height:60px;\"/\u003e\n        \u003cimg src=\"https://user-images.githubusercontent.com/59691442/190315147-ec9dc33f-0090-4f0d-98ab-514eb1463e01.png\" alt=\"glfwLogo\" style=\"height:60px;\"/\u003e\n\u003c/p\u003e\n\n[//]: # (         \u003cimg src=\"https://img.shields.io/badge/ImGui-FFFFFF?style=for-the-badge\u0026logo=imGui\" alt=\"imGuiLogo\" style=\"height:60px;\"/\u003e)\n\n## Description\n\nThis is a simple n-body simulator made with OpenGL for the graphics part and C++ for the logic part.\nThe project is running on a complete docker environment.\n\n\u003e **Note**  \n\u003e The project is a test of paralleling the calculation of the particles on different docker containers and store them in\n\u003e a redis database.\n\u003e A docker is also used to generate the video from the redis database.\n\n## Videos\n\n[//]: # (https://github.com/Im-Rises/nbody-simulator-docker/assets/59691442/59ef1c71-e2bb-4bd5-99f8-66eace4280b5)\n\nhttps://github.com/Im-Rises/nbody-simulator-docker/assets/59691442/622717a8-b508-4221-a79e-f00c07475979\n\nLonger video 🚀🚀 [here](https://www.youtube.com/watch?v=OisxyKE_ioU) 🚀🚀\n\n## How to use\n\nTo use the project, you need to have docker installed on your computer.\nYou can download it here: \u003chttps://www.docker.com/\u003e\n\nYou also need to install the following linux lib:\n\n```bash\nsudo apt-get install xvfb\n```\n\nYou also need python3 installed on your computer.\nYou can download it here: \u003chttps://www.python.org/downloads/\u003e\n\nOnce you have installed the requirements, you can install the python libs with the following command:\n\n```bash\npip install -r requirements.txt\n```\n\nThis will install the required libs to generate the `docker-compose.yml` using the `docker-compose-generator.py` python\nscript.\n\n```bash\npython3 docker-compose-generator.py \u003ctotal_particles\u003e \u003cnumber_of_calculators\u003e \u003csimulation_recording_time\u003e\n```\n\nexemple:\n\n```bash\npython3 docker-compose-generator.py 1000 4 10\n```\n\nThis will generate a `docker-compose.yml` file with 4 calculators and 1000 particles and a simulation recording time of\n10 seconds.\n\nOnce created you can run the `docker-compose.yml` with the following command:\n\n```bash\n./test.sh\n```\n\nAn output video will be genereated in the `./src/NBodyGraphics/output_dir` folder.\n\n## Dependencies\n\n- OpenGL version: 3.3\n- GLSL version: 330\n- GLFW version: 3.2.1\n- Glad version: 0.1.36\n- GLM version: 0.9.9\n- OpenCV version: 4.7.0-dev\n- nlhomann/json version: 3.9.1\n- libcurl version: 7.74.0\n\n## Architecture\n\n```mermaid\nflowchart LR\n    \n    subgraph Host\n    \n    subgraph Docker-Calculators\n    docker1 \u0026 docker2 \u0026 docker...\n    end\n    docker1 \u0026 docker2 \u0026 docker... \u003c--\u003e |GET/POST| api-redis\n    subgraph Redis\n    api-redis\n    end\n    api-redis --\u003e |Send particles| NBodyGraphics\n    NBodyGraphics --\u003e |Request update| api-redis\n    subgraph Video-Generator\n    end\n    \n    subgraph Video-Generator\n    NBodyGraphics\n    end\n    \n    NBodyGraphics --\u003e |Save video | Volume\n   \nend\n```\n\n## Logic Diagram\n\n```mermaid\ngraph TB\n    A((Start))\n    B[NBodyGraphics]\n    C[API-Redis]\n    D[NBodycalculator1]\n    E[NBodycalculator2]\n    F[NBodycalculator3]\n    G[NBodycalculator...]\n    H[API-Redis]\n    I[NBodyGraphics]\n    J[Volume]\n    \n    A --\u003e B\n    B --\u003e | Physic update | C\n    C --\u003e | Particle request update | D \u0026 E \u0026 F \u0026 G\n    D \u0026 E \u0026 F \u0026 G --\u003e | Send updated particles | H\n    H --\u003e | Send updated particles | I\n    I --\u003e | Do another cycle | B\n    I --\u003e | Save video | J\n```\n\n## Libraries\n\ndocker:  \n\u003chttps://www.docker.com/\u003e\n\ncmake:  \n\u003chttps://cmake.org/\u003e\n\nglfw:  \n\u003chttps://www.glfw.org/docs/latest/\u003e\n\nglm:  \n\u003chttps://glm.g-truc.net/0.9.9/index.html\u003e\n\nglad:  \n\u003chttps://glad.dav1d.de/\u003e\n\nOpenGL:  \n\u003chttps://www.opengl.org/\u003e\n\nJson:  \n\u003chttps://github.com/nlohmann/json\u003e\n\nlibcurl:  \n\u003chttps://curl.se/libcurl/\u003e\n\n## Contributors\n\nAxel COURMONT:\n\n- @Alshkor\n- \u003chttps://github.com/Alshkor\u003e\n\nQuentin MOREL:\n\n- @Im-Rises\n- \u003chttps://github.com/Im-Rises\u003e\n\nAlexis ROVILLE:\n\n- @Fromiel\n- \u003chttps://github.com/Fromiel\u003e\n\n[![GitHub contributors](https://contrib.rocks/image?repo=Im-Rises/nbody-simulator-docker)](https://github.com/Im-Rises/nbody-simulator-docker/graphs/contributors)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-rises%2Fnbody-simulator-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fim-rises%2Fnbody-simulator-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-rises%2Fnbody-simulator-docker/lists"}