在 Java 的圆形路径上移动对象

Moving an Object on a circular path in Java

我想制作一个类似太阳系的模拟器,因此我想围绕太阳移动一颗行星。 绘图部分搞定了,但是绕太阳做圆周运动的部分不知道怎么弄

谢谢。

假设你有太阳的坐标和所需的半径,比如

double sunX = ...
double sunY = ...

double radius = ...

和某种游戏时间,我们用它来确定当前位置以及某种速度:

int time = ...

假设时间增加每毫秒一次。行星应该从 开始运动并在 2 秒(2000 毫秒)后再次到达 360°(从 02 * PI),那么当前角度可以由

确定
double orbitalPeriod = 2000.0;
double portion = (time % orbitalPeriod) / orbitalPeriod; // [0, 1)
double angle = portion * 2 * Math.PI;                    // [0, 2 * PI)

我们现在可以使用所需的 角度半径.

轻松计算行星的坐标
double planetX = sunX + radius * Math.cos(angle);
double planetY = sunY + radius * Math.sin(angle);

您可以在 Wikipedia 上阅读有关公式的更多信息。下图可能有助于理解等式: