如何计算这个简单的动画效果(物理引擎)?

时间:2014-11-09 08:18:45

标签: game-engine physics-engine

我正在为游戏实现一个非常简单的动画效果。场景是这样的:

  1. 有一条弹性橡胶线,长度为1米,当它延伸超过1米时,它是有弹性的。

  2. 这样的线连接两个点A和B,距离是S,S> 1米

  3. A< ------------- B

    1. 然后修复点A,然后释放B,该线将B带到A
    2. 的方向

      我想知道如何计算时间T,其中B成本将X米移向A(X <= S)。

      有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

我一直想学习如何在sage(基于python的数学平台)中动画这些类型的图像一段时间,所以我以此为借口。我希望这段代码和图片有用。

A = 3
w = 0.5 

# x = f(t) = A cos(wt) inside elastic region
# with x = displacement from 1 meter mark
# in the below code, x is the displacement from origin (x = A cos(wt) + 1)

# find speed when we cross the one meter mark
# f'(t) = -Aw sin(wt), but this is also max speed
# ie f'(t at one meter mark) = -Aw

speed_max = -A * w

# time to reach max speed + time to cross last meter
eta  = float(pi/2 * 1/w + 1/abs(speed_max))

# the function you were looking for
def time_left(x):
    if x < 1:
        return x/abs(speed_max)
    else:
        return 1/w * arccos((x-1)/A)

enter image description here

图像中可能不清楚,但在原点的一米范围内没有加速度。