🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script onizuka_bnwmy6yis7jayqnv_333.py
Version 1.0.0
Date de création 25/03/2026
Auteur / Demandeur refoïa jeremy
Objectif principal Simuler et animer en 2D les trajectoires orbitales de corps célestes (Soleil, Terre, Mars) en utilisant les lois de Newton.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script calcule les interactions gravitationnelles entre plusieurs objets massifs dans un espace 2D. Il génère une animation fluide montrant le mouvement des planètes autour d’une étoile, en traçant simultanément l’historique de leurs trajectoires (orbites).
📌 Problème résolu
Il permet de visualiser dynamiquement la mécanique céleste simplifiée sans nécessiter de logiciel de CAO complexe, en résolvant numériquement les équations du mouvement à chaque pas de temps.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Tous (Windows, Linux, MacOS)
Mode d’exécution Script graphique (GUI via Matplotlib)
📦 Dépendances / Librairies
numpy : Calcul vectoriel et gestion des matrices.
matplotlib : Moteur de rendu graphique et gestion de l’animation (FuncAnimation).
📥 ENTRÉES (INPUTS)
Les données sont actuellement codées en dur (Hardcoded) dans le script pour l’exemple :
| # | Nom | Type | Description | Exemple |
| :— | :— | :— | :— | :— |
| 1 | G | float | Constante gravitationnelle | 6.67430e-11 |
| 2 | DT | int | Pas de temps en secondes | 10000 |
| 3 | bodies | list | Liste d’objets Body (nom, masse, pos, vel) | Body(« Terre », …) |
📤 SORTIES (OUTPUTS)
# Nom Type Description
1 Animation Graphique Fenêtre interactive Matplotlib affichant les mouvements.
2 path list Liste des positions successives stockées pour chaque corps.
🧱 STRUCTURE DU SCRIPT
onizuka_…_333.py
│
├── 📌 CONFIGURATION PHYSIQUE (Constantes G, DT, etc.)
├── 📌 CLASSE Body (Modèle de données pour un astre)
├── 📌 FONCTIONS DE CALCUL
│ └── compute_accelerations()
├── 📌 INITIALISATION (Création des planètes)
├── 📌 SETUP VISUALISATION (Configuration des axes et styles)
└── 📌 ANIMATION (update() + FuncAnimation)
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
compute_accelerations(bodies) bodies: list list[np.array] Calcule le vecteur accélération résultant pour chaque corps.
update(frame) frame: int list Calcule la nouvelle position et met à jour les objets graphiques.
🔄 LOGIQUE / ALGORITHME
Calcul des forces : Pour chaque corps, on somme les forces exercées par tous les autres corps selon la loi : F=Gr2m1m2.
Calcul de l’accélération : a=m1F.
Intégration numérique (Euler semi-implicite) :
Mise à jour de la vitesse : vt+1=vt+a⋅dt
Mise à jour de la position : pt+1=pt+vt+1⋅dt
Rendu : Ajout du point à l’historique et rafraîchissement de l’image.
🚨 GESTION DES ERREURS
Division par zéro : Non gérée explicitement (si deux corps occupent la même position r=0, le script plantera).
Stabilité numérique : Utilise l’intégration d’Euler semi-implicite, plus stable que l’Euler classique, mais peut diverger sur de très longues simulations ou des pas de temps (DT) trop grands.
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : Les unités doivent être en SI (kg, mètres, secondes).
Règle 2 : La simulation est en 2D uniquement (plan écliptique).
Règle 3 : Les corps sont considérés comme des masses ponctuelles (pas de gestion de collision ou de volume).
🧪 TESTS ATTENDUS
# Cas de test Entrée Résultat attendu
1 Orbite stable Paramètres Terre/Soleil La Terre doit boucler une ellipse fermée.
2 Masse nulle Body avec masse 0 Accélération nulle ou erreur de division.
3 DT très grand DT = 1 000 000 La planète est éjectée du système (instabilité).
📝 EXEMPLE D’UTILISATION
▶️ Lancement en ligne de commande
Bash
python onizuka_bnwmy6yis7jayqnv_333.py



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