gpt4 book ai didi

drag - 计算初始速度以惯性移动设定距离

转载 作者:行者123 更新时间:2023-12-04 17:13:37 44 4
gpt4 key购买 nike

我想移动一定距离。但是,在我的系统中,存在惯性/拖动/负加速度。我正在使用这样的简单计算:

v = oldV + ((targetV - oldV) * inertia)


将其应用于多个帧会使运动“上升”或衰减,例如:

v = 10 + ((0 - 10) * 0.25) = 7.5 // velocity changes from 10 to 7.5 this frame


所以我知道我要行驶的距离和加速度,但不知道能到达目的地的初始速度。也许更好的解释是,我想知道打台球有多难,以至于无法停在某个点上。

我一直在研究运动方程式( http://en.wikipedia.org/wiki/Equations_of_motion),但无法解决我的问题的正确选择是...

有任何想法吗?谢谢-我来自设计而非科学背景。

更新:Fiirhok的解决方案具有固定的加速度值; HTML + jQuery演示:
http://pastebin.com/ekDwCYvj
有什么方法可以使用分数值或缓动函数吗?根据我的经验,这样做的好处是,固定的加速度和基于帧的动画有时会超出最终点,因此需要强制执行,从而产生轻微的突然故障。

最佳答案

这是一个简单的运动学问题。

在某个时刻t,物体在恒定加速度下的速度(v)可以用以下公式描述:

v = v0 + at


其中v0是初始速度,a是加速度。在您的情况下,最终速度为零(对象已停止),因此我们可以求解t:

t = -v0/a


为了找到所走的总差,我们对速度进行积分(第一个方程)。我多年来没有做过积分,但是我很确定这可以解决以下问题:

d = v0t + 1/2 * at^2


我们可以用等式代替我们开发的aierier:

d = v0^2/a + 1/2 * v0^2 / a


和解决v0:

v0 = sqrt(-2ad)


或者,以更多的编程语言格式:

initialVelocity = sqrt( -2 * acceleration * distance );


在这种情况下,加速度为负(对象正在减速),我假设它是恒定的,否则会变得更加复杂。

如果要在有限步数的循环内使用此功能,则需要格外小心。循环的每次迭代代表一个时间段。对象将移动等于平均速度乘以时间长度的量。迭代时间等于1的样本循环看起来像这样:

position = 0;
currentVelocity = initialVelocity;
while( currentVelocity > 0 )
{
averageVelocity = currentVelocity + (acceleration / 2);
position = position + averageVelocity;
currentVelocity += acceleration;
}

关于drag - 计算初始速度以惯性移动设定距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2487065/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com