script_279cvmn_279.py

49,00 

Simuler et animer en 2D les trajectoires gravitationnelles de corps célestes (système solaire simplifié) et d’un intrus à haute vitesse.

UGS : script_279cvmn_279.py Catégorie : Étiquettes : , ,

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_279cvmn_279.py

Version 1.0.0

Date de création 07/03/2026

Auteur / Demandeur IA Générée (Gemini)

Objectif principal Simuler et animer en 2D les trajectoires gravitationnelles de corps célestes (système solaire simplifié) et d’un intrus à haute vitesse.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script réalise une simulation numérique de n-corps utilisant la loi de gravitation universelle de Newton. Il calcule les interactions entre un Soleil, deux planètes et un astéroïde, puis génère une animation fluide affichant les positions en temps réel et les traînées de mouvement (軌道 – orbits).

📌 Problème résolu

Il permet de visualiser l’influence gravitationnelle mutuelle de plusieurs objets massifs et de modéliser des scénarios de survol (flyby) ou de perturbations orbitales par un objet tiers (Apophis).

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.8+

OS cible Tous (Windows, Linux, MacOS)

Mode d’exécution Interface Graphique (Matplotlib Window)

📦 Dépendances / Librairies

numpy : Calcul vectoriel et gestion des matrices de position/accélération.

matplotlib : Moteur de rendu graphique et module FuncAnimation.

📥 ENTRÉES (INPUTS)

Les données sont actuellement codées en dur (Hardcoded) dans la section configuration :

| # | Nom | Type | Obligatoire | Description | Exemple |

| :— | :— | :— | :— | :— | :— |

| 1 | mass | float | ✅ Oui | Masse du corps en kg | 1.989e30 |

| 2 | pos | list | ✅ Oui | Coordonnées [x, y] en mètres | [1.5e11, 0] |

| 3 | vel | list | ✅ Oui | Vecteur vitesse [vx, vy] en m/s | [0, 29780] |

📤 SORTIES (OUTPUTS)

# Nom Type Description

1 Animation Graphique Fenêtre interactive Matplotlib affichant le mouvement.

2 path list Historique des positions stocké pour chaque corps.

🧱 STRUCTURE DU SCRIPT

script_279cvmn_279.py

├── 📌 IMPORTS (numpy, matplotlib)

├── 📌 CLASSE SpaceSimulation (Moteur physique)

│ ├── __init__() → Initialise les constantes (G, dt)

│ ├── add_body() → Enregistre un nouvel objet céleste

│ ├── compute_accelerations() → Calcul vectoriel des forces

│ └── update() → Intégration numérique (Euler)

├── 📌 CONFIGURATION (Instanciation du Soleil, Telluria, Ares, Apophis)

├── 📌 VISUALISATION (Setup du plot noir, limites des axes)

└── 📌 ANIMATION (init et animate pour le rafraîchissement)

🔧 Détail des fonctions principales

Fonction Paramètres Retour Rôle

compute_accelerations() Aucun ndarray Calcule l’accélération a=∑r2G⋅M​ pour chaque corps.

update() Aucun None Met à jour vitesse et position via la méthode d’Euler semi-implicite.

animate(i) i (frame) list Calcule 5 pas de temps et met à jour les tracés des lignes et points.

🔄 LOGIQUE / ALGORITHME

Initialisation : Création des objets avec vecteurs d’état (Position/Vitesse).

Boucle de Calcul :

Calcul de la distance relative entre chaque paire d’objets.

Application d’un Softening factor (105) pour éviter les divisions par zéro lors de collisions.

Mise à jour de la vitesse : vt+1​=vt​+a⋅dt.

Mise à jour de la position : pt+1​=pt​+vt+1​⋅dt.

Rendu : Affichage des 50 derniers points de trajectoire pour créer un effet de « queue ».

🚨 GESTION DES ERREURS

Stabilité numérique : Le script utilise un pas de temps de 1 jour (86400s). Si un objet passe trop près d’un autre, la trajectoire peut devenir instable (éjection) malgré le facteur d’adoucissement.

Performance : La simulation est O(n2), ce qui est négligeable pour 4 corps mais ralentira si on ajoute des centaines d’astéroïdes.

✅ CONTRAINTES & RÈGLES MÉTIER

Règle 1 : Les unités doivent être en SI (Mètres, Kilogrammes, Secondes).

Règle 2 : L’intégration est de type Euler semi-implicite (plus stable que l’Euler simple pour les systèmes orbitaux).

Règle 3 : Le « Softening factor » (eps) simule une taille non nulle pour éviter les accélérations infinies.

🧪 TESTS ATTENDUS

# Cas de test Entrée Résultat attendu Statut

1 Stabilité orbitale Telluria (Terre) Orbite quasi-circulaire stable ⬜ À tester

2 Interférence Passage Apophis Déviation légère des orbites planétaires ⬜ À tester

3 Fermeture Fermer fenêtre Arrêt propre du script Python ⬜ À tester

📝 EXEMPLE D’UTILISATION

▶️ Lancement direct :

Bash

python script_279cvmn_279.py

Avis

Il n’y a pas encore d’avis.

Soyez le premier à laisser votre avis sur “script_279cvmn_279.py”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *