Afficher la démo · Rapport Bogue · Demande de la demande

Ceci est un programme Python pour simuler les interactions des planètes
Cela signifie que vous pouvez entrer dans les masses de planètes et les positions et vitesses initiales et notre programme vous montrera comment interagirait-ils avec chacun des autres dans une belle simulation
Notre programme vous montrera un scénario attendu, mais il n'est peut-être pas précis à 100%.
Il existe de nombreuses démos prêtes à l'emploi peuvent vous impressionner!
Quelques choses que vous pouvez faire avec notre application:
Assurez-vous que vous avez installé toutes les conditions suivantes sur votre machine de développement:
pip --version
Ouvrez d'abord CMD à l'endroit où vous souhaitez télécharger le projet, puis écrivez ces commandes:
Clone le référentiel de votre machine locale:
git clone https://github.com/suliman-99/Space-Simulation.git
Accédez au répertoire du projet:
cd Space-Simulation
Ensuite, pour installer le module PiPenv par pip, écrivez simplement cette commande sur votre CMD
pip install pipenv
Installez les dépendances requises à l'aide de pipenv:
pipenv install
Exécutez le projet:
Windows:
python main.py
Linux ou Mac:
python3 main.py
La première étape consiste à exécuter le programme en suivant l'installation de la section précédente.
Une application s'ouvrira avec des boutons de remorquage: cliquez sur Create new Simulation pour en faire une nouvelle ou choisir Simulation From File pour ouvrir une démo prêt à l'emploi ou pour ouvrir vos démos ou états enregistrés
puis cliquez sur Run Simulation pour démarrer la simulation
Votre navigateur par défaut s'ouvrira avec la page de simulation
Vous pouvez enregistrer l'état actuel en cliquant sur le bouton Save State et il sera enregistré dans le fichier demos/saved_state.txt , et vous pouvez l'utiliser à partir de là
Si vous voulez essayer une nouvelle démo, je suis désolé de dire que vous devez fermer le programme et l'ouvrir à nouveau
La loi de Newton de la gravitation universelle
F = (G * m1 * m2) / r^2
G : la constante gravitationnelle
m1 , m2 : les masses de ces deux objets
r : La distance entre les centres des masses
F : La force gravitationnelle agissant entre eux
Nous utilisons cette formule pour calculer la force entre chaque paire de planètes
Nous mettons à jour la force totale des plantes par cette méthode:
def apply_gravity(planet1: Planet, planet2: Planet) -> None:
u = planet2.pos - planet1.pos
grav = g * planet1.mass * planet2.mass / (u.length() ** 2)
planet1.add_force(u.scale_to(grav))
planet2.add_force(u.scale_to(-grav))
La deuxième loi du mouvement de Newton
F = m * a => a = F / m
m : Masse de l'objet
F : Force totale appliquée dessus
a : l'accélération de celui-ci
Nous utilisons cette Fomula pour calculer l'accélération de chaque planète en fonction de la force totale qui lui est appliquée
Après cela, nous pouvons calculer la nouvelle vitesse (vecteur de vitesse) en fonction de la vitesse actuelle et de l'accélération
Après cela, nous pouvons calculer la nouvelle position (x, y, z) en fonction de la position actuelle et de la vitesse
Ensuite, nous pouvons renvoyer l'objet dans le nouvel endroit
Nous pouvons le faire beaucoup de temps dans le même second (plus que 10 fois) et nous aurons une bonne visualisation
Nous mettons à jour les données Palnet par cette méthode:
def update(self, dt: float) -> None:
self.pos += (self.velocity * dt) + (self.acceleration * ((dt ** 2) / 2))
self.velocity += self.acceleration * dt
self.acceleration = self.force / self.mass
Une autre collision de sujet
Project Name
│ main.py
└───core
│ │ camera.py
│ │ environment.py
│ │ file.py
│ │ physics.py
│ │ planet.py
│ │ vector.py
│
└───gui
│ screens
│ app.py
│ controls.py
assets voici nos imagesdemos voici nos démos et les États sont enregistrés sous forme de fichiersresources ici quelques variables globales Stubidtesting c'est notre dossier de test Si vous avez des suggestions sur la façon dont la simulation spatiale pourrait être améliorée ou si vous souhaitez signaler un bogue, ouvrez un problème! Nous aimerions tous et toutes les contributions.
Pour en savoir plus, consultez le guide de contribution.
Suliman Awad - [email protected] - LinkedIn
Lien du projet: https://github.com/sumiman-99/space-simulation
Licence MIT
Copyright (C) 2023 Suliman Awad
Pour en savoir plus, consultez le fichier de licence.