Вы хотите знать, сколько кадров потребуется, чтобы пройти расстояние d , учитывая начальную (вертикальную) скорость v и ускорение (из-за силы тяжести) a .
После n кадров пройденное расстояние составляет
вн + Σ (0≤ j <<em> n ) aj = вн + ½ символ ( N -1)
Так установите d = vn + ½ an ( n -1) и решите для n :
d = vn + ½ и ( n -1)
½ ½ и 2 + n ( v - ½ a ) - d = 0
А затем используйте квадратную формулу, чтобы получить n :
n = (½ a - v ± √ (( v - ½ a ) 2 - 2 ad )) / a
Некоторые другие ответы ссылались на обычные решения уравнений движения Ньютона, но они работают только для непрерывных уравнений. Здесь у вас есть дискретное моделирование , поэтому, если вы хотите получить точные, а не приблизительные ответы, вам нужны суммы, а не интегралы, как описано выше.
Первый раз, когда мне пришлось писать код предсказания такого типа, была игра, в которой танки стреляли друг в друга артиллерийскими снарядами. Чтобы помочь с прицеливанием, игра нарисовала целевую сетку на земле в предсказанном положении, в которое приземлится снаряд. Для моей первой попытки я использовал нормальные решения непрерывных уравнений движения, и результат был довольно далек. Дискретность симуляции вносит заметный вклад в результат, и для некоторых приложений (например, рисование целевой сетки) очень важно согласие между прогнозом и симуляцией.