我正在为游戏实现一个非常简单的动画效果。场景是这样的:
有一条弹性橡胶线,长度为1米,当它延伸超过1米时,它是有弹性的。
这样的线连接两个点A和B,距离是S,S> 1米
A< ------------- B
我想知道如何计算时间T,其中B成本将X米移向A(X <= S)。
有什么想法吗? 谢谢!
答案 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)
图像中可能不清楚,但在原点的一米范围内没有加速度。