0

我试图想出一个公式来估计两个轨道行星将形成目标角度的重复时间。为了简单起见,我做了一些非常重要的假设:

  1. 假装开普勒定律不存在
  2. 假装速度是恒定的
  3. 假装两颗行星都沿着相同的轨道运行
  4. 假设这条路径是一个圆,而不是一个椭圆

这是帮助理解我的挑战的图表(Google Docs): https ://docs.google.com/drawings/d/1Z6ziYEKLgc_tlhvJrC93C91w2R9_IGisf5Z3bw_Cxsg/edit?usp=sharing

我在电子表格(Google Docs)中运行模拟并将数据存储: https ://docs.google.com/spreadsheet/ccc?key=0AgPx8CZl3CNAdGRRTlBUUFpnbGhOdnAwYmtTZWVoVVE&usp=sharing

使用模拟中存储的数据,我能够确定一种方法来估计两个轨道行星形成特定角度的第一次出现:


初始状态

Planet 1: position=0 degrees; speed=1 degree/day
Planet 2: position=30 degrees; speed=6 degrees/day
Target Angle: 90 degrees

我执行了这些步骤:

Speed Difference: s2 - s1 ; 6 - 1 = 5 degrees / day
Angle Formed: p2 - p1 ; 30 - 0 = 30 degrees

Find Days Required
Target = Angle + (Speed Diff * Days)
Days (d) = (Target - Angle) / Speed Diff

90 = 30 + 5d
60 = 5d
d = 12 days

Prove:
Position of Planet 1: 0 + (1 * 12) = 12 degrees
Position of Planet 2: 30 + (6 * 12) = 30 + 72 + 102 degrees
Angle: 102 - 12 = 90 degrees

使用这个逻辑,然后我回到了一个使用 Astro 的瑞士星历表的天文学程序。估计的天数让我足够接近,可以舒适地确定两个行星达到所需角度的日期和时间,而不会影响应用程序性能。

这就是我的问题所在:鉴于我所知道的信息,我应该采取什么方法来估计再次达到 90 度角时的再次发生时间?

感谢您抽出宝贵时间提前阅读本文。

4

2 回答 2

0

关于角度的有趣之处在于,有不同的方式来表示同一个角度。所以你目前设置

Target = 90

一圈后,相同的角度可以写成

Target = 90 + 360 = 450

或者一般来说,n革命之后

Target = 90 + n * 360

如果您还想要具有相反方向的相同角度,您可以设置

Target = -90 + n * 360

如果您对这些目标角度中的每一个使用求解方程,您将找到您正在寻找的所有事件。

于 2014-04-23T08:13:30.807 回答
0

没有一个简单的公式,但是有一个算法可以让你编程来确定结果。Pentadecagon也是正确的,因为您需要考虑 n*360。你也是对的,你停止了一颗行星并研究速度的差异。

d 天后,行星之间的度数差为 30 + d*5。

由于我们只对 0 到 360 之间的度数感兴趣,因此行星之间的角度差为 (30 + d*5) mod 360。

如果您不知道 a 除以 b 时 a mod b 给出余数,并且大多数编程语言都内置了此操作(电子表格也是如此)。

当差异为 90 度或 270 度时,您已经发现想要 d 的值

所以你需要在任何时候找到 d 的值

(30 + d*5) mod 360 = 90 或 (30 + d*5) mod 360 = 270

伪代码算法

FOR (d=0; d<11; d=d+5)
    IF((30 + d*5) MOD 360 = 90   OR   (30 + d*5) MOD 360 = 270)
        PRINT d
NEXT
于 2014-04-23T09:29:10.660 回答