Model / wzór na odbijającą się piłkę

Programuję animację odbijającej się piłki i chcę, aby była jak najbardziej realistyczna.

W pełni rozumiem fizykę, gdy piłka wznosi się i opada: przyspiesza w dół z prędkością 9,8 metra / sekundę / sekundę.

Ale kiedy uderza w ziemię, jestem zagubiony. Wiem, że doświadcza pewnej kompresji, która przekłada jego prędkość ponownie w górę, w którym to momencie grawitacja jest znowu jedyną siłą działającą na niego. Ale nie wiem, jak modelować kompresję i ugięcie piłki uderzającej o ziemię.

(Mam też do czynienia tylko ze ściśle pionową prędkością liniową i przyspieszeniem. Piłka nie porusza się poziomo ani w ogóle nie obraca się. Zakładam też, że utrata oporu powietrza jest znikoma.)

Wiem, że istnieją stałe, z którymi trzeba sobie poradzić: jak bardzo piłka jest odporna na kompresję i ile energii jest tracone podczas odbicia, ale nie wiem, jak są one powiązane.

Czy ktoś może mi podać wyjaśnienie w jednym lub dwóch akapitach i / lub (a) wzór (e) i / lub wskazanie źródła, w którym mogę przeczytać więcej? (tak, spędziłem już około godziny, szukając go w Google)

Cieszę się, że mogę kontynuować czytanie o tym, dopóki nie zrozumiem, po prostu nie wiem, gdzie się teraz zwrócić.

Z góry dziękuję!

Komentarze

Odpowiedź

Mówisz, że ignorujesz tarcie powietrza, ale załóżmy częściowo nieelastyczną kolizję, co oznacza, że możemy podzielić problem dwie części:

  1. Gdy piłka nie styka się z podłożem, wysokość w chwili $ t $ po ostatnim odbiciu przy $ t_0 $ jest określona przez $$ h (t + t_0) = v_0 t – \ frac12 gt ^ 2 $$ gdzie $ v_0 $ jest prędkością tuż po odbiciu. Ta prędkość będzie się zmieniać od jednego odbicia do drugiego.
  2. Podczas uderzenia piłka odkształci się i nastąpi tarcie. Dokładny kształt piłki podczas uderzenia jest trudny do określenia w prostym równaniu, ponieważ zależy od składu piłki i podłoża. Dla uproszczenia przyjmijmy, że kulka jest „masą na lekko stratnej sprężynie ze stałą sprężystości $ k $”; wtedy piłka będzie wykazywać (w przybliżeniu) tłumiony prosty ruch harmoniczny podczas uderzenia: oznacza to, że czas uderzenia będzie niezależny od prędkości uderzenia (!)

Współczynnik restytucji jest parametrem piłki / powierzchni i odzwierciedla ułamek prędkości tuż po odbiciu podzielony przez prędkość tuż przed. W przypadku piłki golfowej wartość ta może wynosić nawet 0,8; dla piłki tenisowej to około 0,75.

Używając $ \ rho = 0,75 $, jeśli upuścisz piłkę z wysokości 5 m (i postawisz $ g = 10 ~ m / s ^ 2 $ za wygoda) wylądowałby po 1 sekundzie z prędkością 10 m / s, a po odbiciu (jakiś krótki czas $ \ Delta t $) wylądowałby ponownie z mniejszą prędkością $ v_1 = 7,5 m / s $. Czas spędzony w powietrzu do następnego odbicia wynosi $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$

Podczas gdy piłka jest w kontakcie z podłożem, możemy uznać, że jego środek porusza się w przybliżeniu sinusoidalnie – jak powiedziałem, ważne jest, aby czas kontaktu był niezależny od wysokości spadku (przy założeniu liniowej stałej sprężyny). W rzeczywistości, gdy kulka odkształca się bardziej, stała sprężystości wzrośnie – co w rzeczywistości skróci czas kontaktu wraz ze wzrostem prędkości uderzenia. Ale dla twojej symulacji, która raczej nie będzie miała znaczenia.

Aby przejść z powyższego do „modelu matematycznego”, możesz zmodyfikować ten kod Pythona do swoich potrzeb:

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

Ten kod tworzy następujący wykres:

tutaj wprowadź opis obrazu

Odpowiedź

Cóż, trudność polega na tym, że piłka dotyka ściany. Kilka rzeczy, które możesz wziąć pod uwagę.

  • elastyczny wpływ. W takim przypadku możesz potraktować piłkę jak sprężynę sprężystą. Gdy uderzy w ścianę z dużą prędkością, energia kinetyczna zostanie zamieniona na energię potencjalną sprężyny. A następnie, po osiągnięciu maksymalnego odkształcenia, kulka odbije się z powrotem w przestrzeń. Kierunek odkształcenia jest normalny dla ściany.
  • nieelastyczne uderzenie. Jest podobne do powyższego, z wyjątkiem tego, że piłka odzyskuje tylko ułamek energii kinetycznej. Jest to bliższe rzeczywistości. Strata jest zwykle opisywana za pomocą współczynnika restytucji.
  • nieelastyczne uderzenie z tarciem. Kiedy piłka uderza w ścianę pod kątem, może ślizgać się po powierzchni. To staje się bardziej bliskie rzeczywistości.
  • opór powietrza. Kiedy piłka porusza się w przestrzeni, występuje siła oporu powietrza, która ją spowalnia.

Komentarze

  • Przepraszam, wydaje mi się, że nie ' nie było wystarczająco jasne. ' mówię o częściowo nieelastycznym uderzeniu. Z mojego oryginalnego posta " … ile energii jest tracone podczas odbijania … ". Wspomniałem też w oryginalnym poście, że ' m ignoruję opór powietrza (" … I ' m zakładając znikomą utratę oporu powietrza … "), a ja ' nie próbuję modelować pędu na boki (" nieelastyczne uderzenie z tarciem "). Chcę tylko wymodelować kompresję, spowolnienie, dekompresję i przyspieszenie, które występują podczas zderzenia z ziemią oraz utratę energii związaną z całym procesem.

Odpowiedź

Visual Solutions (teraz Altair) tworzy oprogramowanie VisSim. Oto schemat blokowy demo, którego użyli do symulacji odbijającej się piłki: tutaj wprowadź opis obrazu

Bloki $ 1 / s $ są blokami integratora z biblioteki VisSim.

Wykres odbijającej się piłki z tymi parametrami pokazano poniżej.

tutaj wprowadź opis obrazu

Jeśli chcesz to uruchomić, wersja demonstracyjna jest dostarczana wraz z instalacją i możesz pobrać bezpłatną 60-dniową wersję próbną tutaj

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *