Files
astro/doc/img/solar-eclipse-xiamen-2012-en.svg
T
b612 044f2f4381 feat: 引入可切换星历模型并扩展天象观测链路
- 新增半解析、旧模型、自定义与多源堆叠星历实例,提供 Context、Instance、SPK 读取及状态与视位置计算
- 统一太阳、月球和行星实例接口,扩展黄经穿越、留、相位、最近角距、偕日可见、任意高度升落、轨道节点及凌日等天象查询
- 完善日月食、月掩与凌日的月缘剖面、有限盘面接触、站心修正、局地可见性、全球路径和地图输出
- 新增 SVG、GeoJSON、KML 天象输出及凌日、月掩和月缘地形相关缓存与几何求解
- 新增恒星星表导入与查询,支持 CSV、Hipparcos、BSC5、Stellarium 等格式及名称、交叉标识、锥面检索和星等过滤
- 补充 IAU 2006、地球定向、折射消光、大气观测、轨道传播及半解析行星/月球数据支持
- 将默认未来民用时标切换为 TimeScaleLeapHour,更新 2027–2400 农历速查表、中文日期解析和时区边界处理
- 增加事件基线、跨模型回归、几何边界、月缘地形和输出契约测试,完善中英文手册、示例资源、NOTICE 与忽略规则
2026-10-15 23:54:15 +08:00

1 line
13 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" width="920" height="720" viewBox="0 0 920 720"><defs><radialGradient id="se-sun" cx="40%" cy="34%" r="64%"><stop offset="0%" stop-color="#fff8bb"/><stop offset="58%" stop-color="#ffd55f"/><stop offset="100%" stop-color="#f5a623"/></radialGradient></defs><rect width="100%" height="100%" fill="#efefed"/><rect x="22" y="18" width="876.000" height="684.000" fill="#ffffff" stroke="#c9c9c6" stroke-width="1.2"/><text x="460.000" y="44" fill="#111111" font-family="Georgia, 'Times New Roman', serif" font-size="26" font-weight="700" text-anchor="middle">2012-05-21 Local Solar Eclipse</text><line x1="382.000" y1="57" x2="538.000" y2="57" stroke="#555" stroke-width="1"/><text x="460.000" y="86.000" fill="#222" font-family="Georgia, 'Times New Roman', serif" font-size="14" text-anchor="middle">lon=118.0894 lat=24.4798 type=annular magnitude=0.9333 obscuration=0.8724</text><text x="460.000" y="109.000" fill="#333" font-family="Georgia, 'Times New Roman', serif" font-size="13" text-anchor="middle">Greatest: 2012-05-21 06:10:25 CST Sun altitude 9.57 deg Sun in Taurus</text><text x="460.000" y="132.000" fill="#333" font-family="Georgia, 'Times New Roman', serif" font-size="13" text-anchor="middle">Solar Saros 128 58/73 Annularity 00:04:20</text><text x="46.000" y="156.000" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="14" font-weight="700">Overview path</text><circle cx="319.200" cy="298.700" r="44.270" fill="url(#se-sun)" stroke="#c78211" stroke-width="1.4"/><circle cx="319.200" cy="298.700" r="46.270" fill="none" stroke="#ffec92" stroke-opacity="0.58" stroke-width="7"/><text x="319.200" y="237.430" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="14" font-weight="700" text-anchor="middle">N</text><text x="254.930" y="302.700" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="14" font-weight="700" text-anchor="middle">E</text><text x="383.470" y="302.700" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="14" font-weight="700" text-anchor="middle">W</text><text x="319.200" y="369.970" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="14" font-weight="700" text-anchor="middle">S</text><line class="ecliptic-line" x1="444.855" y1="325.707" x2="193.545" y2="271.693" stroke="#666" stroke-width="1" stroke-dasharray="4 3" opacity="0.82"/><text x="193.545" y="265.693" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="12" text-anchor="end">Ecliptic</text><path d="M 402.112 319.463 L 395.120 317.748 L 388.187 316.027 L 381.315 314.301 L 374.503 312.570 L 367.752 310.835 L 361.061 309.096 L 354.432 307.354 L 347.865 305.609 L 341.358 303.862 L 334.914 302.112 L 328.531 300.362 L 322.209 298.610 L 322.157 298.596 L 319.441 297.838 L 316.737 297.080 L 315.950 296.858 L 309.752 295.107 L 303.616 293.355 L 297.542 291.605 L 291.530 289.856 L 285.579 288.110 L 279.690 286.366 L 273.861 284.625 L 268.094 282.888 L 262.388 281.155 L 256.743 279.426 L 251.158 277.702 L 245.633 275.984 L 240.168 274.272 L 237.242 273.350" fill="none" stroke="#555555" stroke-width="1.2" stroke-dasharray="5 4" stroke-linecap="round" stroke-linejoin="round"/><circle class="event-moon" data-label="C1" cx="402.112" cy="319.463" r="41.200" fill="none" stroke="#24518a" stroke-width="1.3" stroke-dasharray="5 4"/><circle class="event-center" data-label="C1" cx="402.112" cy="319.463" r="2.6" fill="#ffffff" stroke="#24518a" stroke-width="1.2"/><circle class="event-center" data-label="C2" cx="322.157" cy="298.596" r="2.6" fill="#ffffff" stroke="#24518a" stroke-width="1.2"/><circle class="event-moon" data-label="Greatest" cx="319.441" cy="297.838" r="41.348" fill="none" stroke="#111111" stroke-width="1.3" stroke-dasharray="5 4"/><circle class="event-center" data-label="Greatest" cx="319.441" cy="297.838" r="2.6" fill="#ffffff" stroke="#111111" stroke-width="1.2"/><circle class="event-center" data-label="C3" cx="316.737" cy="297.080" r="2.6" fill="#ffffff" stroke="#24518a" stroke-width="1.2"/><circle class="event-moon" data-label="C4" cx="237.242" cy="273.350" r="41.516" fill="none" stroke="#24518a" stroke-width="1.3" stroke-dasharray="5 4"/><circle class="event-center" data-label="C4" cx="237.242" cy="273.350" r="2.6" fill="#ffffff" stroke="#24518a" stroke-width="1.2"/><line class="contact-leader" x1="362.144" y1="309.454" x2="409.671" y2="310.446" stroke="#c96b6b" stroke-width="0.8" opacity="0.58"/><circle class="contact-point" cx="362.144" cy="309.454" r="3.2" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="409.671" y="314.446" fill="#b51616" font-family="Georgia, 'Times New Roman', serif" font-size="11" font-weight="700" text-anchor="start">C1 256°</text><line class="contact-leader" x1="363.443" y1="297.138" x2="415.834" y2="283.311" stroke="#c96b6b" stroke-width="0.8" opacity="0.58"/><circle class="contact-point" cx="363.443" cy="297.138" r="3.2" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="415.834" y="287.311" fill="#b51616" font-family="Georgia, 'Times New Roman', serif" font-size="11" font-weight="700" text-anchor="start">C2 272°</text><line class="contact-leader" x1="282.216" y1="274.368" x2="248.668" y2="260.825" stroke="#c96b6b" stroke-width="0.8" opacity="0.58"/><circle class="contact-point" cx="282.216" cy="274.368" r="3.2" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="248.668" y="264.825" fill="#b51616" font-family="Georgia, 'Times New Roman', serif" font-size="11" font-weight="700" text-anchor="end">C3 57°</text><line class="contact-leader" x1="276.907" y1="285.619" x2="232.547" y2="287.449" stroke="#c96b6b" stroke-width="0.8" opacity="0.58"/><circle class="contact-point" cx="276.907" cy="285.619" r="3.2" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="232.547" y="291.449" fill="#b51616" font-family="Georgia, 'Times New Roman', serif" font-size="11" font-weight="700" text-anchor="end">C4 73°</text><line class="event-leader" x1="402.112" y1="319.463" x2="344.397" y2="276.977" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="329.968" y="268.855" fill="#174f8a" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="end">C1</text><line class="event-leader" x1="322.157" y1="298.596" x2="276.005" y2="266.874" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="264.467" y="261.443" fill="#174f8a" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="end">C2</text><line class="event-leader" x1="319.441" y1="297.838" x2="292.748" y2="348.116" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="286.075" y="363.186" fill="#174f8a" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="end">GE</text><line class="event-leader" x1="316.737" y1="297.080" x2="370.343" y2="321.774" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="383.745" y="330.448" fill="#174f8a" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="start">C3</text><line class="event-leader" x1="237.242" y1="273.350" x2="284.462" y2="305.014" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="296.267" y="315.430" fill="#174f8a" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="start">C4</text><text x="46.000" y="457.400" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="14" font-weight="700">Phase disk panels</text><rect x="46.000" y="467.400" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="124.800" y="485.400" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="middle">C1</text><circle cx="124.800" cy="548.600" r="22.694" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="124.800" cy="548.600" r="23.894" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="167.303" cy="559.244" r="21.120" fill="#050505" stroke="#111111" stroke-width="1.1"/><circle class="stage-contact-point" cx="146.814" cy="554.113" r="2.5" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="124.800" y="619.800" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">05:08:12</text><rect x="213.600" y="467.400" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="292.400" y="485.400" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="middle">C2 Annularity begins</text><circle cx="292.400" cy="548.600" r="22.694" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="292.400" cy="548.600" r="23.894" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="293.916" cy="548.546" r="21.194" fill="#050505" stroke="#111111" stroke-width="1.1"/><circle class="stage-contact-point" cx="315.080" cy="547.799" r="2.5" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="292.400" y="619.800" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">06:08:15</text><rect x="381.200" y="467.400" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="460.000" y="485.400" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="middle">Greatest</text><circle cx="460.000" cy="548.600" r="22.694" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="460.000" cy="548.600" r="23.894" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="460.124" cy="548.158" r="21.196" fill="#050505" stroke="#111111" stroke-width="1.1"/><text x="460.000" y="619.800" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">06:10:25</text><rect x="548.800" y="467.400" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="627.600" y="485.400" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="middle">C3 Annularity ends</text><circle cx="627.600" cy="548.600" r="22.694" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="627.600" cy="548.600" r="23.894" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="626.337" cy="547.769" r="21.199" fill="#050505" stroke="#111111" stroke-width="1.1"/><circle class="stage-contact-point" cx="608.641" cy="536.127" r="2.5" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="627.600" y="619.800" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">06:12:34</text><rect x="716.400" y="467.400" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="795.200" y="485.400" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="middle">C4</text><circle cx="795.200" cy="548.600" r="22.694" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="795.200" cy="548.600" r="23.894" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="753.186" cy="535.605" r="21.282" fill="#050505" stroke="#111111" stroke-width="1.1"/><circle class="stage-contact-point" cx="773.519" cy="541.894" r="2.5" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="795.200" y="619.800" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">07:20:54</text><text x="40.000" y="658.000" fill="#333" font-family="Georgia, 'Times New Roman', serif" font-size="12">Sun is fixed at center; Moon path uses the local tangent plane. East is left, north is up.</text><text x="40.000" y="676.000" fill="#555" font-family="Georgia, 'Times New Roman', serif" font-size="12">Overview omits C2/C3 Moon outlines; lower panels show each phase separately. Contact PAs are measured</text><text x="40.000" y="694.000" fill="#555" font-family="Georgia, 'Times New Roman', serif" font-size="12">from celestial north toward east. All times are UTC (shown in CST, UTC+08:00). Circular limb.</text><rect x="604.400" y="186.700" width="260.000" height="117.000" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="616.400" y="206.700" fill="#111111" font-family="Georgia, 'Times New Roman', serif" font-size="13" font-weight="700">Contacts (CST)</text><text x="616.400" y="224.200" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">C1 First contact 05:08:12 PA 255.9°</text><text x="616.400" y="241.700" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">C2 Annularity begins 06:08:15 PA 272.0°</text><text x="616.400" y="259.200" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">GE Greatest 06:10:25</text><text x="616.400" y="276.700" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">C3 Annularity ends 06:12:34 PA 56.7°</text><text x="616.400" y="294.200" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">C4 Last contact 07:20:54 PA 72.8°</text></svg>