🔷 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.