我正在程序上生成二维太阳系,我希望行星有不同的持续轨道。我试图弄清楚如何计算相对于它在任何给定时间轨道运行的身体的当前角度,无论当地时间如何,这对于每个人都应该是相同的。如果我使用种子Math.random
来计算这些生成的变量,那该怎么办呢?
答案 0 :(得分:1)
根据开普勒定律实施太阳系模拟
3D 很容易, 2D (没有倾向)更容易看到
只需使用一些全局同步时间作为参数。我的意思是所有玩家/观察者都应该在彼此之间保持时间同步)
使用种子伪随机数作为轨道元素参数
像粗略的a,e,i,o,O
一样为它们添加一些范围,例如:
a - 主要半轴应位于<0.01,200> [AU]
范围内
a=(0.01+(200.0-0.01)*Random())*AU;`
其中 AU 是天文单位常数,Random
给出伪随机数<0.0,1.0>
e 偏心率应在范围<0.00,1.00> [-]
<0,2.0*PI> [rad]
同样,您可以添加所有支持的轮换周期。要注意中心物体周围的平均轨道周期取决于它与它的距离和质量比(对于游戏你可以忽略它)。此外,还有从太阳系中观察到的行星质量/尺寸/距离比的经验公式。
<强> [注释] 强>
在 2D 中没有倾斜,因此您可以省略倾斜度和节点角度,因此只保留轴周角。
所有旋转周期也在一些定义的时间内开始,称为 epoch 。
所有参数都可能随时间变化(但对于游戏来说这是不相关的,除非你想测量其中的东西......)