script_298cvmn_298.py

49,00 

Simuler et animer en temps réel la trajectoire d’un projectile soumis à la gravité avec gestion des rebonds sur le sol.

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

🔷 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.

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

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