在Java

时间:2018-02-12 15:31:06

标签: java java-2d

我想制作一个太阳系类型的模拟器,因此我想在太阳周围移动一个行星。 我完成了绘图部分,但我不知道如何在太阳周围做圆形运动部件。

谢谢。

1 个答案:

答案 0 :(得分:2)

假设您拥有太阳的坐标和所需的半径,例如

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

double radius = ...

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

int time = ...

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

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

我们现在可以使用所需的角度 radius 轻松计算行星的坐标。

double planetX = sunX + radius * Math.cos(angle);
double planetY = sunY + radius * Math.sin(angle);

您可以在Wikipedia上详细了解该公式。以下图片可能有助于理解等式:

enter image description here