Мы начинаем с x_start (и t = 0) со скоростью v_start, и мы хотим закончить с x_end со скоростью ноль.
Поскольку у нас постоянное ускорение, средняя скорость будет v_start/2
, что означает, что мы достигнем x_end при t_end = (x_end - x_start) / (v_start / 2)
.
Хорошо, тогда мы можем использовать x(t) = x_start + v_start * t + at^2/2
. В качестве проверки работоспособности подключите t = 0 и убедитесь, что вы получите x = x_start.
Затем подключите t_end, и вы можете решить для. Я получаю -v^2/(2D)
, где D x_end - x_start
. Отрицательный знак означает, что вы замедляетесь вместо ускорения.
Если вы подключите это к исходной функции, вы получите:
x(t) = x_start + v_start * t - (v^2/4D) * t^2
Если у вас есть счетчик, который сообщает вам значение t (которое будет варьироваться от 0 до t_end), вы можете просто перемещать объект в правильную позицию в каждый момент.
Или (и это может иметь больше смысла, в зависимости от языка, окружения и т. Д.), Вы можете рассчитать мгновенную скорость на каждый временной шаг, а затем мгновенную позицию, следуя ответу CoderTao.