{"id":19320597,"url":"https://github.com/aluriak/gravastre","last_synced_at":"2025-04-22T18:30:37.374Z","repository":{"id":143140979,"uuid":"50787460","full_name":"Aluriak/gravastre","owner":"Aluriak","description":"Qt, C++, computations, geometry, graviationnal simulation","archived":false,"fork":false,"pushed_at":"2017-02-27T22:18:04.000Z","size":89,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T02:37:55.095Z","etag":null,"topics":["cpp","gravitational-simulations","simulation"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Aluriak.png","metadata":{"files":{"readme":"README.mkd","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2016-01-31T18:04:14.000Z","updated_at":"2020-07-15T06:16:12.000Z","dependencies_parsed_at":"2023-04-27T05:31:08.919Z","dependency_job_id":null,"html_url":"https://github.com/Aluriak/gravastre","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/Aluriak%2Fgravastre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aluriak%2Fgravastre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aluriak%2Fgravastre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aluriak%2Fgravastre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aluriak","download_url":"https://codeload.github.com/Aluriak/gravastre/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250297118,"owners_count":21407154,"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","gravitational-simulations","simulation"],"created_at":"2024-11-10T01:29:43.281Z","updated_at":"2025-04-22T18:30:37.360Z","avatar_url":"https://github.com/Aluriak.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gravastre\nC++/Qt5 rewriting of [Gravastre-2.0](https://github.com/Aluriak/Gravastre-2.0).\n\n\n## Main idea\nGravastre is a gravitationnal simulation where all agents (named Astres) interacts, no matter there distance or their mass.\nThe Qt interface allow user to see and play with the simulation during the computations.\n\n\n## Usage\nFirst, you will have to generate the builder Makefile:\n\n    make\n\n(on some systems, `qmake-qt5` replace `qmake`. On failure, detect which is the correct typo\nand modify the [Makefile](https://github.com/Aluriak/gravastre/blob/master/Makefile#L5) accordingly)\n\nThen, go to build dir, build the project and launch it:\n\n    cd build\n    make\n    ./gravastre\n\nIt's also possible to launch gravastre using a system defined in JSON file:\n\n    ./gravastre mysystem.json\n\nTake a look to `data/` directory for JSON file example.\n\n\n## Interactions\nCurrently, some interactions are implemented:\n- Mouse:\n    - left click: create a new unamed astre (hold to define an initial speed)\n    - right click: translation of the view (not properly working)\n    - mouse wheel: zoom\n- Keyboard:\n    - i/e: decrease or increase mass of next created astres\n    - d: clear all universe\n    - a/u: decrease or increase the new astre initial speed sensitivity\n    - p: pausing simulation\n    - space: recenter to and track the selected astre\n\nAfter playing, you may want to take a look to:\n- main.cpp, where the initial system is defined\n- converters.h, where some constants including collision presence, pixel per UA and simulation speed are defined\n\n\nYou can also define your own systems using the JSON format.\nSee [`data/`](https://github.com/Aluriak/gravastre/tree/master/data) and [usage](https://github.com/Aluriak/gravastre#usage).\n\n\n## Features\n- [X] complete and personalisable simulation\n- [X] JSON configuration of systems\n- [X] System: specify speed as double, not pair of double, and randomly place in orbit the subsystems\n- [X] System,JSON: allow specifying an excentricity for the orbit, or any combination of valid parameters\n- [X] zoom and translation in the world using the mouse\n- [X] astre selection\n- [X] config file for systems\n- [ ] options: show trajectory of selected Astre as an ellipse\n- [X] astre realistic radius\n- [X] player handling\n- [ ] token for replace astre when too far\n- [ ] creation of an Astre trajectory knowing (all?) Astres\n- [ ] print astre name when mouse over it (or its token)\n- [ ] config file for constants (+option for using hard-coded ones)\n- [ ] save systems\n- [ ] provides GUI for generation of systems\n- [ ] provides GUI for generating SPARQL queries and produce resulting systems\n- [ ] informations about selected astre in a dedicated widget: name, mass, orbit trajectory, link to wikipedia\n\n\n## Units\nSee the _converters.h_ header for units definitions and constants.\nUnits used by the Astre class are real units ; conversions to non real units is done dynamically,\nwhen needed by the computations.\n\nAll positions and distances are given in [Astronomical Unit](https://en.wikipedia.org/wiki/Astronomical_unit).\nThe *reference*, optionally shown as a white rectangle, is placed at (0;0).\n\nSpeeds are in [meter per second](https://en.wikipedia.org/wiki/SI_base_unit).\n\n\n### Adapting the simulation\nFunction to the system you want to seek, you could want to modify values found in the [options file](src/options.h).\n\nBy default, these values works well with a representation of the telluric planets of the solar system,\nbut for other systems like [TRAPPIST-1](TRAPPIST-1_system.json), you could want to tweak some values a little.\n\n- PIXEL_PER_AU: number of pixel in one [astromical unit](https://en.wikipedia.org/wiki/Astronomical_unit). Increase it for a larger world.\n- SIMULATION_SPEED: number of second passing between each computation step.\n- COLLISION: if set to true, when two astres collides (this is based on their radius), the heavier absorbs the other. Its speed is modified in consequence.\n- DEFAULT_RADIUS_BY_MASS_FACTOR: factor used for the computation of a radius from the mass. Useful to get radius giving an hint about mass. Increase it to get smaller radii.\n- RADIUS_TO_PIXEL_FACTOR: in case radius (km) is deduced from input file, it will be converted using PIXEL_PER_AU and this value. 1=realistic (but invisible in most cases), more=bigger radii.\n- ALWAYS_USE_DEFAULT_RADIUS: if set to true, ignore radius given in input file and use the *function to mass* radius.\n- VIEW_ENGINE_TIME_UPDATE: number of millisecond between each engine update/computation step.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faluriak%2Fgravastre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faluriak%2Fgravastre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faluriak%2Fgravastre/lists"}