如何使车轮摇摆到一定的角度?

时间:2012-11-12 22:11:23

标签: java math

我需要在五个角度中的一个上使一个轮子掉落,我希望它在达到角度时摇摆不定。在用户旋转滚轮之后,我通过将旋转速度乘以每个刻度0.98来减速。我有点工作,找到最接近的角度,并在速度方向上加一个小值。然而,这看起来不切实际,可能会出现问题。

我正在考虑实施阻尼正弦波,但我不确定如何做到这一点。

当前伪代码:

var rotation, rotationVelocity, stoppingPoints[5];
update(deltaT) {
    velocity -= rotationVelocity * 0.5 * dt;
    closestAngle = findClosestAngle().angle;
    rotationVelocity += (closestAngle - rotation) / 36 * dt;
    rotation += rotationVelocity; 
}

编辑:

跷跷板:不稳定地移动或平衡;来回摇摆:

3 个答案:

答案 0 :(得分:3)

每次迭代从它的速度中减去一个恒定的量,直到它达到零

这不仅实际上代表了摩擦在现实生活中的作用,而且也更容易。


如果你希望它像连接到弹簧那样移动:

霍克的弹簧定律是F = -kx,其中k是一个常数,x是距离原点的距离,如果你想让它来回摇摆,就像它在弹簧上一样。跟踪它从原点的旋转,并添加-kx x,其中{{1}}是它与原点的旋转距离(或角度)。

现在,如果你将摩擦力和霍克定律同时应用于弹簧,它应该看起来很逼真。

答案 1 :(得分:1)

我认为你想要的最接近的角度是它停止的地方。您可以模拟它将结束的位置,结束所需的时间,并使用它来确定您需要多少(或更少)速度。

确切地说,你的意思并不确定。

答案 2 :(得分:0)

听起来你想要在stoppingPoints处附加重量的车轮建模。我的意思是,从物理学的角度来看。存在现有的旋转速度,然后是来自摩擦的减速,以及由重力对这些点的影响引起的未知加速/减速(根据重量的位置转换为旋转速度)。无论如何,这是我的解释,可能是我的方法(模拟引力)。

我认为,当重量引起的加速度超过现有的旋转速度时,你所说的摇摇欲坠。