🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_278cvmn_278.py
Version 1.0.0
Date de création 07/03/2026
Auteur / Demandeur IA Générée (Gemini)
Objectif principal Simuler et visualiser en temps réel les interactions gravitationnelles d’un système N-corps (Soleil, planètes, astéroïde).
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Le script calcule les trajectoires d’objets célestes en utilisant la loi de la gravitation universelle de Newton. Il génère une animation 2D interactive montrant le mouvement orbital des corps et l’influence d’un objet extérieur (astéroïde) traversant le système, tout en dessinant des traînées pour visualiser les orbites.
📌 Problème résolu
Il permet de modéliser dynamiquement des systèmes physiques complexes où chaque objet influence tous les autres, illustrant des concepts d’astrophysique comme la stabilité orbitale et les perturbations gravitationnelles.
⚙️ 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
Librairies standard : Aucune.
Librairies externes :
numpy : Calculs vectoriels et matriciels.
matplotlib : Moteur de rendu graphique et animation.
📥 ENTRÉES (INPUTS)
# Nom Type Obligatoire Description Exemple
1 CelestialBody params Divers ✅ Oui Masse, position, vitesse initiale. [AU, 0]
2 dt float ✅ Oui Pas de temps de la simulation. 43200.0 (12h)
📂 Fichiers / Sources de données en entrée
Hardcoded : Les données du système (Soleil, Planète A/B, Astéroïde) sont définies directement dans la classe SpaceSimulation.
📤 SORTIES (OUTPUTS)
# Nom Type Description Exemple
1 ani Animation Flux visuel continu de la simulation. Fenêtre interactive
📂 Fichiers / Données en sortie
Visuel : Animation en temps réel via plt.show().
🧱 STRUCTURE DU SCRIPT
script_278cvmn_278.py
│
├── 📌 IMPORTS (numpy, matplotlib)
├── 📌 CONSTANTES (G, AU, DAY)
├── 📌 CLASSES
│ ├── CelestialBody → Stocke l’état physique d’un corps.
│ └── SpaceSimulation → Gère la logique physique (Forces/Updates).
├── 📌 VISUALISATION (init(), animate())
└── 📌 MAIN (Lancement de FuncAnimation)
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
compute_forces() Aucun list[np.array] Calcule l’accélération nette de chaque corps.
update() Aucun None Met à jour les positions/vitesses (Intégration d’Euler).
animate(i) i (frame) list Met à jour les objets graphiques pour chaque image.
🔄 LOGIQUE / ALGORITHME
Étape 1 : Initialisation des vecteurs d’état (Position r, Vitesse v) pour chaque corps.
Étape 2 : Pour chaque pas de temps dt, calcul de la force gravitationnelle : F=Gr2m1m2.
Étape 3 : Somme des forces pour obtenir l’accélération a=∑F/m.
Étape 4 : Mise à jour de la vitesse v=v+a⋅dt et de la position r=r+v⋅dt.
Étape 5 : Rendu graphique des points et des « trails » (historique des positions).
🚨 GESTION DES ERREURS
Singularité de collision : Une vérification if dist < (b1.size + b2.size) * 1e6 empêche la division par zéro lorsque deux corps sont trop proches. Stabilité numérique : Utilise un pas de temps fixe (DAY * 0.5). Si les vitesses sont trop élevées, la précision orbitale peut diminuer (dérive). ✅ CONTRAINTES & RÈGLES MÉTIER Règle 1 : Les calculs sont effectués en 2D (plan XY). Règle 2 : L'historique des trajectoires (path) est limité à 200 points pour préserver la mémoire. Règle 3 : La taille visuelle des objets est logarithmique par rapport à leur masse pour l'affichage. 🧪 TESTS ATTENDUS # Cas de test Entrée Résultat attendu Statut 1 Orbite stable Planète A Trajectoire circulaire/elliptique fermée autour du Soleil. ⬜ À tester 2 Interaction Astéroïde proche Déviation de la trajectoire de l'astéroïde par le Soleil. ⬜ À tester 3 Fermeture Fermer fenêtre Arrêt propre du thread d'animation. ⬜ À tester 📊 PERFORMANCES ATTENDUES Complexité : O(N2) où N est le nombre de corps célestes. Fluidité : 50 FPS visé (intervalle de 20ms). Mémoire : Très faible (< 100 Mo). 📝 EXEMPLE D'UTILISATION ▶️ Lancement direct Bash python script_278cvmn_278.py



Avis
Il n’y a pas encore d’avis.