我想制作一个太阳系类型的模拟器,因此我想在太阳周围移动一个行星。 我完成了绘图部分,但我不知道如何在太阳周围做圆形运动部件。
谢谢。
答案 0 :(得分:2)
假设您拥有太阳的坐标和所需的半径,例如
double sunX = ...
double sunY = ...
double radius = ...
和某种游戏时间,我们用它来确定当前位置以及某种速度:
int time = ...
假设时间每毫秒增加 。在0°
秒(360°
毫秒)之后,行星应该从0
开始移动并再次到达2 * PI
(从2
到2000
),那么当前角度可以由
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上详细了解该公式。以下图片可能有助于理解等式: