【问题标题】:Orbital Mechanics: Estimated Time To Form Specific Angle Between Two Planets轨道力学:两颗行星之间形成特定角度的估计时间
【发布时间】:2014-11-20 07:12:54
【问题描述】:

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

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

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

我运行了一个模拟并将数据存储在电子表格(Google 文档)中: 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 度角时的重复发生时间?

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

【问题讨论】:

    标签: physics angle orbit orbital-mechanics


    【解决方案1】:

    没有一个简单的公式,但是有一个算法可以让你编程来确定结果。 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
    

    【讨论】:

    • 今晚我要试一试。昨晚,根据我的样本数据,我使用了数字 4 而不是 5。然而,调整物体的速度会产生不正确的结果。今晚我会给你反馈。谢谢!
    • 两个答案都提供了一些指导。我用了这个方法。它有点工作:时间=距离/速率。我构建了一个小脚本来帮助:coachroebuck.com/orbit
    • 在你的小脚本中挑剔 - 最后 2 个输入的占位符应该是行星 2 - 虽然它不会影响脚本的工作。
    • 哈!复制+粘贴错误。一定要爱他们。昨晚我意识到如果我的三角学技能非常强,这个问题可以通过转换为弧度来简化,然后使用 sin() 和/或 arcsin()。无论如何,你不知道我是多么感激你们两个都伸出手来提供反馈。在进行额外的测试和错误修复后,我将发布我提出的解决方案以供批评。
    【解决方案2】:

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

    Target = 90
    

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

    Target = 90 + 360 = 450
    

    或者一般来说,n 转后

    Target = 90 + n * 360
    

    如果你也想要相同的角度和相反的方向,你可以设置

    Target = -90 + n * 360
    

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

    【讨论】:

    • 感谢您的意见。不幸的是,恐怕这可能行不通。我需要的信息有助于解决时间问题,而且我需要担心不同的速度。示例:对象 A 当前位于 (a) 度,并以每天 (x1) 度围绕(中心)运行。物体 B 目前位于 (b) 并以每天 (x2) 度围绕(中心)运行。找出这两个物体(某个角度)的估计天数。重复 10 次。您会看到所需的总天数不是恒定的,我很难确定公式。
    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多