script_278cvmn_278.py

49,00 

Simuler et visualiser en temps réel les interactions gravitationnelles d’un système N-corps (Soleil, planètes, astéroïde).

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

🔷 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=Gr2m1​m2​​.

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

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

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