Прежде всего, то, что вы называете ускорением, это скорость / скорость в пикселях на кадр.
Начиная с самого первого кадра (i-го), когда вы начинаете регулировать скорость с коэффициентом 0,8, вы можете выразить скорость как:
v (i) = v (i-1) * 0,8
и v (0) = 50
Вы можете повторно выразить v (i), используя v (0), как:
v (i) = v (0) * 0,8 i
Я могу вспомнить 2 разных условия остановки:
1. v (i) <1 </b> (имеется в виду: скорость падает ниже 1 пикселя / кадр)
2. v (i) - v (i + 1) <0,1 </b> (что означает: скорость изменяется менее чем на 0,1 пикселя между кадрами)
За первое, что вы получите:
v (0) * 0,8 i <1 </p>
0,8 i <1 / v (0) </p>
i> log0,8 (1 / v (0))
изменение логарифмической базы с использованием logb (x) = loga (x) / loga (b):
i> ln (1 / v (0)) / ln (0.8)
i> ln (1/50) / ln (0,8)
i> 17,531
За секунду вы получите:
v (0) * 0,8 i - v (0) * 0,8 i + 1 <0,1 </p>
v (0) * 0,8 i - v (0) * 0,8 i * 0,8 <0,1 </p>
v (0) * 0,8 i * (1 - 0,8) <0,1 </p>
0,8 i <0,1 / (v (0) * (1 - 0,8)) </p>
i> log0,8 (0,1 / (v (0) * (1 - 0,8)))
i> ln (0,1 / (v (0) * (1 - 0,8))) / ln (0,8)
i> ln (0,1 / (50 * (1 - 0,8))) / ln (0,8)
i> 20,638
Итак, с этими числами вы получаете около 20 кадров времени, пока движение не остановится.
Настройте числа по своему усмотрению.