Modèle / formule pour balle rebondissante

Je programme une animation de balle rebondissante, et je veux quelle soit aussi réaliste que possible.

Je comprends parfaitement la physique pendant que la balle monte et descend: elle accélère vers le bas à 9,8 mètres / seconde / seconde.

Mais une fois quelle touche le sol, je suis perdu. Je sais quil subit une certaine compression qui traduit sa vitesse à nouveau vers le haut, à quel point la gravité est à nouveau la seule force agissant sur elle. Mais je ne sais pas comment modéliser la compression et la déviation de la balle frappant le sol.

(De plus, je ne traite que de la vitesse et de laccélération linéaires strictement verticales. La balle ne se déplace pas horizontalement ou ne tourne pas du tout. Et je suppose une perte négligeable de résistance à lair.)

Je sais quil y a des constantes à gérer: combien la balle résiste à la compression et combien dénergie est perdue pendant le rebond, mais je ne sais pas comment elles sont liées.

Quelquun peut-il me donner une explication en un ou deux paragraphes et / ou (a) formule (e) et / ou me diriger vers une ressource où je peux en savoir plus? (oui, jai déjà passé environ une heure à le rechercher sur Google)

Je suis heureux de continuer à lire à ce sujet jusquà ce que je comprenne, je ne sais tout simplement pas vers qui me tourner pour le moment.

Merci davance!

Commentaires

Réponse

Vous dites que vous ignorez le frottement de lair, mais supposons une collision partiellement inélastique. Cela signifie que nous pouvons diviser le problème en deux parties:

  1. Tant que la balle nest pas en contact avec le sol, la hauteur au temps $ t $ après le dernier rebond à $ t_0 $ est donnée par $$ h (t + t_0) = v_0 t – \ frac12 gt ^ 2 $$ où $ v_0 $ est la vitesse juste après le rebond. Cette vitesse changera dun rebond à lautre.
  2. Pendant limpact, la balle se déformera et il y aura frottement. La forme exacte de la balle lors de limpact est difficile à saisir dans une équation simple car elle dépend de la composition de la balle et du sol. En guise dhypothèse simplificatrice, considérons la bille comme une « masse sur un ressort légèrement à perte avec une constante de ressort $ k $ »; alors la balle présentera un mouvement harmonique simple (approximativement) amorti lors de limpact: cela signifie que le temps dimpact sera indépendant de la vitesse dimpact (!)

Le coefficient de restitution est un paramètre de balle / surface, et reflète la fraction de vitesse juste après le rebond divisée par la vitesse juste avant. Pour une balle de golf, cela peut atteindre 0,8; pour une balle de tennis, il est denviron 0,75.

En utilisant $ \ rho = 0,75 $, si vous laissez tomber une balle dune hauteur de 5 m (et en mettant $ g = 10 ~ m / s ^ 2 $ pour commodité) il atterrirait après 1 seconde avec une vitesse de 10 m / s, et après le rebond (peu de temps $ \ Delta t $) il reviendrait avec une vitesse inférieure $ v_1 = 7,5 m / s $. Le temps passé dans les airs jusquau prochain rebond est donné par $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$

Alors que le ballon est en contact avec le sol, on peut considérer que son centre se déplace de manière approximativement sinusoïdale – comme je lai dit, limportant est que le temps de contact soit indépendant de la hauteur de chute (dans lhypothèse dune constante de ressort linéaire). En réalité, à mesure que la balle se déforme davantage, la constante du ressort augmentera – ce qui réduira en fait le temps de contact à mesure que la vitesse dimpact est plus élevée. Mais pour votre simulation, il est peu probable que cela compte.

Pour passer de ce qui précède à un « modèle mathématique », vous voudrez peut-être modifier ce code python en fonction de vos besoins:

from math import sqrt import matplotlib.pyplot as plt h0 = 5 # m/s v = 0 # m/s, current velocity g = 10 # m/s/s t = 0 # starting time dt = 0.001 # time step rho = 0.75 # coefficient of restitution tau = 0.10 # contact time for bounce hmax = h0 # keep track of the maximum height h = h0 hstop = 0.01 # stop when bounce is less than 1 cm freefall = True # state: freefall or in contact t_last = -sqrt(2*h0/g) # time we would have launched to get to h0 at t=0 vmax = sqrt(2 * hmax * g) H = [] T = [] while(hmax > hstop): if(freefall): hnew = h + v*dt - 0.5*g*dt*dt if(hnew<0): t = t_last + 2*sqrt(2*hmax/g) freefall = False t_last = t + tau h = 0 else: t = t + dt v = v - g*dt h = hnew else: t = t + tau vmax = vmax * rho v = vmax freefall = True h = 0 hmax = 0.5*vmax*vmax/g H.append(h) T.append(t) print("stopped bouncing at t=%.3f\n"%(t)) plt.figure() plt.plot(T, H) plt.xlabel("time") plt.ylabel("height") plt.title("bouncing ball") 

Ce code produit le tracé suivant:

entrez la description de limage ici

Réponse

Eh bien la difficulté est quand la balle est en contact avec le mur. Peu de choses que vous pouvez considérer.

  • impact élastique. Dans ce cas, vous pouvez traiter la balle comme un ressort élastique. Lorsquelle heurte le mur avec une vitesse, lénergie cinétique sera convertie en énergie potentielle du ressort. Et puis, après avoir atteint la déformation maximale, la balle reviendra dans lespace. La direction de la déformation est normale au mur.
  • impact inélastique. Ceci est similaire à ce qui précède sauf que la balle ne récupère quune fraction de lénergie cinétique. Ceci est plus proche de la réalité. La perte est généralement décrite à laide dun coefficient de restitution.
  • impact inélastique avec frottement. Lorsque la balle touche un mur avec un angle, la balle peut glisser sur la surface. Cela devient plus proche de la réalité.
  • traînée aérienne. Lorsque la balle se déplace dans lespace, il y a une force de traînée dair pour la ralentir.

Commentaires

  • Désolé, je suppose que je n’étais ' pas assez clair. Je ' m parle dun impact partiellement inélastique. Daprès mon message dorigine " … combien dénergie est perdue pendant le rebond … ". De plus, jai mentionné dans le message original que je ' m ignorant la traînée de lair (" … I ' m en supposant une perte négligeable de la résistance à lair … "), et je ' m nessaie pas de modéliser lélan latéral (" impact inélastique avec frottement "). Je veux simplement modéliser la compression, la décélération, la décompression et laccélération qui se produisent lors de limpact avec le sol, et la perte dénergie inhérente à lensemble du processus.

Réponse

Visual Solutions (maintenant Altair) crée le logiciel VisSim. Voici un schéma fonctionnel de démonstration quils ont utilisé pour simuler une balle qui rebondit: entrez la description de limage ici

Les blocs $ 1 / s $ sont des blocs intégrateurs de la bibliothèque VisSim.

Le tracé de la balle rebondissante avec ces paramètres est montré ci-dessous.

entrez la description de limage ici

Si vous souhaitez exécuter ceci, la démo est fournie avec linstallation et vous pouvez télécharger un essai gratuit de 60 jours ici

Laisser un commentaire

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