---
title: "一个月亮，两片天空"
url: https://lingming.blog/labs/one-moon-two-skies/
date: 2026-10-29
lastmod: 2026-10-29
tags: ["天文","地理","可视化"]
description: "交互式 3D 地球：按真实星历放置太阳与月亮，拖动两枚图钉寻找一处白天见月、一处夜里见月的地方，看晨昏线与月亮地平圈如何把地球切成两瓣月牙。"
ai: drafted
---

# 一个月亮，两片天空

> **AI 执笔**：选题出自作者的兴趣，立意、灵感与笔记来自作者；正文由 AI 生成，作者提出修改意见并审定。（[AI 使用说明](https://lingming.blog/ai/)）


## 如何使用

页面打开时，时间是**此刻**，太阳和月亮的位置按真实星历计算。甲（琥珀色）要在白天看见月亮，乙（紫色）要在夜里看见月亮；两张卡片上的两个条件都打勾，问题就有了一个答案。

- **放图钉**：点地球，正在移动的那枚图钉就落到那里；拖动图钉微调；也可以直接从卡片里选一座城市。拖动地球空白处可以转动它。
- **手机触屏**：默认可以在地球上上下滑动页面；需要上下左右拖动图钉或旋转地球时，先点「开启触屏拖动」。拖完点「结束触屏拖动」，就能继续在地球上滑动页面。点按地球放图钉无需开启拖动。
- **换视角**：「站到月亮上看」「侧看日月」「站到太阳上看」三个视角会跟着天体走；拖动地球就切到自由视角。
- **拨时间**：时间轴每格一小时，前后各 15 天；「播放」让地球转起来；「跳到最近的满月」等按钮直接换月相；也可以输入 1950–2050 年之间的任意时刻。下方曲线图同样可以点击，把时间拨到那个月相。
- **对答案**：打开「涂出两块目标区域」，白天见月的地方涂成琥珀色，夜里见月的地方涂成紫色。
- 每张卡片下面的长条是那个地方的天空全景：左端是正北，往右依次是东、南、西。月亮按真实的相位和倾斜方向画出。

键盘：聚焦地球后，方向键移动图钉（按住 `Shift` 每次 5°），`1` / `2` 切换甲乙，`W` `A` `S` `D` 转动地球，空格播放或暂停。

## 答案：两条线，两瓣月牙

地球上有两条线决定了这件事。

1. **晨昏线**：太阳高度为 0° 的那一圈。它把地球分成白天和夜里两半。
2. **月亮地平圈**：月亮高度为 0° 的那一圈，以「月亮在头顶正上方」的那一点为中心。圈里的地方此刻看得见月亮，圈外看不见。

两条线都是绕着地球的大圈（月亮只有约 60 个地球半径远，它的地平圈比半个地球小约 1°），它们交叉成一个「X」，把地球切成四瓣。**甲必须在「月亮那一侧」的白天那一瓣，乙必须在「月亮那一侧」的夜里那一瓣**：两地都在月亮地平圈里，晨昏线从它们中间穿过。

两瓣有多宽，只取决于从地球上看太阳和月亮相隔多远，也就是日月角距 ψ。白天那一瓣的张角是 180° − ψ，夜里那一瓣是 ψ，各占地表的 (180° − ψ)/360° 和 ψ/360°。打开「侧看日月」：视线垂直于太阳和月亮所在的平面，两条线都侧成直线，它们之间的夹角正好是 ψ。

于是月相决定了这件事难不难：

- **上弦、下弦前后**（ψ ≈ 90°），两瓣一样宽，各占地表约四分之一，最容易做到。
- **满月前后**（ψ 接近 180°），白天那一瓣缩成一条细缝：月亮在太阳落山时升起、日出时落下，几乎没有地方能在白天看见它。
- **新月前后**（ψ 接近 0°），夜里那一瓣缩成一条细缝：月亮跟着太阳一起升落，天黑时它也落下了。实际上这时月亮还离太阳太近，白天也会淹没在阳光里。

严格说来，月亮的轨道和地球绕太阳的轨道面（黄道）有约 5° 的夹角，平常的满月并不正对太阳（ψ 在 175° 到 180° 之间），地球上还留着一道细缝，最宽处在高纬度地区；只有发生月食时，这道缝才真正合上。新月同理，只有发生日食时，夜里那一瓣才真正消失。

所以完整的答案是：**月亮不是正好新月或满月；两地都在此刻看得见月亮的那半个地球上，并且分别在晨昏线的两侧。** 两地可以只隔一条晨昏线、近在咫尺，也可以分处那半个地球的两端，相隔将近半个地球。

## 换成钟表的说法

假设两地都在赤道附近，又在春分或秋分前后，可以把条件翻译成两地的当地时间：

- **从新月到满月（盈月）**：月亮在日出之后升起、日落之后落下。甲处在「月亮已经升起、太阳还没落」的那段白天，乙处在「太阳已经落下、月亮还没落」的那段夜里；上弦前后，就是**下午**和**前半夜**。乙在甲的东边，两瓣月牙隔着的是黄昏线。
- **从满月到新月（亏月）**：月亮在日落之后升起、日出之后落下。乙处在「月亮已经升起、太阳还没出来」的那段夜里，甲处在「太阳已经出来、月亮还没落」的那段白天；下弦前后，就是**后半夜**和**上午**。乙在甲的西边，两瓣月牙隔着的是黎明线。

纬度高、季节偏离二分点时，昼夜长短和月亮在天上停留的时长都会变，这套钟表说法只是近似；地球上的两条线才是准的。

## 站到月亮上看

点「站到月亮上看」：屏幕上的圆盘就是此刻月亮看得见的那半个地球，也正好是此刻看得见月亮的地方。圆盘上亮的部分是白天见月的那一瓣，暗的部分是夜里见月的那一瓣。

这就是月亮上看到的「地相」。它和地球上看到的月相正好互补：我们看见满月时，月亮上看到的是「新地」，整个地球圆盘都是暗的，所以满月只能在夜里看到；我们看见新月时，月亮上看到的是「满地」。题目要求的两个地方，换句话说就是：**从月亮上看，一个在地球亮的那部分，一个在暗的那部分。**

## 「夜里」要多黑才算

太阳刚落山，天还亮着。天文学家把这段时间分成几档：太阳低于地平线 6° 以内是民用晨昏，天还能看清东西；低于 18° 以后，天光才完全退去。选择「天黑」或「全黑」，紫色那一瓣会变窄：日月角距 ψ 小于 6°（或 18°）再加约 1° 的视差时，太阳落到足够低之前月亮就已经落下了，夜里那一瓣会完全消失。下方曲线图会跟着你的定义重画。

两位观察者看到的月亮亮了多少几乎一样（视差带来的差别不到 1%），但亮边朝向不同。对比两张卡片里的天空：白天那位看到的月亮淡淡地挂在蓝天上，暗的部分透出天色；夜里那位看到的月亮在黑夜里，暗的部分泛着一点地照。

## 这个演示简化了什么

- **天体位置**：太阳和月亮用《天文年历》的低精度公式计算（太阳约 0.01°、月亮约 0.3°，适用于 1950–2050 年），对月出月落时刻的影响通常只有一两分钟。月亮的视差（约 1°）已经计入。
- **地平线**：地球当作正球体；「在地平线上」指日月圆面中心的几何高度大于 0°，不计大气折射（约 0.6°）和日月视半径，因此日出日落时刻和天文台公布的会差几分钟。
- **看得见**：只问月亮是否在地平线以上。云、地形遮挡、天光亮度，以及新月前后月亮被太阳光淹没的情况都没有模拟。
- **画面**：太阳和月亮只画出方向，距离和大小都不按比例。陆地轮廓来自 Natural Earth 1:110m 低分辨率数据，小岛会被省略。

页面上的一切都在浏览器里计算，不收集位置，也不发送网络请求。

## 延伸阅读

- [世界地图的投影](/labs/map-projections/)：这里的地球用的是正射投影，那一页可以和其他投影并排比较。
- [真实比例的太阳系](/labs/solar-system-true-scale/)：这里把太阳和月亮画得很近；它们真正有多远，可以去那一页走一趟。
- [Moon Phases](https://science.nasa.gov/moon/moon-phases/)，NASA Science：月相成因与白天的月亮。
- [Approximate Solar Coordinates](https://aa.usno.navy.mil/faq/sun_approx)，美国海军天文台：本页太阳位置所用的低精度公式。
- [Natural Earth](https://www.naturalearthdata.com/) 与 [world-atlas](https://github.com/topojson/world-atlas)：陆地轮廓数据来源。

