Kai*_*Kai 1 simulation performance geometry physics
我正在寻找一种平稳增加或减少圆周运动速度的方法.
使用圆的参数方程,我可以随时间移动圆中的对象:
x = center_x + radius * sin(time * speed)
y = center_y + radius * cos(time * speed)
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于我不能简单speed = speed + 1地加速对象,因为它会导致不稳定的运动.这是有道理的,因为基于绝对值而不是相对于对象的先前位置,每帧重新计算x和y值.
另一种方法可能是使用表示对象速度的向量,然后对向量应用圆周运动:
v_x = radius * sin(time * speed)
v_y = radius * cos(time * speed)
x = x + v_x
y = y + v_y
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于,如果我改变速度,那么半径将增大或缩小.这是有道理的,因为运动是相对于当前位置的,所以如果我改变速度,基本上会跳过时间.
我能想到的一个可能有用的实现是使用从对象指向圆心的向量.然后我可以通过使用垂直向量计算对象位置处圆的切线,对其进行归一化并按速度进行缩放.我还没有实现这个,因为对于像这样的问题似乎有些过分,所以如果存在更简单的解决方案,请告诉我.谢谢!
速度是角度的变化率,速度的变化仅影响最后一个间隔的角度变化,因此:
delta = time - lastTime
angle = angle + delta * speed
x = center_x + radius * sin(angle)
y = center_y + radius * cos(angle)
Run Code Online (Sandbox Code Playgroud)
lastTime必须保持最后一个周期的时间,明白吗?