Model / formulă pentru mingea săritoare

Programez o animație a unei mingi care sări și vreau să fie cât mai realistă.

Înțeleg pe deplin fizica în timp ce mingea crește și cade: accelerează în jos la 9,8 metri / secundă / secundă.

Dar odată ce a lovit solul, am pierdut. Știu că se confruntă cu o oarecare compresie, ceea ce îl transformă din nou în viteza în sus, moment în care gravitația este din nou singura forță care acționează asupra ei. Dar nu știu cum să modelez compresia și devierea mingii care lovește solul.

(De asemenea, mă ocup doar de viteza și accelerația liniară strict verticale. Mingea nu călătorește orizontal sau nu se rotește deloc. Și presupun o pierdere neglijabilă a rezistenței aerului.)

Știu că există constante de rezolvat: cât de mult rezistă mingea la compresie și cât de multă energie se pierde în timpul săriturii, dar nu știu cum sunt legate.

Poate cineva să-mi dea o explicație cu unu sau două paragrafe și / sau (a) formula (e) și / sau mă îndreaptă către o resursă unde pot citi mai multe? (da, „am petrecut deja o oră cam așa căutând în Google)

Sunt fericit să continui să citesc despre asta până când înțeleg, doar că nu știu unde să mă întorc în acest moment.

Vă mulțumim anticipat!

Comentarii

Răspuns

Spuneți că ignorați fricțiunea aerului, dar presupunem o coliziune parțial inelastică. Asta înseamnă că putem rupe problema în două părți:

  1. În timp ce mingea nu este în contact cu solul, înălțimea la momentul $ t $ după ultima săritură la $ t_0 $ este dată de $$ h (t + t_0) = v_0 t – \ frac12 gt ^ 2 $$ unde $ v_0 $ este viteza imediat după săritură. Această viteză se va schimba de la o săritură la alta.
  2. În timpul impactului, mingea se va deforma și va exista frecare. Forma exactă a mingii în timpul impactului este greu de surprins într-o ecuație simplă, deoarece depinde de compoziția mingii și de podea. Ca o presupunere simplificatoare, considerați că bila este o „masă pe un arc ușor cu pierderi cu o constantă a arcului $ k $”; atunci mingea va prezenta (aproximativ) mișcare armonică simplă amortizată în timpul impactului: aceasta înseamnă că timpul de impact va fi independent de viteza impactului (!)

coeficientul de restituire este un parametru al unei bile / suprafețe și reflectă fracția de viteză imediat după săritură împărțită la viteza de chiar înainte. Pentru o minge de golf, aceasta poate ajunge la 0,8; pentru o minge de tenis este în jur de 0,75.

Folosind $ \ rho = 0,75 $, dacă aruncați o minge de la o înălțime de 5 m (și puneți $ g = 10 ~ m / s ^ 2 $ pentru comoditate) ar ateriza după o secundă cu o viteză de 10 m / s, iar după săritură (o perioadă scurtă de timp $ \ Delta t $) ar reveni cu o viteză mai mică $ v_1 = 7,5 m / s $. Timpul petrecut în aer până la următorul salt este dat de $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$

În timp ce mingea este în contact cu solul, putem considera că centrul său se deplasează într-un mod aproximativ sinusoidal – așa cum am spus, important este că timpul de contact este independent de înălțimea de cădere (în ipoteza constantei liniare a arcului). În realitate, pe măsură ce bila se deformează mai mult, constanta arcului va crește – ceea ce va face de fapt timpul de contact mai scurt pe măsură ce viteza de impact este mai mare. Dar pentru simularea dvs. este puțin probabil să conteze.

Pentru a trece de la cele de mai sus la un „model matematic”, vă recomandăm să modificați acest cod python în funcție de nevoile dvs.:

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

Acest cod produce următorul grafic:

introduceți descrierea imaginii aici

Răspuns

Ei bine, dificultatea este atunci când mingea este în contact cu peretele. Puține lucruri pe care le poți lua în considerare.

  • impact elastic. În acest caz, puteți trata mingea ca un arc elastic. Când impactează peretele cu o viteză, energia cinetică va fi convertită în energia potențială a arcului. Apoi, după ce atinge deformarea maximă, bila va reveni în spațiu. Direcția de deformare este normală pentru perete.
  • impact inelastic. Acesta este similar cu cel de mai sus, cu excepția faptului că mingea recuperează doar o fracțiune de energie cinetică. Aceasta este mai aproape de realitate. Pierderea este de obicei descrisă utilizând coeficientul de restituire.
  • impact inelastic cu frecare. Când mingea lovește un perete cu un unghi, bila poate aluneca pe suprafață. Acest lucru devine mai apropiat de realitate.
  • tragere aeriană. Când mingea se mișcă este spațiu, există forță de tragere a aerului pentru ao încetini.

Comentarii

  • Ne pare rău, cred că nu am fost suficient de clar '. ' vorbesc despre impactul parțial inelastic. Din postarea mea inițială " … câtă energie se pierde în timpul săriturii … ". De asemenea, am menționat în postarea originală: ' ignor ignorarea aerului (" … I ' presupunând o pierdere neglijabilă a rezistenței aerului … ") și eu ' nu încerc să modelez impulsul lateral (" impact inelastic cu frecare "). Vreau doar să modelez compresia, decelerarea, decompresia și accelerația care apar în timpul impactului cu solul și pierderea de energie inerentă întregului proces.

Răspuns

Visual Solutions (Now Altair) face software VisSim. Iată o diagramă bloc demo pe care au folosit-o pentru a simula o minge care revine: introduceți descrierea imaginii aici

Blocurile $ 1 / s $ sunt blocuri integratoare din biblioteca VisSim.

Graficul mingii care revine cu acești parametri este prezentat mai jos.

introduceți descrierea imaginii aici

Dacă sunteți interesat să rulați acest lucru, demo-ul vine cu instalarea și puteți descărca o perioadă de încercare gratuită de 60 de zile aici

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *