根据速度和网格计算减速度

Dav*_*ing 7 javascript math animation velocity

我试图requestFrame根据我知道速度 (v) 和我想要行进的距离这一事实来计算循环中的衰减或速度。我也知道ms每一帧的。

所以一个简单的衰减算法是:

velocity *= 0.9

这会平滑而漂亮地减慢速度,但我希望动画元素停在给定位置(对齐网格)。那么如何准确计算减速度呢?

MBo*_*MBo 4

对于衰减系数qn步长(基本时间间隔),距离是几何级数之和

D = v0 * (1 - q ** n) / (1 - q)
Run Code Online (Sandbox Code Playgroud)

我们可以用简单的数值方法找到q给定的D,v0n(后者已知吗?)。

另请注意,速度永远不会变为零,因此您可能必须使用某个阈值来停止。如果速度线性减小(恒定减速)而不是指数减小,那么事情就更简单了。