Jak obliczyć opóźnienie potrzebne do osiągnięcia określonej prędkości w określonej odległości?
Wypróbowałem w tym celu typowe równania fizyki, ale żaden z nich naprawdę nie działa, ponieważ równania radzą sobie ze stałym przyspieszeniem, a moje będą musiały zmienić się, aby działać poprawnie. Zasadniczo mam samochód, który może jeździć z dużym zakresem prędkości i musi zwolnić i zatrzymać się w danej odległości i czasie, gdy osiągnie koniec swojej ścieżki.
Więc mam:V0
lub bieżąca prędkośćVf
lub prędkość, którą chcę osiągnąć (zazwyczaj 0)t
lub ilość czasu, którą chcę poświęcić, aby dotrzeć do końca mojej ścieżkid
lub odległość, którą chcę pokonać, zmieniając V0 na Vf
Chcę obliczyća
lub przyspieszenie potrzebne do przejścia z V0 do Vf
Powodem tego staje się pytanie specyficzne dla programowania, ponieważa
musi zostać ponownie obliczony za każdym razem, gdy samochód zatrzymuje się. Więc,V0
ciągle się zmieniaV0
od ostatniego znacznika czasuplus
a
to zostało obliczone w ostatnim czasie. Zasadniczo zacznie się powoli zatrzymywać, po czym w końcu zatrzyma się nagle, trochę jak samochód w prawdziwym życiu.
EDYTOWANIE:
W porządku, dziękuję za wspaniałe odpowiedzi. Wiele z tego, czego potrzebowałem, to tylko pomoc w tym zakresie. Pozwól, że będę bardziej szczegółowy teraz, gdy mam więcej pomysłów od wszystkich:
mam samochódc
to jest64 pixels
od miejsca przeznaczenia, takd=64
. On jedzie na2 pixels per timestep
, gdzietimestep is 1/60 of a second
. Chcę znaleźć przyspieszeniea
to doprowadzi ją do prędkości0.2 pixels per timestep
do czasu podróżyd
.d = 64 //distance
V0 = 2 //initial velocity (in ppt)
Vf = 0.2 //final velocity (in ppt)
Również dlatego, że dzieje się to w pętli gry, zmiennadelta
jest przekazywane do każdej akcji, która jestmultiple of 1/60s that the last timestep took
. Innymi słowy, jeśli zajęło to 1 / 60sdelta
wynosi 1.0, jeśli zajęło to 1 / 30sdelta
wynosi 0,5. Zanim przyspieszenie zostanie faktycznie zastosowane, jest mnożone przez tę wartość delta. Podobnie, zanim samochód ruszy ponownie, jego prędkość jest mnożona przez wartość delta. To dość standardowe rzeczy, ale może to być przyczyną problemów z moimi obliczeniami.