---
title: "把固定 JPL 尘埃几何投影到真实 HST 的 ISON 图像"
description: "用真实 HST 像素复算尘尾方向，处理 UTC 与 TDB、光行时、TAN/CD 投影和相对摄动力检验。"
canonical_url: "https://sandboxphysics.com/zh/stories/comet-dust/ison-image-projection-tutorial/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/comet-dust/ison-image-projection-tutorial/"
last_modified: "2026-10-28"
---

[从阳光推力读到真实彗尾](https://sandboxphysics.com/zh/stories/comet-dust/)

L3 · 彗尘动力学

# 把固定 JPL 尘埃几何投影到真实 HST 的 ISON 图像

Sandbox Physics · 2026-10-28

本教程比较外层尘尾的观测方向与计算释放几何。你会从真实 HST 像素找出宽尾，按档案 WCS 确定朝向，再看到几组释放历史为什么几乎指向同一方向。下方公开材料配合 Python 标准库即可复算。

## 开始前需要什么

先读释放状态一章，知道等时线固定年龄、等粒径线固定力比。时标和像素坐标在用到时逐步介绍。

## 选一帧曝光，以实际观测时刻为准

采用 13198 项目、PI J.-Y. Li 的 HST/WFC3 F606W 数据集 ic7301ooq。单帧曝光的 UTC 修正儒略日从 56392.21727116 到 56392.22041947，曝光时长二百七十二秒。两端平均得到 2013 年 4 月 10 日 05:15:08.235216 UTC，几何以这个中点为准。

固定 FITS 的处理日期是 2026 年 6 月 1 日，CAL\_VER 为 3.7.3，版本日期 Jan-07-2026。处理日期、2013 年曝光日期和公开图片发布日期是不同的。Li 等论文采用较长观测序列与当年的合成处理；这里复算的是明确选定的档案单帧诊断。

原始 FITS 为 13,579,200 字节，SHA-256 和 MAST 直链均在出处文件中。按 MAST 公共任务政策使用并注明 HST/MAST 来源；未经修改的档案 JPEG 与比较图一并提供。它们分别保留观测预览和测量像素，交互粒子另作教学展示。

对应阅读：MAST HST program 13198 and public data-use policy · Li et al.

## 在空目录里运行

新建空目录，下载五个必需文件后执行下面命令。无需网站源码、Lab 引擎、Python 扩展包或账号。脚本先检查两个输入的哈希，再输出完整数字与 SVG；SVG 灰度来自实际图像像素。保存的结果由 Python 3.12.14 生成。Python 3.9 及更高版本都可重算，但求和、数学库与 PNG 压缩的差别，可能改变末位数字或文件字节。

若要重算相对摄动力检验，再下载 ison-perturbers.json 与 relative\_release\_reference.py，并加上 --force-check。它会积分采样的行星差分加速度和彗核出气项，比基础方向比较慢。固定参考结果包含这一步。

```
            mkdir ison-tutorial
cd ison-tutorial
curl --fail --remote-name https://sandboxphysics.com/stories/comet-dust/reproduce-ison.py
curl --fail --remote-name https://sandboxphysics.com/stories/comet-dust/comet_orbits.py
curl --fail --remote-name https://sandboxphysics.com/stories/comet-dust/svg_figure.py
curl --fail --remote-name https://sandboxphysics.com/stories/comet-dust/ison-image.json
curl --fail --remote-name https://sandboxphysics.com/stories/comet-dust/ison-ephemeris.json
python3 reproduce-ison.py --directory . --output result.json --figure comparison.svg
          
```

对应阅读：MAST HST program 13198 and public data-use policy · JPL Horizons API and observer/vector conventions

## 分清接收时刻与发光时刻

Horizons 观测量 30 给出曝光中点的 TDB 比 UTC 快 67.185633 秒，查询 TDB 向量前先加上这个间隔。观测量 21 给出地心光行时 35.28174224 分钟。彗星取较早的发光时刻，地球取接收时刻。

所有冻结向量使用 ICRF 轴和 FRAME 参考平面。彗星释放状态是未作光行时修正的日心几何向量。先取地球接收时刻与太阳发光时刻各自的质心位置，相减得到同一原点下的观察者位置。若直接拿同一时刻日心地球相减，就可能混用移动原点。重建彗星方向与另查的 Horizons 光行时修正天体测量方向，在保存精度下吻合。

$$
JD_{\rm obs,TDB}=2456392.7196229263,\qquad JD_{\rm emit,TDB}=2456392.6951217162
$$

曝光中点先按 UTC 读取，再采用 Horizons 给出的时标差，不猜闰秒数。两组 TDB 时刻相差单程光行时。

$$
\boldsymbol R_{\rm obs}=\boldsymbol x_{E,\rm bary}(t_{\rm obs})-\boldsymbol x_{\odot,\rm bary}(t_{\rm emit}),\quad \boldsymbol\ell=\boldsymbol r_{c,\rm helio}(t_{\rm emit})-\boldsymbol R_{\rm obs}
$$

观察者向量以太阳在发光时刻的位置为原点。所得视线赤经约九十九点三零零八二一六四一度，赤纬约三十点二三九二一九二二七度。

对应阅读：JPL Horizons API and observer/vector conventions · MAST HST program 13198 and public data-use policy

## 给太阳模型配上同一条参考母轨道

每个释放状态都传播两条太阳圆锥轨道：尘粒用减弱引力，配对母体用正常引力。到发光时刻后，先取两者的相对位移，再加到 JPL 彗核上。这是以 JPL 几何为基准的太阳相对释放近似，不是完整 JPL 尘粒轨道。

配对母体很关键。从一百二十日前释放状态出发的纯太阳母体，最终与 JPL 彗核相差约二万八千五百七十七千米；若直接相减，零光力也会出现假尘尾。相对构造在力比和释放速度都为零时，位移严格为零。

独立检验沿每日 JPL 彗核路径积分，加入八个行星系统的差分加速度，以及彗核独有 Marsden A1/A2 出气加速度的负项。行星力既有共同部分也有差分部分；彗核出气不能默认由尘粒共享。十六组测试中，相对位移变化最大约百万分之二点八，位置角变化最大约零点零零零零七四度；单独的彗核出气影响小于零点零一千米。步长细化也作了比较。这些是采样敏感性结果，不是所有释放参数的严格误差界；行星多极项、小行星摄动和相对论仍未纳入。

$$
\boldsymbol r_{d,\rm approx}(t)=\boldsymbol r_{c,\rm JPL}(t)+\left[\boldsymbol r_{d,\rm solar}(t)-\boldsymbol r_{p,\rm solar}(t)\right]
$$

两条太阳轨道从同一个 JPL 释放位置与速度开始；本教程的几何族线不加释放速度。摄动力检验覆盖三十、六十、九十、一百二十日年龄，以及零点零零五、零点零三、零点一、零点三四档力比。

对应阅读：JPL Horizons API and observer/vector conventions · Finson & Probstein · Burns

## 投影到原生像素，保留图像的手性

先把视线方向投到档案参考天区的切平面。设目标方向为 q，参考东、北与中心各取一个单位向量，则切平面坐标是 $\xi=(\boldsymbol q\cdot\boldsymbol e)/(\boldsymbol q\cdot\boldsymbol n_0)$ 与 $\eta=(\boldsymbol q\cdot\boldsymbol n)/(\boldsymbol q\cdot\boldsymbol n_0)$。把弧度换成度，乘档案 CD 矩阵的逆，再加 CRPIX。脚本采用完整 TAN 投影。

FITS 参考像素从一开始编号，原生数组行沿像素正 y 增加；显示时才反转行。CD 行列式为负，若不看它的符号、直接套“北上东左”的通用画法，就可能把图像镜像。图像正 y 轴为从北向东量负四十二点八二一度，与档案 ORIENTAT 一致。

另将日彗向量与反日心速度独立投影，同 Horizons 观测量 27 比较，分别得到九十二点一八七度和七十九点二七七度。故意镜像罗盘后，尘尾扇区峰从九十度转到约一百八十五度。JPL 彗核在从零编号的原生像素约为 (514.48, 528.54)，在这里的粗采样尺度下与中央天体位置一致。

$$
\begin{bmatrix}\xi\\\eta\end{bmatrix}_{\rm deg}=\begin{bmatrix}-8.07234108&-7.48061280\\-7.48061280&8.07234108\end{bmatrix}10^{-6}\begin{bmatrix}x_{\rm FITS}-515\\y_{\rm FITS}-543.5\end{bmatrix}
$$

矩阵单位是每原生像素多少度。符号和手性决定罗盘朝向，也决定比较图里的角尺度标尺。

对应阅读：MAST HST program 13198 and public data-use policy · JPL Horizons API and observer/vector conventions

## 测量宽尾，再看还剩几种解释

图像输入把有限、覆盖权重大于零的原生八乘八像素块取中位数，同时保存覆盖比例，负背景也保留。这能压低孤立亮点，却不是保流量孔径测光。若直接取全帧最亮原生像素，会选到远离彗核的 (201, 803)。

每隔五度放一个二十度宽的扇区，统计亮度中位数。二至六、四至十、六至十二、八至十五角秒四个重叠径向范围，峰都在九十度。它们检验的是半径选择敏感性，共享像素又含 drizzle 相关噪声，不能当作四次独立探测；五度步长也不是误差棒。内两角秒被排除，因为内彗发含有向日喷流。

下面两组实际输出中，三十日、力比零点一，与六十日、力比零点零三的粒子都到约八角秒处，方向只差半度左右，均与粗略宽尾方向相容。要反推尺寸或喷发日期，还需亮度模型、生产历史与多期图像。计算对尘粒采用同一发光时刻；对十五角秒内的采样点，保存的差分光行时位移估计小于十千米，适合这里的粗方向比较，不适合精密天体测量拟合。

| 年龄（日） | 力比 | 分离（角秒） | 从北向东位置角（度） |
| --- | --- | --- | --- |
| 30 | 0.1 | 7.92 | 91.558 |
| 60 | 0.03 | 8.58 | 91.007 |
| 120 | 0.005 | 4.79 | 90.081 |
| 观测扇区峰 | 多种值相容 | 测试 2—15 | 90，按五度网格 |

对应阅读：Li et al. · MAST HST program 13198 and public data-use policy · Finson & Probstein

## 下载原输入与完整结果

前五个文件即可用 Python 标准库完成基础比较；相对力模块与摄动数据用于 --force-check。最后两个提取脚本可选用来从 MAST 与 Horizons 重建输入，图像提取需要 NumPy。

- [reproduce-ison.py](https://sandboxphysics.com/stories/comet-dust/reproduce-ison.py)
- [comet\_orbits.py](https://sandboxphysics.com/stories/comet-dust/comet_orbits.py)
- [svg\_figure.py](https://sandboxphysics.com/stories/comet-dust/svg_figure.py)
- [ison-image.json](https://sandboxphysics.com/stories/comet-dust/ison-image.json)
- [ison-ephemeris.json](https://sandboxphysics.com/stories/comet-dust/ison-ephemeris.json)
- [ison-results.json](https://sandboxphysics.com/stories/comet-dust/ison-results.json)
- [provenance.json](https://sandboxphysics.com/stories/comet-dust/provenance.json)
- [public-reproduction.json](https://sandboxphysics.com/stories/comet-dust/public-reproduction.json)
- [relative\_release\_reference.py](https://sandboxphysics.com/stories/comet-dust/relative_release_reference.py)
- [ison-perturbers.json](https://sandboxphysics.com/stories/comet-dust/ison-perturbers.json)
- [relative-force-sensitivity.json](https://sandboxphysics.com/stories/comet-dust/relative-force-sensitivity.json)
- [horizons-source-queries.json](https://sandboxphysics.com/stories/comet-dust/horizons-source-queries.json)
- [freeze-observation.py](https://sandboxphysics.com/stories/comet-dust/freeze-observation.py)
- [fetch-horizons.py](https://sandboxphysics.com/stories/comet-dust/fetch-horizons.py)

可选：从固定档案响应重建小输入

下载两个提取脚本与 horizons-source-queries.json，先恢复固定 Horizons 响应的原始字节，再解析星历、提取原 FITS。MAST 原文件必须匹配保存的哈希；日后档案若重新处理，检查会明确失败。上方五文件复算不依赖未来档案是否更新。

```
mkdir source
python3 -c "import json,pathlib; p=pathlib.Path('source'); [p.joinpath(n).write_text(t) for n,t in json.load(open('horizons-source-queries.json')).items()]"
curl --fail -o source/ic7301ooq_drz.fits 'https://mast.stsci.edu/api/v0.1/Download/file?uri=mast:HST/product/ic7301ooq_drz.fits'
curl --fail -o source/ic7301ooq_drz.jpg 'https://mast.stsci.edu/api/v0.1/Download/file?uri=mast:HST/product/ic7301ooq_drz.jpg'
python3 fetch-horizons.py --directory source
python3 freeze-observation.py --source-directory source --output-directory rebuilt --documentation-directory rebuilt-docs
```

![真实 HST ISON 像素、投影尘埃族线与 WCS 罗盘](https://sandboxphysics.com/stories/comet-dust/ison-projection.svg)

灰度来自实测像素的中位数降采样与对数显示；彩线为太阳相对释放模型，箭头为反太阳和反速度方向。[查看未经修改的 MAST 预览](https://sandboxphysics.com/_astro/ic7301ooq_drz.Bh-7PpJQ.jpg)

## 亲手观察

### [把投影接回三维图景](https://sandboxphysics.com/zh/labs/comet-dust-tails/)

1. 比较喷发族线与同粒径族线，再把视线转到轨道平面附近。
2. 回看真实比较图，认出测量像素、参考方向和计算释放曲线分别在哪里。

## 练习与答案

把代码改为选取最亮原生像素，或镜像横轴，会发生什么？哪项检验能发现错误？

最亮原生像素会选到远处污染点；镜像则让扇区峰跑到约一百八十五度，罗盘手性也反了。解释尘尾前，应检查 JPL 彗核像素、CD 行列式、ORIENTAT 与独立投影的 Horizons 位置角。

采样摄动力修正很小，为什么仍不能宣称精确测到了 ISON 尘粒大小？

那些数字只比较固定释放假设下的几种动力学近似。图像仍有宽扇区重叠、相关噪声、释放速度未知及粒径年龄退化；没有定标表面亮度似然，也没有唯一粒子分布，结论只到几何方向比较。

[上一篇：坡印廷—罗伯逊拖曳，怎样带走轨道能量](https://sandboxphysics.com/zh/stories/comet-dust/slow-loss-of-orbital-energy/) [下一篇：读懂 PR 拖曳与热反冲各自的时钟和证据](https://sandboxphysics.com/zh/stories/comet-dust/reading-slow-radiation-forces/)

## 来源与计算范围

1. [Finson & Probstein, A Theory of Dust Comets I (1968)](https://adsabs.harvard.edu/pdf/1968ApJ...154..327F)

   ApJ 154，327—352，DOI 10.1086/149761。第 I—III 节，特别是第 329、334—335 页与图 4：脱离气体拖曳后的尘粒、减弱的太阳引力、等时线与等粒径线。教学场景另加明确写出的释放速度假设。

2. [Burns, Lamy & Soter, Radiation Forces on Small Particles (1979)](https://ntrs.nasa.gov/citations/19790070469)

   Icarus 40，1—48，DOI 10.1016/0019-1035(79)90050-2。第 III—IV 节推导一阶辐射力；第 VI 节式 (19) 与图 7 讨论压力效率；第 VII—VIII 节、式 (47)—(50) 讨论减弱引力的轨道与轨道平均 PR 演化。核读作者托管的 48 页全文。

3. [Li et al., HST observations of Comet ISON, arXiv:1311.0826v1](https://arxiv.org/abs/1311.0826v1)

   第 2 节给出 2013 年 4 月 HST 观测序列与原处理；向日内喷流与延伸尘尾促使教程在粗略方向诊断中排除中心两角秒。教程使用档案 2026 年处理的单帧，与论文合成图不同。

4. [MAST HST program 13198 and public data-use policy](https://archive.stsci.edu/proposal_search.php?id=13198&mission=hst)

   HST/WFC3 F606W 数据集 ic7301ooq。固定 ic7301ooq\_drz.fits，13,579,200 字节，SHA-256 为 bd436ea87d7ab05ba8e10280e03ea04887db7055841260fb8b4bdf0b547e33f7。按 MAST 公共任务数据政策使用并注明 HST/MAST、13198 项目、PI J.-Y. Li；STScI 由 AURA 按 NASA NAS5-26555 合同运行。

5. [JPL Horizons API and observer/vector conventions](https://ssd.jpl.nasa.gov/horizons/manual.html)

   API 响应版本 1.2，API 文档版本 1.3。固定彗星记录 90004196、解 JPL#57（2025-Nov-21\_13:42:48）、DE441。对应 TIME\_TYPE、TLIST、ICRF/FRAME 向量约定和观测量 1、19、20、21、24、27、30；保存的请求与响应保留时标和几何选择。
