Modello / formula per rimbalzare una palla

Sto programmando unanimazione di una palla che rimbalza e voglio che sia il più realistica possibile.

Comprendo appieno la fisica mentre la palla sale e scende: accelera verso il basso a 9,8 metri / secondo / secondo.

Ma una volta che tocca il suolo, sono perso. So che subisce una compressione che traduce di nuovo la sua velocità verso lalto, a quel punto la gravità è di nuovo lunica forza che agisce su di essa. Ma non so come modellare la compressione e la deviazione della palla che colpisce il suolo. / p>

(Inoltre, ho a che fare solo con velocità e accelerazione lineari strettamente verticali. La palla non sta viaggiando orizzontalmente o ruotando affatto. E sto assumendo una perdita trascurabile per la resistenza dellaria.)

So che ci sono costanti da affrontare: quanto la palla resiste alla compressione e quanta energia si perde durante il rimbalzo, ma non so come siano correlate.

Qualcuno può darmi una spiegazione di uno o due paragrafi e / o (a) formula (e) e / o indicami una risorsa dove posso leggere di più? (sì, ho già passato circa unora a cercarlo su Google)

Sono felice di continuare a leggerlo fino a quando non capisco, semplicemente non so a chi rivolgermi a questo punto.

Grazie in anticipo!

Commenti

Risposta

Dici che stai ignorando lattrito dellaria, ma presumere una collisione parzialmente anelastica, il che significa che possiamo suddividere il problema in due parti:

  1. Mentre la palla non è a contatto con il suolo, laltezza al momento $ t $ dopo lultimo rimbalzo a $ t_0 $ è data da $$ h (t + t_0) = v_0 t – \ frac12 gt ^ 2 $$ dove $ v_0 $ è la velocità subito dopo il rimbalzo. Questa velocità cambierà da un rimbalzo al successivo.
  2. Durante limpatto, la palla si deformerà e ci sarà attrito. La forma esatta della palla durante limpatto è difficile da catturare in una semplice equazione perché dipende dalla composizione della palla e dal pavimento. Come ipotesi semplificativa, si consideri la palla come una “massa su una molla leggermente con perdita con una costante di molla $ k $”; quindi la palla mostrerà (approssimativamente) un semplice movimento armonico smorzato durante limpatto: questo significa che il tempo di impatto sarà indipendente dalla velocità di impatto (!)

Il coefficiente di restituzione è un parametro di una palla / superficie e riflette la frazione di velocità subito dopo il rimbalzo divisa per la velocità appena prima. Per una pallina da golf, questo può arrivare fino a 0,8; per una pallina da tennis è di circa 0,75.

Usando $ \ rho = 0,75 $, se lasci cadere una palla da unaltezza di 5 m (e mettendo $ g = 10 ~ m / s ^ 2 $ per convenienza) atterrerebbe dopo 1 secondo con una velocità di 10 m / s, e dopo il rimbalzo (un po di tempo $ \ Delta t $) risalirebbe con una velocità inferiore $ v_1 = 7.5 m / s $. Il tempo trascorso in aria fino al successivo rimbalzo è dato da $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$

Mentre la palla è a contatto con il suolo, possiamo considerare che il suo centro si muova in modo approssimativamente sinusoidale – come ho detto, limportante è che il tempo di contatto sia indipendente dallaltezza di caduta (ipotizzando una costante elastica lineare). In realtà, man mano che la palla si deforma maggiormente, la costante della molla aumenterà, il che ridurrà effettivamente il tempo di contatto allaumentare della velocità di impatto. Ma per la tua simulazione è improbabile che abbia importanza.

Per passare da quanto sopra a un “modello matematico” potresti voler modificare questo codice Python secondo le tue esigenze:

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") 

Questo codice produce la seguente trama:

inserisci qui la descrizione dellimmagine

Risposta

La difficoltà è quando la palla è a contatto con il muro. Poche cose che puoi considerare.

  • impatto elastico. In questo caso, puoi trattare la palla come una molla elastica. Quando colpisce il muro con una velocità, lenergia cinetica verrà convertita in energia potenziale della molla. E poi, dopo aver raggiunto la massima deformazione, la sfera balzerà indietro nello spazio. La direzione di deformazione è normale al muro.
  • Impatto anelastico. Questo è simile al precedente eccetto che la palla recupera solo una frazione dellenergia cinetica. Questo è più vicino alla realtà. La perdita è solitamente descritta usando il coefficiente di restituzione.
  • Impatto anelastico con attrito. Quando la palla colpisce un muro con un angolo, la palla può scivolare sulla superficie. Questo diventa più vicino alla realtà.
  • resistenza allaria. Quando la palla si muove è lo spazio, cè la forza di trascinamento dellaria per rallentarla.

Commenti

  • Scusa, immagino di non essere stato ' abbastanza chiaro. Sto ' parlando di un impatto parzialmente anelastico. Dal mio post originale " … quanta energia si perde durante il rimbalzo … ". Inoltre, ho menzionato nel post originale, ' ignoro la resistenza aerodinamica (" … I ' presumo una perdita trascurabile per la resistenza dellaria … ") e ' non sto cercando di modellare lo slancio laterale (" impatto anelastico con attrito "). Voglio solo modellare la compressione, la decelerazione, la decompressione e laccelerazione che si verificano durante limpatto con il suolo e la perdita di energia inerente allintero processo.

Risposta

Visual Solutions (ora Altair) produce VisSim Software. Ecco un diagramma a blocchi dimostrativo che hanno utilizzato per simulare una palla che rimbalza: inserisci la descrizione dellimmagine qui

I blocchi $ 1 / s $ sono blocchi integratori della libreria VisSim.

Il grafico della palla che rimbalza con questi parametri è mostrato sotto.

inserisci qui la descrizione dellimmagine

Se sei interessato a eseguirlo, la demo viene fornita con linstallazione e puoi scaricare una prova gratuita di 60 giorni qui

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *