对于我正在使用游戏API的项目,我正在尝试创建一个过山车。这台过山车使用三维矢量告诉购物车去哪里。
我使用变量(I)告诉购物车要去哪个点,例如I = 1意味着购物车移动到轨道上的第一点。我可以递增I直到矢量数组的末尾,它会像真正的过山车一样沿着轨道移动。
您可能已经想到,这意味着推车的运动是线性的,并且根据导轨的角度不会加速。
我想找到一个算法,根据购物车当前所处的角度以及它应该具有的加速度来计算购物车应移动到哪个轨道。我希望下面的图片可以更好地解释这一点。
解释1
解释2
答案 0 :(得分:1)
这是相对简单的机制,包含在A级数学中。
在自由落体中,由于重力引起的加速度为10 m s ^ -2并且使用F = m a我们可以计算由于重力引起的力,我们称之为G.
现在,如果你在倾斜的轨道上,则有一条垂直于轨道的反作用力。这平衡了该方向上的重力分量,基本上意味着推车不会通过轨道落下。重力的另一个组成部分平行于轨道。该组件将给出加速/减速。
现在,如果轨道与水平角度θ成角度,则两个分量将为
G cos(theta) perpendicular to the track
G sin(theta) parallel to the track
其中第二个是有趣的。给予加速度 10 sin(theta),沿着轨道的方向。
\
\
\ ^ R
\ /
\ /
\ /
|\
| \
| \
G V \
\
两个力量作用于推车。
\
\
\
\
\
\ \
\ \
\ V
\ G sin(theta)
\
\
由此产生的力量。
现在我们知道加速后我们可以使用Equations of motion计算时间t后的位置。我们想要的公式是
r = r0 + v t + 0.5 a t ^ 2
其中r0是初始位置,v是初始速度,a是加速度,t是经过的时间。当您的轨道弯曲时,最好使用许多小步骤来计算t,计算每个小时的加速度并确保速度沿着轨道。
如果您想将您的曲目视为分段线性。您可以计算从一个段的开始移动到下一个段所需的时间。