Javascript 如何实现持久的、变化的时间周期

Javascript 如何实现持久的、变化的时间周期,javascript,math,simulation,astronomy,procedural-generation,Javascript,Math,Simulation,Astronomy,Procedural Generation,我正在按程序生成2D太阳系,我希望行星有不同的、持续的轨道。我一直想弄清楚如何计算出在任何给定时间相对于物体的当前角度,这对每个人来说都是一样的,不管他们的当地时间是什么。如果我使用种子Math.random来计算这些生成的变量,那该怎么做呢 根据开普勒定律模拟太阳系 这在3D中很容易,在2D中更容易(无倾斜)看这里 只需使用一些全局同步的时间作为参数。我的意思是,所有玩家/观察员之间的时间应该同步) 对轨道元素参数使用种子伪随机数 像粗糙的a、e、i、o、o一样,为它们添加一些范围,例

我正在按程序生成2D太阳系,我希望行星有不同的、持续的轨道。我一直想弄清楚如何计算出在任何给定时间相对于物体的当前角度,这对每个人来说都是一样的,不管他们的当地时间是什么。如果我使用种子
Math.random
来计算这些生成的变量,那该怎么做呢

  • 根据开普勒定律模拟太阳系

    这在3D中很容易,在2D中更容易(无倾斜)看这里

    只需使用一些全局同步的时间作为参数。我的意思是,所有玩家/观察员之间的时间应该同步)

  • 对轨道元素参数使用种子伪随机数

    像粗糙的
    a、e、i、o、o
    一样,为它们添加一些范围,例如:

    • a-主半轴应在范围内
      [AU]
      so

      a=(0.01+(200.0-0.01)*Random())*AU;`
      
      其中,AU是天文单位常数,
      Random
      给出伪随机数

    • e偏心率应在范围内
      [-]

    • i,o,o是角度,因此
      [rad]
    同样,您可以添加所有支持的旋转周期。请注意,围绕中心物体的平均轨道周期取决于它与中心物体的距离和质量比(在游戏中,你们可以忽略这一点)。此外,还有从太阳系观测到的行星质量/大小/距离比的经验公式

  • [Notes]


    2D中,没有倾角,因此可以忽略倾角和节点角度,以便只保留周向角。
    所有的旋转周期也有一些定义的开始角,称为历元
    所有的参数都可以随时间变化(但对于游戏来说,除非你想测量其中的东西,否则这是不相关的…)