使用初始速度和衰减计算减速时间

时间:2011-09-29 22:40:09

标签: flash actionscript-3 math animation actionscript

我正在尝试计算Flash中的动画片段减速到零的时间。起始速度会有所不同,但出于举例的目的,我们可以说:

每秒帧数:30

速度:50

衰变:每帧的当前速度为.8 *

onEnterFrame(event:Event):void
{
    movieClip.x += speed;
    speed *= .8;

}

我如何计算减速到零所需的时间(以秒为单位)或总帧数?

谢谢!

1 个答案:

答案 0 :(得分:2)

首先,你所说的加速度实际上是每帧的速度/速度(以像素为单位)。

从第一帧(第i帧)开始,当您开始将速度调整0.8倍时,您可以将速度表示为:

v(i)= v(i-1)* 0.8
并且 v(0)= 50

您可以使用v(0)重新表达v(i):

v(i)= v(0)* 0.8 i

我可以想到两种不同的停止条件:

1。 v(i)< 1 (意思是:速度低于1 px /帧)
2。 v(i) - v(i + 1)< 0.1 (意思是:帧之间的速度变化小于0.1 px)

首先得到:

v(0)* 0.8 i < 1

0.8 i < 1 / v(0)

我> log0.8(1 / v(0))

使用logb(x)= loga(x)/ loga(b)更改对数基数:

i> ln(1 / v(0))/ ln(0.8)

我> ln(1/50)/ ln(0.8)

我> 17.531

第二个你得到:

v(0)* 0.8 i -v(0)* 0.8 i + 1 < 0.1

v(0)* 0.8 i -v(0)* 0.8 i * 0.8< 0.1

v(0)* 0.8 i *(1 - 0.8)< 0.1

0.8 i < 0.1 /(v(0)*(1 - 0.8))

我> log0.8(0.1 /(v(0)*(1 - 0.8)))

i> ln(0.1 /(v(0)*(1 - 0.8)))/ ln(0.8)

我> ln(0.1 /(50 *(1 - 0.8)))/ ln(0.8)

我> 20.638

因此,使用这些数字,你可以获得大约20帧的时间,直到运动停止。 根据需要调整数字。