🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_281cvmn_281.py
Version 1.0.0
Date de création 07/03/2026
Auteur / Demandeur Gemini (IA Générée)
Objectif principal Simuler et visualiser en temps réel les interactions gravitationnelles entre trois corps célestes (Soleil, Planète, Astéroïde) avec détection de collisions.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Le script calcule les forces gravitationnelles s’exerçant entre plusieurs corps célestes à l’aide de la loi de Newton. Il anime leur mouvement dans un espace 2D, trace leurs trajectoires récentes et surveille les distances pour alerter l’utilisateur en cas d’impact physique (collision).
📌 Problème résolu
Il permet de modéliser dynamiquement des systèmes instables ou stables (orbites) et d’observer visuellement les phénomènes de capture gravitationnelle ou de collision sans nécessiter de calculs manuels complexes.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Windows / Linux / MacOS
Mode d’exécution GUI (Interface Graphique via Matplotlib)
📦 Dépendances / Librairies
Librairies standard : Aucune (uniquement des imports tiers).
Librairies externes :
numpy (Calcul vectoriel et gestion des matrices)
matplotlib (Moteur de rendu graphique et animation)
📥 ENTRÉES (INPUTS)
📂 Configuration interne (Dictionnaire self.bodies)
# Nom Type Obligatoire Description Exemple
1 pos np.array ✅ Oui Coordonnées [x, y] initiales [0.0, 0.0]
2 vel np.array ✅ Oui Vecteur vitesse initiale [vx, vy] [0.0, 30.0]
3 m float ✅ Oui Masse de l’objet (influence la gravité) 1000.0
4 r float ✅ Oui Rayon de l’objet (pour la collision) 0.5
📤 SORTIES (OUTPUTS)
📂 Données en sortie
Type Chemin / Format Description
Console Flux Standard (STDOUT) Affiche un message d’alerte lors d’une collision.
Graphique Fenêtre Matplotlib Animation interactive montrant les astres et leurs traînées.
🧱 STRUCTURE DU SCRIPT
script_281cvmn_281.py
│
├── 📌 IMPORTS (numpy, matplotlib)
├── 📌 CLASSE SpaceSimulation
│ ├── __init__() → Initialise les constantes (G) et les corps.
│ ├── compute_forces() → Calcule les vecteurs forces entre tous les couples d’objets.
│ ├── update() → Intègre les forces pour modifier vitesse et position (Euler/Verlet).
│ └── check_collisions() → Vérifie la distance entre les rayons.
└── 📌 VISUALISATION (MAIN)
├── Initialisation de la figure noire.
├── Fonction animate() → Boucle de rafraîchissement.
└── FuncAnimation → Lancement du moteur de rendu.
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
compute_forces(positions) positions (dict) forces (dict) Calcule la force résultante pour chaque corps selon F=Gd2m1m2.
update() Aucun None Applique l’accélération (a=F/m) et met à jour les coordonnées.
check_collisions() Aucun str / None Retourne un message si la distance
📝 EXEMPLE D’UTILISATION
▶️ Lancement direct
Bash
python script_281cvmn_281.py
📋 Exemple de sortie console (en cas d’impact)
Plaintext
💥 COLLISION détectée entre Soleil et Asteroide !



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