我正在尝试提出一个公式来估算两个轨道行星将形成目标角度的重复发生时间。为简单起见,我做了一些非常重要的假设:
以下图表有助于了解我的挑战(Google文档): 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度角时的重现次数?
感谢您抽出宝贵时间提前阅读。
答案 0 :(得分:0)
关于角度的有趣之处在于,有不同的方式来表示相同的角度。所以你现在设置
Target = 90
之后的一次革命,相同的角度可写为
Target = 90 + 360 = 450
或者通常,n
之后的革命
Target = 90 + n * 360
如果您还想要相反方向的相同角度,可以设置
Target = -90 + n * 360
如果您使用求解每个目标角度的等式,您将找到您正在寻找的所有事件。
答案 1 :(得分:0)
没有一个简单的公式,但有一个算法可以编程来确定结果。 五角大楼也是正确的,因为你需要考虑到n * 360。你也是正确的,因为你停止了一个行星,并研究速度的差异。
在d天之后,行星之间的度差为30 + d * 5。
由于我们只对0到360度之间的度数感兴趣,因此行星之间角度的差异为(30 + d * 5)mod 360。
如果您不知道mod b在a除以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