🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_276cvmn_276.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 les perturbations gravitationnelles exercées par une planète massive (Jupiter) sur une ceinture d’astéroïdes en orbite autour d’une étoile (Soleil).
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Le script modélise un système multi-corps utilisant les lois de la gravitation de Newton. Il calcule en temps réel les interactions entre un soleil fixe, une planète en orbite et 15 astéroïdes, puis affiche une animation fluide de leurs trajectoires respectives.
📌 Problème résolu
Il permet de visualiser de manière pédagogique comment un corps massif peut déstabiliser les orbites circulaires de petits corps célestes, illustrant les concepts de mécanique céleste et de résonances 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 Animation)
📦 Dépendances / Librairies
Librairies standard : Aucune (calculs via NumPy).
Librairies externes :
numpy : Pour les calculs matriciels vectorisés.
matplotlib : Pour le rendu graphique et l’animation.
📥 ENTRÉES (INPUTS)
# Nom Type Obligatoire Description Exemple
1 dt float ✅ Oui Pas de temps de la simulation 0.05
2 masses float ✅ Oui Masse des corps (Soleil, Jupiter, Astéroïdes) 1000
📤 SORTIES (OUTPUTS)
# Nom Type Description Exemple
1 points Artist Mise à jour des coordonnées des astéroïdes data[2:, 1:3]
2 jupiter Artist Mise à jour de la position de Jupiter data[1, 1:3]
🧱 STRUCTURE DU SCRIPT
script_276cvmn_276.py
│
├── 📌 IMPORTS (numpy, matplotlib)
├── 📌 CLASSE SpaceSimulation
│ ├── __init__ → Initialisation des constantes (G) et de la liste des corps.
│ ├── add_body() → Ajout d’un objet (masse, position, vitesse).
│ └── run_step() → Moteur physique (Calcul vectorisé des forces).
├── 📌 CONFIGURATION DU SCÉNARIO (Instanciation du Soleil, Jupiter et Astéroïdes)
├── 📌 VISUALISATION (Initialisation Matplotlib)
└── 📌 ANIMATION (FuncAnimation)
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
run_step() Aucun None Calcule les distances relatives, les accélérations gravitationnelles et met à jour les positions (Euler/Verlet).
add_body() m, pos, vel None Enregistre un nouveau corps dans le système.
update() frame points, jupiter Fonction de rappel pour l’animation qui fait avancer la physique d’un pas.
🔄 LOGIQUE / ALGORITHME
ÉTAPE 1 → Calcul des vecteurs de distance entre tous les corps simultanément (N×N).
ÉTAPE 2 → Application de la loi universelle de la gravitation : F=Gr2m1m2.
ÉTAPE 3 → Mise à jour de la vitesse : vnew=v+a⋅dt.
ÉTAPE 4 → Mise à jour de la position : pnew=p+vnew⋅dt.
ÉTAPE 5 → Rafraîchissement du graphique.
🚨 GESTION DES ERREURS
Cas d’erreur Type d’exception Comportement attendu
Collision (distance = 0) ZeroDivisionError Géré par dist_sq[dist_sq == 0] = np.inf pour éviter le crash.
Structure de données vide IndexError Le script s’arrête si aucun corps n’est ajouté avant run_step.
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : Le Soleil est placé à l’origine (0,0) avec une masse dominante pour stabiliser le système.
Règle 2 : Les astéroïdes reçoivent une vitesse initiale v=G⋅M/r pour maintenir une orbite circulaire stable au départ.
Règle 3 : La simulation utilise des unités normalisées (G=1.0).
📊 PERFORMANCES ATTENDUES
Métrique Valeur cible
Temps d’exécution Temps réel (60 FPS visé via interval=20)
Optimisation Utilisation intensive de la vectorisation NumPy (évite les boucles for sur les calculs physiques).
📝 EXEMPLE D’UTILISATION
▶️ Lancement direct
Bash
python script_276cvmn_276.py



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