Malli / kaava pallon palauttamiseen

Ohjelmoin pomppivan pallon animaation ja haluan sen olevan mahdollisimman realistinen.

Ymmärrän täysin fysiikan, kun pallo nousee ja putoaa: Se kiihtyy alaspäin nopeudella 9,8 metriä / sekunti / sekunti.

Mutta kun se osuu maahan, menetin. Tiedän, että se kokee jonkin verran puristusta, joka kääntää sen nopeuden jälleen ylöspäin, missä vaiheessa painovoima on jälleen ainoa siihen vaikuttava voima. Mutta en tiedä miten mallintaa palloon osuvan pallon puristusta ja taipumista.

(Lisäksi ”käsittelen vain tiukasti pystysuoraa lineaarista nopeutta ja kiihtyvyyttä. Pallo ei” liikku vaakasuoraan tai pyöri lainkaan. Ja oletan, että ilmanvastuksen menetys on vähäinen. ”)

Tiedän, että on käsiteltävä vakioita: kuinka paljon pallo vastustaa puristusta ja kuinka paljon energiaa menetetään palautumisen aikana, mutta en tiedä miten ne liittyvät toisiinsa.

Voiko kukaan antaa minulle yhden tai kahden kappaleen selitys ja / tai (a) kaava (e) ja / tai ohjaa minut resurssiin, josta voin lukea lisää? (kyllä, olen jo viettänyt tunnin tai niin Googlen sitä)

Jatkan mielelläni sitä, kunnes ymmärrän, en vain tiedä minne kääntyä tässä vaiheessa.

Kiitos etukäteen!

Kommentit

vastaus

Sanot, että sivuutat ilman kitkaa, mutta oletetaan osittain joustamaton törmäys. Se tarkoittaa, että voimme hajottaa ongelman kaksi osaa:

  1. Vaikka pallo ei ole kosketuksessa maahan, korkeuden hetkellä $ t $ viimeisen pudotuksen jälkeen $ t_0 $: ssa antaa $$ h (t + t_0) = v_0 t – \ frac12 gt ^ 2 $$, jossa $ v_0 $ on nopeus heti palautumisen jälkeen. Tämä nopeus muuttuu pomppimisesta toiseen.
  2. Iskun aikana pallo deformoituu ja tapahtuu kitkaa. Pallon tarkkaa muotoa iskun aikana on vaikea saada yksinkertaisessa yhtälössä, koska se riippuu pallon ja lattian koostumuksesta. Pidä yksinkertaistavana oletuksena palloa ”massana hieman häviöllisellä jousella, jossa jousivakio $ k $”; tällöin pallolla on (suunnilleen) vaimennettu yksinkertainen harmoninen liike iskun aikana: tämä tarkoittaa, että iskuaika on riippumaton iskun nopeudesta (!)

Palautuskerroin on pallon / pinnan parametri, ja se heijastaa heti pomppimisen jälkeen jaetun nopeuden osuuden juuri sitä edeltävällä nopeudella. Golfpallolla tämä voi olla jopa 0,8; tennispallolle se on noin 0,75.

Käyttämällä $ \ rho = 0,75 $, jos pudotat pallon 5 metrin korkeudesta (ja asetat $ g = 10 ~ m / s ^ 2 $ mukavuus) se laskeutui 1 sekunnin kuluttua nopeudella 10 m / s, ja palautumisen jälkeen (jonkin aikaa $ \ Delta t $) se nousi taas pienemmällä nopeudella $ v_1 = 7,5 m / s $. Ilmassa vietetyn ajan seuraavaan pudotukseen antaa $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$

Pallon aikana on kosketuksessa maan kanssa, voimme ajatella sen keskipisteen liikkuvan suunnilleen sinimuotoisella tavalla – kuten sanoin, on tärkeää, että kosketusaika on riippumaton pudotuskorkeudesta (olettaen lineaarisen jousivakion). Todellisuudessa, kun pallo muuttuu enemmän, jousivakio kasvaa – mikä lyhentää kosketusaikaa, kun iskunopeus on suurempi. Mutta simulaatiollesi, jolla ei todennäköisesti ole väliä.

Jos haluat päästä yllä olevasta ”matemaattiseen malliin”, sinun kannattaa muokata tätä python-koodia tarpeidesi mukaan:

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

Tämä koodi tuottaa seuraavan kaavion:

kirjoita kuvan kuvaus tähän

Vastaa

No, vaikeuksia on, kun pallo on kosketuksessa seinään. Harvat asiat, joita voit harkita.

  • joustava vaikutus. Tässä tapauksessa voit kohdella palloa joustavana jousena. Kun se iskee seinään nopeasti, liike-energia muuttuu jousen potentiaalienergiaksi. Ja sitten kun se saavuttaa suurimman muodonmuutoksen, pallo nousee takaisin avaruuteen. Muodonmuutosuunta on normaali seinälle.
  • joustamaton vaikutus. Tämä on samanlainen kuin yllä, paitsi että pallo palauttaa vain murto-osan kineettisestä energiasta. Tämä on lähempänä todellisuutta. Häviö kuvataan yleensä käyttämällä palautumiskerrointa.
  • joustamaton vaikutus kitkaan. Kun pallo osuu kulmaan seinään, pallo voi liukua pintaan. Tämä tulee lähemmäksi todellisuutta.
  • ilmavirta. Kun pallo liikkuu, on tilaa, ilman hidastusvoima hidastaa sitä.

kommentit

  • Anteeksi, luulen, että en ollut ' riittävän selkeä. ' puhun osittain joustamattomista vaikutuksista. Alkuperäisestä viestistäni " … kuinka paljon energiaa menetetään palautumisen aikana … ". Mainitsin myös alkuperäisessä viestissä, että ' jätin huomiotta ilmanvastuksen (" … I ' m olettaen, että ilmavastuksen menetys on vähäinen … "), enkä ' yritä mallintaa sivuttaisvoimaa (" joustamaton vaikutus kitkalla "). Haluan vain mallintaa puristuksen, hidastuvuuden, puristuksen ja kiihtyvyyden, joita tapahtuu törmäyksessä maahan, ja koko prosessille ominainen energian menetys.

Vastaa

Visual Solutions (Now Altair) tekee VisSim-ohjelmiston. Tässä on esittelylohkokaavio, jota he ovat käyttäneet pomppivan pallon simulointiin: kirjoita kuvan kuvaus tähän

$ 1 / s $ -lohkot ovat integraattorilohkoja VisSim-kirjastosta.

Alla on esitetty näillä parametreilla palautuvan pallon juoni.

kirjoita kuvan kuvaus tähän

Jos olet kiinnostunut suorittamaan tämän, esittely tulee asennuksen mukana ja voit ladata ilmaisen 60 päivän kokeilujakson täältä

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *