script_277cvmn_277.py

49,00 

Simulation physique 2D d’un système gravitationnel (N-corps) avec fusion de masses.

UGS : script_277cvmn_277.py Catégorie : Étiquette :

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_277cvmn_277.py

Version 1.0.0

Date de création 07/03/2026

Auteur / Demandeur IA Générée (Gemini)

Objectif principal Simulation physique 2D d’un système gravitationnel (N-corps) avec fusion de masses.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script simule graphiquement l’interaction gravitationnelle entre plusieurs corps célestes (un soleil, des planètes et une ceinture d’astéroïdes). Il calcule les forces d’attraction en temps réel, gère les orbites et simule des collisions inélastiques où les corps fusionnent lorsqu’ils se touchent.

📌 Problème résolu

Il permet de visualiser de manière interactive les lois de la gravitation de Newton et la dynamique orbitale, tout en gérant la conservation de la quantité de mouvement lors des impacts.

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.x

OS cible Windows / Linux / MacOS

Mode d’exécution Interface Graphique (GUI)

📦 Dépendances / Librairies

# Librairies standard (built-in)

math : Calculs trigonométriques et logarithmiques.

# Librairies externes (pip install)

pygame : Moteur de rendu graphique et gestion des événements.

numpy : Calcul vectoriel pour les positions et vitesses.

📥 ENTRÉES (INPUTS)

Le script ne prend pas d’arguments externes (CLI), mais possède des paramètres de configuration internes :

# Nom Type Obligatoire Description Exemple

1 WIDTH/HEIGHT int ✅ Oui Dimensions de la fenêtre 1200, 800

2 G float ✅ Oui Constante gravitationnelle de simulation 0.5

3 mass float ✅ Oui Masse d’un corps lors de l’instanciation 5000

📤 SORTIES (OUTPUTS)

# Nom Type Description

1 Fenêtre Pygame GUI Affichage temps réel des trajectoires et des corps.

2 self.path list Historique des 100 dernières positions (traînée visuelle).

🧱 STRUCTURE DU SCRIPT

script_277cvmn_277.py

├── 📌 IMPORTS (pygame, numpy, math)

├── 📌 CONSTANTES / CONFIG (Couleurs, G, Dimensions)

├── 📌 CLASSE Body (Représente un objet céleste)

├── 📌 FONCTIONS

│ ├── solve_physics() → Calcule les forces et gère les collisions

│ └── main() → Initialisation et boucle de rendu

└── 📌 MAIN (Point d’entrée)

🔧 Détail des fonctions principales

Fonction Paramètres Retour Rôle

Body.__init__ x, y, mass, vx, vy, color None Initialise la position, vitesse et rayon du corps.

solve_physics bodies: list None Applique la loi de Newton et gère les fusions.

update Aucun None Met à jour la position selon la vitesse actuelle.

draw screen None Dessine le corps et sa traînée sur l’écran.

🔄 LOGIQUE / ALGORITHME

ÉTAPE 1 → Initialisation : Création du Soleil central et génération aléatoire d’une ceinture d’astéroïdes avec vitesse orbitale théorique.

ÉTAPE 2 → Calcul des forces : Pour chaque paire de corps, calcul de la distance.

DISTANCE < RAYON ? ↓ OUI (Collision) ↓ NON Fusion inélastique Calcul de la force F=Gr2m1​m2​​ Mise à jour quantité mouvement Mise à jour du vecteur accélération ↓ ↓ ÉTAPE 3 → Intégration : Mise à jour des vitesses et des positions (v=v+a). ↓ ÉTAPE 4 → Rendu : Dessin des cercles et des lignes de traînée sur le buffer graphique. 🚨 GESTION DES ERREURS Cas d'erreur Type d'exception Comportement attendu Division par zéro ZeroDivisionError Évitée par le test de collision (dist < radius). Masse nulle ValueError Le calcul du rayon via log(mass) pourrait échouer si mass ≤ 0. Fermeture fenêtre pygame.QUIT Arrêt propre de la boucle running. ✅ CONTRAINTES & RÈGLES MÉTIER Règle 1 : La traînée visuelle est limitée aux 100 derniers points pour optimiser la mémoire. Règle 2 : En cas de collision, le corps le plus massif absorbe le plus petit. Règle 3 : La vitesse orbitale initiale est calculée pour maintenir un équilibre relatif (G⋅M/r​). 🧪 TESTS ATTENDUS # Cas de test Entrée Résultat attendu Statut 1 Cas nominal Lancement standard Orbites stables et fluides ⬜ À tester 2 Collision Deux corps se touchent Disparition d'un corps, augmentation taille de l'autre ⬜ À tester 3 Performance +50 astéroïdes Vérifier le maintien de 60 FPS ⬜ À tester 📝 EXEMPLE D'UTILISATION ▶️ Lancement en ligne de commande Bash # Nécessite pygame et numpy installés python script_277cvmn_277.py 📋 Exemple de sortie console attendue (Aucune sortie console prévue, uniquement l'ouverture d'une fenêtre graphique de 1200x800)

Avis

Il n’y a pas encore d’avis.

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

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