我正在处理Cocos2dx中的一些对象位置,但这个问题几乎适用于所有需要平稳启动和停止的情况。
这是我正在寻找的:
给定一个 x = 0 的原点位置和 x = 8 的最终位置,我想慢慢加速,离起点越远越远,然后在到达终点时让它减速。有没有平滑算法?
有很多算法可以做到这一点。 一个想法是设置线性插值:
x(t) = t * x0 + (1.0 - t) * x1;
如果输入从 0.0 到 1.0 的均匀间隔的t
值,您将获得平滑的线性动画。
如果你想要慢速启动和慢速结束,则可以使用t = sin(theta)/2.0 + 1.0
进行从 -pi/2 到 pi/2 的theta
。
二阶平滑路径在前半部分具有恒定的加速度,然后在第二部分具有恒定的减速。
这意味着您可以从x=0
加速到x=4
。该公式x(t)=a*t*t
因此您选择的加速度a
直接影响所需的时间。如果将减速设置为相同的值,则在x=8
中两倍的时间后到达。因此,第二部分的公式x(t) = 16 - a*t*t
.中途时间点是t=sqrt(4/a)
.