本篇文章翻译自NASA的 Algorithm and Worked Examples
更新于 2023-12-10

Mars24 为确定火星上某个位置的时间而进行的计算方法主要基于 Allison 和 McEwen 的工作(2000,此后称为 AM2000)。我们还参考了 Allison 的工作(1997,此后称为 A1997),其中 AM2000 是一次彻底的更新。然而,AM2000 的已发布版本中出现了一些印刷错误,并且由于有新数据可用,自该论文发表以来,一些计算已被修订。Allison 和 Ferrier 在一篇未发表的论文中描述了各种修订,以及 Allison 后来的一些未发表的计算。

因此,我们在此提供 Mars24 所采用等式的分步文档,供希望实现自己的 Mars 计时应用程序(与应用程序的结果相匹配)的用户使用。在本演示的最后,我们还提供了两个用于验证中间结果的可用示例。

一、等式

A. 确定自 J2000 纪元以来的天数

我们的火星时间计算将使用参数 ΔtJ2000,这是自 J2000 纪元(即 2000 年 1 月 1 日(TT)12:00)以来经过的天数。以下描述了我们如何从返回系统时间的 Java API 中获得这个时间。如果有其他方案来获取 ΔtJ2000,则可以跳过这些步骤。

A-1. 获取起始的地球时间

Mars24 用 Java 编写的,所以我们使用 System.CurrentTimeMillis() 方法来获取自 1970 年 1 月 1 日 00:00:00 以来(即Unix Epoch)以来已经经过的毫秒(millis)的数量。

不幸的是,标准 Java 日期/时间类不能跟踪闰秒,即它们保存 UT 时间而不是 UTC 时间。因此,当 Mars24 调用 System.CurrentTimeMillis() 时,它会获取返回的 UT 时间而不是 UTC时间。

在以下步骤中只有 A-2 明确使用 millis 。但是,Mars24 中其他的读数也都是根据 millis 的值计算的,因此,如果所运行的计算机平台能够处理闰秒,则 Mars24 可能产生错误的结果。

A-2. 将 millis 转换为儒略历日期(UT)(Julian Date).

尽管在网络上有大量可用的示例代码,这些示例代码演示了如何将格里高历日期转换为儒略历日期,但我们只需使用与已知最近的儒略日期的偏移量即可。同样,我们使用 1970 年 1 月 1 日 00:00:00 的 Unix 纪元。

JDUT = 2440587.5 + (millis / 8.64×107 ms/day)

A-3. 确定自 J2000 纪元(UT)的时间偏移量

此步骤是可选的;如果日期是 1972 年 1 月 1 日之前,我们才需要进行此计算。确定自 2000 年 1 月 1 日 12:00(UT)以来儒略历世纪数。

T = (JDUT - 2451545.0) / 36525.

A-4. 确定 UTC 到 TT 的转换。(替代 AM2000,等式 27)

地球时(TT)和 UTC 一样,以恒定速度的流逝,但没有插入闰秒,因此它逐渐领先于 UTC。确定 TT 和 UTC 之间差异的最佳方法是查阅闰秒表。另外,人们也可以尝试使用经验公式。

值得注意的是,在 Mars24 中,我们使用了两种方法:对 1972 年 1 月 1 日之后的日期使用表格,对之前的日期使用公式。不过,查阅 IERS 或 USNO 的闰秒表时,需要注意的是,该表提供的是 TAI-UTC 的差值,其中 TAI 是国际原子时间。要获得 TT-UTC 的差值,需要在 TAI-UTC 的值上加 32.184 秒。例如,该表显示,在 2017 年 1 月 1 日,TAI-UTC 的值为37.0秒,因此该日期的 TT-UTC 值(直到下一个添加闰秒的日期)为 37.0 秒 + 32.184 秒 = 69.184 秒。

1972 年 1 月 1 日之前日期使用的公式与 AM2000 公式 27 类似,但增加了附加项修正:

TT - UTC = 64.184s + 59 s × T - 51.2 s × T2 - 67.1 s × T3 - 16.4 s × T4

(注:Mars24 考虑了 2026 年 12 月 31 日结束时添加的闰秒。它不能处理任何可能随后添加的闰秒,截至 2024 年春季,还没有出现闰秒。国际地球自转和参考系统服务 (IERS) 公告 C 67 表示,在 2024 年 12 月 31 日结束之前不会添加闰秒。)

A-5. 确定儒略历日期(TT)

JDTT = JDUT + [(TT - UTC) / 86400 s·day-1]

A-6. 确定自 J2000 纪元 (TT)的时间偏移(AM2000,等式 15)

ΔtJ2000 = JDTT - 2451545.0

B. 确定火星日期参数

现在我们把注意力转向火星,首先确定一些轨道参数。

B-1. 确定火星平均异常(AM2000,等式 16)

M = 19.3871° + 0.52402073° ΔtJ2000

B-2. 确定虚拟平均太阳的角度(AM2000,等式 17)

αFMS = 270.3871° + 0.524038496° ΔtJ2000

B-3. 确定扰动体(AM2000,等式 18)

PBS = Σ(i=1,7) Ai cos [ (0.985626° ΔtJ2000 / τi) + φi]

其中 0.985626° = 360° / 365.25。

表格如下:

i Ai τi φi
1 0.0071 2.2353 49.409
2 0.0057 2.7543 168.173
3 0.0039 1.1177 191.837
4 0.0037 15.7866 21.736
5 0.0021 2.1354 15.704
6 0.0020 2.4694 95.528
7 0.0018 32.8493 49.095

B-4. 确定中心等式(AM2000的括号项,等式19和20)

中心等式是真异常量减去平均异常量。

ν - M = (10.691° + 3.0° × 10-7 ΔtJ2000) sin M + 0.623° sin 2M + 0.050° sin 3M + 0.005° sin 4M + 0.0005° sin 5M + PBS

B-5. 确定行星中心太阳经度(AM2000, 等式 19)

Ls = αFMS + (ν - M)

C. 确定火星时间

C-1. 确定时间等式(AM2000,等式 20)

EOT = 2.861° sin 2Ls - 0.071° sin 4Ls + 0.002° sin 6Ls - (ν - M)

上述 EOT 的结果以度为单位。乘以 (24 小时 / 360°) = (1 小时 / 15°) 可得出以小时为单位的结果。

C-2. 确定在火星的本初子午线的平均太阳时(即艾里平均时间)。(AM2000,等式22,修改)

下面就是在火星的本初子午线的平均太阳时

MST = mod24 { 24 h × ( [(JDTT - 2451549.5) / 1.0274912517] + 44796.0 - 0.0009626 ) }

函数 modx 表示将函数参数(周期性值)重新设置为 0 和 x 之间的值。在这个等式中,我们用 mod24 来表示如果一个数在 0 - 24 的范围外,那么应重新设置该值到范围内,例如 mod24(30)= 6。

C-3. 确定本地平均太阳时

对于给定的行星地理经度 Λ(以西度为单位),当地平均太阳时间可以通过从本初子午线的平均太阳时间进行偏移来轻松确定。

LMST = mod24 { MST - Λ (24 h / 360°) } = mod24 { MST - Λ (1 h / 15°) }

C-4. 确定本地真太阳时 (AM2000,等式 23)

LTST = LMST + EOT (24 h / 360°) = LMST + EOT (1 h / 15°)

C-5. 确定太阳直射点经度

Λs = MST (360° / 24 h) + EOT + 180° = MST (15° / h) + EOT + 180°

D. 附加的计算

D-1. 确定太阳偏角(行星地理)(A1997,等式 5)

δs = arcsin (0.42565 sin Ls) + 0.25° sin Ls

D-2. 确定日心距离 (AM2000,等式 25, 更正)

RM = 1.52367934 × (1.00436 - 0.09309 cos M - 0.004336 cos 2M - 0.00031 cos 3M - 0.00003 cos 4M)

D-3. 确定日心经度 (AM2000,等式 25 26)

lM = Ls + 85.061° - 0.015° sin (71° + 2Ls) - 5.5°×10-6 ΔtJ2000

D-4. 确定日心纬度

bM = -(1.8497° - 2.23°×10-5 ΔtJ2000) sin (Ls - 144.50° + 2.57°×10-6 ΔtJ2000)

D-5. 确定本地太阳高度

对于火星表面的任何给定点,我们想要确定太阳的角度。天顶角是:

Z = arccos (sin δs sin φ + cos δs cos φ cos H)

其中 φ 是行星地理纬度,Λ 是行星地理经度,H 是时角,Λ - Λs

太阳高度角简单地为 90° - Z

D-6. 确定当地太阳方位角

从火星表面上的一个点可以看出,太阳位置的第二个要素是其方位角,即相对于正北方向的指南针角度。

A = arctan (sin H / (cos φ tan δs - sin φ cos H))

(注意:在你的计算机代码或电子表格中应用此方程时,请使用 atan2 函数,以确保获得正确的象限)

二、 可用的示例

接近重合的地球和火星时间

一个容易记住的用于校准时钟的基准,是一个日期和时间。此时地球和火星的“标准时间”几乎相同。当地球时间为 2000 年 1 月 6 日00:00:00(UTC)时,距离火星本初子午线的平均午夜仅有 21 个火星秒。我们来进行计算,看看是否得出 MST = 23:59:39。对于经度和纬度,我们指定为 0°W 0°N。

等式 参数
A-1 millis 947116800000 ms
A-2 JDUT 2451549.5
A-3 T
A-4 TT - UTC 64.184 s
A-5 JDTT 2451549.50074
A-6 ΔtJ2000 4.50074
B-1 M 21.74558°
B-2 αFMS 272.74566°
B-3 PBS 0.00142°
B-4 ν - M 4.44193°
B-5 Ls 277.18758°
C-1 EOT -5.18774° = -0.34585 h = -00:20:45
C-2 MST mod24 (1075103.99425 h) = 23.99425 h = 23:59:39
C-3 LMST 23.99425 h = 23:59:39
C-4 LTST 23.64840 h = 23:38:54
C-5 Λs 174.72600°
D-1 δs -25.22825°
D-2 RM 1.39358 AU
D-3 lM 2.26352°
D-4 bM -1.35957°
D-5 Z 154.26182°
D-6 A 191.03905°

MER-A 勇气号着陆

火星探测车A号(勇气号)于 2004 年 1 月 4 日着陆(UTC;在美国时区为 1 月 3 日晚上)。针对计划着陆目标,预计着陆前的当地真实午夜是在 1 月 3 日 13:46:31 UTC。我们指定经度和纬度为 184.702°W 和 -14.640°N。我们预计在该位置的火星当地时间为 LTST = 00:00:00,太阳方位角为 180°。

等式 参数
A-1 millis 1073137591000 ms
A-2 JDUT 2453008.07397
A-3 T
A-4 TT - UTC 64.184 s
A-5 JDTT 2453008.07471
A-6 ΔtJ2000 1463.07471
B-1 M 786.06858° → 66.06858°
B-2 αFMS 1037.09457° → 317.09457°
B-3 PBS 0.01614°
B-4 ν - M 10.22959°
B-5 Ls 1047.32416° → 327.32416°
C-1 EOT -12.77553° = -0.85170 h = -00:51:06
C-2 MST mod24 (1109173.16537 h) = 13.16537 h = 13:09:55
C-3 LMST 0.85190 h = 00:51:07
C-4 LTST 0.00025 h = 00:00:00
C-5 Λs 4.70500°
D-1 δs -13.42065°
D-2 RM 1.47767 AU
D-3 lM 52.37564°
D-4 bM 0.08965°
D-5 Z 151.93895°
D-6 A 179.99383°

参考文献

有关 Mars24 使用的数据和公式的讨论可以在以下内容中找到: