abu*_*tin 9 javascript math animation actionscript physics
我一直试图解决这个问题好几天了,但我必须遗漏一些东西.
已知变量:
vi =初始速度
t =动画持续时间
d =距离.
结束速度应始终为零
我正在尝试创建的函数:D(0 ... t)=给定时间的当前距离
使用这些信息,我希望能够以不同的速度创建平滑的动画曲线(缓入/缓出).
动画必须能够从初始速度轻松进入.
动画必须正好是t秒,并且必须精确地行进d个单位.
曲线应该倾向于平均速度,加速发生在曲线的开始和结束部分.
我对额外的配置变量持开放态度.
我能想出的最好的东西不会影响初始速度.我希望更聪明的人可以帮助我.;)
谢谢!
ps我正在使用ECMAScript变体
这是一个不同的解决方案,其中没有任何时间间隔,其中速度是恒定的.相反,作为时间函数的速度是二阶多项式,并且加速度在时间上是线性的(开始时为正,末端为负).也许你可以尝试一下.
让我稍微重命名你的变量.让
我们正在寻找平滑函数v(t)(速度作为时间的函数),这样:
使用(凹)二阶多项式,我们可以满足所有三个约束.因此,让我们
v(t):= at ^ 2 + bt + c
让我们解决a,b,c.第一个约束v(0)= V立即给出c = V.第二个约束读取
aT ^ 2 + bT + V = 0
另一方面,v(t)的积分是d(t)= 1/3 at ^ 3 + 1/2 bt ^ 2 + Vt(这是到时间t所覆盖的距离),因此第三个约束条件读取
d(T)= 1/3 a T ^ 3 + 1/2 b T ^ 2 + VT = D.
最后两个方程似乎很乱,但它们只是两个未知数a,b中的两个线性方程,它们应该很容易解决.如果我正确地进行了计算,最终结果是
a = 3V/T ^ 2 - 6D/T ^ 3,b = 6D/T ^ 2 - 4V/T.
如果在d(t)的表达式中替换a,b,c,则获得作为时间函数的覆盖距离.