Model / formule voor stuiterende bal

Ik programmeer een animatie van een stuiterende bal, en ik wil dat deze zo realistisch mogelijk is.

Ik begrijp de fysica volledig terwijl de bal stijgt en daalt: hij accelereert naar beneden met 9,8 meter / seconde / seconde.

Maar zodra hij de grond raakt, ben ik verdwaald. Ik weet dat het enige compressie ervaart die zijn snelheid weer naar boven vertaalt, op welk punt de zwaartekracht weer de enige kracht is die erop inwerkt. Maar ik weet niet hoe ik de compressie en afbuiging van de bal die de grond raakt, moet modelleren. / p>

(Ik heb ook alleen te maken met strikt verticale lineaire snelheid en versnelling. De bal beweegt helemaal niet horizontaal of roteert helemaal niet. En ik ga uit van een verwaarloosbaar verlies aan luchtweerstand.)

Ik weet dat er constanten zijn om mee om te gaan: hoeveel de bal compressie weerstaat en hoeveel energie er verloren gaat tijdens het stuiteren, maar ik weet niet hoe ze gerelateerd zijn.

Kan iemand me geven een uitleg van één of twee alineas en / of (a) formule (e) en / of mij naar een bron verwijzen waar ik meer kan lezen? (ja, ik heb er al een uur of zo naar gegoogeld)

Ik ben blij om erover te blijven lezen totdat ik het begrijp, ik weet op dit moment gewoon niet waar ik moet afslaan.

Bij voorbaat dank!

Opmerkingen

Antwoord

U zegt dat u de wrijving van de lucht negeert, maar gaan uit van een gedeeltelijk onelastische botsing, dat betekent dat we het probleem in kunnen breken twee delen:

  1. Terwijl de bal niet in contact is met de grond, wordt de hoogte op het moment $ t $ na de laatste stuitering op $ t_0 $ gegeven door $$ h (t + t_0) = v_0 t – \ frac12 gt ^ 2 $$ waarbij $ v_0 $ de snelheid is net na de bounce. Deze snelheid zal veranderen van de ene stuiter naar de andere.
  2. Tijdens de impact zal de bal vervormen en zal er wrijving zijn. De exacte vorm van de bal tijdens de impact is moeilijk in een eenvoudige vergelijking te vatten omdat deze afhangt van de samenstelling van de bal en de vloer. Als een vereenvoudigde aanname, beschouw de bal als een “massa op een enigszins verlieslatende veer met een veerconstante $ k $”; dan zal de bal (ongeveer) gedempte eenvoudige harmonische beweging vertonen tijdens de impact: dit betekent dat de impacttijd onafhankelijk zal zijn van de impactsnelheid (!)

De restitutiecoëfficiënt is een parameter van een bal / oppervlak en weerspiegelt de fractie van de snelheid net na het stuiteren gedeeld door de snelheid net ervoor. Voor een golfbal kan dit oplopen tot 0,8; voor een tennisbal is het ongeveer 0,75.

Als je $ \ rho = 0,75 $ gebruikt, als je een bal laat vallen vanaf een hoogte van 5 m (en $ g = 10 ~ m / s ^ 2 $ voor gemak) zou het na 1 seconde landen met een snelheid van 10 m / s, en na het stuiteren (enige tijd $ \ Delta t $) zou het weer omhoog komen met een lagere snelheid $ v_1 = 7,5 m / s $. De tijd die in de lucht wordt doorgebracht tot de volgende stuitering wordt gegeven door $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$

Terwijl de bal in contact is met de grond, kunnen we ervan uitgaan dat het midden ervan ongeveer sinusoïdaal beweegt – zoals ik al zei, het belangrijkste is dat de contacttijd onafhankelijk is van de valhoogte (uitgaande van een lineaire veerconstante). In werkelijkheid, naarmate de bal meer vervormt, zal de veerconstante toenemen – wat de contacttijd in feite korter maakt naarmate de botssnelheid hoger is. Maar voor uw simulatie is het onwaarschijnlijk dat dit er toe doet.

Om van het bovenstaande naar een “wiskundig model” te komen, wilt u misschien deze pythoncode aan uw behoeften aanpassen:

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

Deze code levert de volgende plot op:

voer hier de afbeeldingsbeschrijving in

Antwoord

Nou, de moeilijkheid is wanneer de bal in contact komt met de muur. Er zijn maar weinig dingen die u kunt overwegen.

  • elastische impact. In dit geval kun je de bal behandelen als een elastische veer. Wanneer het met een snelheid op de muur botst, wordt de kinetische energie omgezet in de potentiële energie van de veer. En dan, nadat het de maximale vervorming heeft bereikt, springt de bal terug de ruimte in. De vervormingsrichting is normaal voor de muur.
  • inelastische impact. Dit is vergelijkbaar met het bovenstaande, behalve dat de bal slechts een fractie van de kinetische energie herstelt. Dit komt dichter bij de realiteit. Het verlies wordt meestal beschreven met behulp van de restitutiecoëfficiënt.
  • niet-elastische impact met wrijving. Als de bal onder een hoek een muur raakt, kan de bal over het oppervlak glijden. Dit komt dichter bij de realiteit.
  • luchtweerstand. Wanneer de bal in beweging is, is er ruimte, er is luchtweerstand om hem te vertragen.

Reacties

  • Sorry, ik denk dat ik niet ' niet duidelijk genoeg was. Ik ' heb het over gedeeltelijk inelastische impact. Van mijn oorspronkelijke bericht " … hoeveel energie gaat er verloren tijdens het stuiteren … ". In het oorspronkelijke bericht noemde ik ook dat ik ' m de luchtweerstand negeerde (" … I ' m uitgaande van een verwaarloosbaar verlies aan luchtweerstand … "), en ik ' m niet proberen om zijwaarts momentum te modelleren (" inelastische impact met wrijving "). Ik wil alleen de compressie, vertraging, decompressie en versnelling modelleren die optreden tijdens een botsing met de grond, en het energieverlies dat inherent is aan het hele proces.

Antwoord

Visual Solutions (nu Altair) maakt VisSim Software. Hier is een demo-blokdiagram dat ze hebben gebruikt om een stuiterende bal te simuleren: voer de beschrijving van de afbeelding hier in

De $ 1 / s $ -blokken zijn integratorblokken uit de VisSim-bibliotheek.

De plot van de stuiterende bal met deze parameters wordt hieronder weergegeven.

voer hier een beschrijving van de afbeelding in

Als u hierin geïnteresseerd bent, wordt de demo geleverd met de installatie en u kunt hier

een gratis proefperiode van 60 dagen downloaden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *