🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_298cvmn_298.py
Version 1.0.0
Date de création 09/03/2026
Auteur / Demandeur IA Générée (Gemini)
Objectif principal Simuler et animer en temps réel la trajectoire d’un projectile soumis à la gravité avec gestion des rebonds sur le sol.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script simule la physique d’un objet lancé avec une vitesse initiale et un angle précis. Il calcule la trajectoire parabolique, gère les collisions avec le sol en appliquant un coefficient de restitution (perte d’énergie au rebond) et anime le résultat graphiquement.
📌 Problème résolu
Il permet de visualiser dynamiquement l’influence de la gravité, de l’angle de tir et de l’élasticité des matériaux sur le déplacement d’un projectile, utile pour le prototypage de moteurs physiques de jeux vidéo.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Windows / Linux / MacOS
Mode d’exécution Interface graphique (Matplotlib Window)
📦 Dépendances / Librairies
Librairies externes (pip install)
numpy (Calculs vectoriels et conversions)
matplotlib (Moteur de rendu graphique et animation)
📥 ENTRÉES (INPUTS)
# Nom Type Obligatoire Description Exemple
1 v0 float ✅ Oui Vitesse initiale du projectile 15
2 angle_deg float ✅ Oui Angle de tir en degrés 45
3 bounce_coeff float ❌ Non Élasticité du rebond (0 à 1) 0.6
📤 SORTIES (OUTPUTS)
# Nom Type Description Exemple
1 ani Object Animation interactive Matplotlib Fenêtre surgissante
2 traj_x/y list Listes des coordonnées historiques [0.0, 0.75, …]
🧱 STRUCTURE DU SCRIPT
script_298cvmn_298.py
│
├── 📌 IMPORTS (numpy, matplotlib.plt, FuncAnimation)
├── 📌 CLASSES
│ └── ProjectileEngine → Gère la logique physique et l’état
├── 📌 CONFIGURATION
│ └── Instanciation de sim et setup de la figure ax
├── 📌 FONCTIONS D’ANIMATION
│ ├── init() → Initialise le tracé
│ └── animate(i) → Met à jour la physique et le graphique
└── 📌 MAIN (Boucle plt.show())
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
ProjectileEngine.update() Aucun None Calcule x,y selon la méthode d’Euler et gère le rebond.
animate(i) i: int line Appelle le moteur physique et rafraîchit le tracé.
🔄 LOGIQUE / ALGORITHME
ÉTAPE 1 → Initialisation des vecteurs vitesse (vx,vy) via cos et sin de l’angle.
ÉTAPE 2 → Calcul de la nouvelle position : y=y+vy⋅dt.
ÉTAPE 3 → Condition de collision : Est-ce que y≤0 ?
OUI : Inversion de vy et multiplication par bounce_coeff. Si vy est trop faible, arrêt du mouvement vertical et application de friction sur vx.
NON : Poursuite de la chute libre (application de g).
ÉTAPE 4 → Stockage des points dans l’historique et mise à jour des données de la ligne à l’écran.
🚨 GESTION DES ERREURS
Valeurs physiques : Le script ne vérifie pas si v0 est négatif ou si bounce_coeff > 1 (ce qui créerait une accélération infinie).
Dépendances : Si matplotlib n’est pas installé, le script lèvera une ImportError.
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : Le sol est fixe à la valeur ground_level (par défaut 0).
Règle 2 : La simulation s’arrête virtuellement (friction) quand l’énergie de rebond devient négligeable (<0.2). Règle 3 : Le pas de temps (dt) est fixe à 0.05s pour garantir la stabilité visuelle. 🧪 TESTS ATTENDUS # Cas de test Entrée Résultat attendu Statut 1 Tir vertical angle_deg=90 Rebonds sur place (même X) ⬜ À tester 2 Aucun rebond bounce_coeff=0 L'objet s'arrête net au sol ⬜ À tester 3 Tir horizontal angle_deg=0 Chute immédiate depuis 1m ⬜ À tester 📊 PERFORMANCES ATTENDUES Temps d'exécution : Temps réel (60 FPS visé via interval=20). Consommation mémoire : Très faible (<100 Mo), croît légèrement avec la longueur des listes traj_x/y. 📝 EXEMPLE D'UTILISATION ▶️ Lancement direct Bash python script_298cvmn_298.py 📋 Exemple de sortie attendue Une fenêtre s'ouvre montrant une balle bleue décrivant des paraboles de plus en plus petites vers la droite jusqu'à finir par glisser au sol.



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