我正在寻找一种方法来平滑地增加或减少圆周运动的速度。
使用圆的参数方程,我可以随时间沿圆移动对象:
x = center_x + radius * sin(time * speed)
y = center_y + radius * cos(time * speed)
这种方法的问题是我不能简单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
这种方法的问题是,如果我改变速度,那么半径会增大或缩小。这是有道理的,因为运动是相对于当前位置的,所以如果我改变速度,时间基本上会被跳过。
我能想到的一种可能可行的实现是使用从对象指向圆心的向量。然后我可以通过使用垂直向量计算圆在对象位置的切线,对其进行归一化并按速度缩放。我还没有实现这个,因为这样的问题似乎有点矫枉过正,所以如果存在更简单的解决方案,请告诉我。谢谢!