- 新增日食、月食、本地可见性、中心线、半影区域、SVG 图示与沙罗周期信息 - 新增行星冲合、留、方照、物理星历、视直径、相位、亮肢角、轨道节点等计算 - 新增木星伽利略卫星位置、现象与接触事件计算 - 新增恒星星表、星座判定、自行修正与观测辅助能力 - 新增 coord、formula、orbit、sundial、lite/sun、lite/moon 等扩展包 - 完善农历年号、月相英文别名、视差角、大气质量、折射、日晷与双星计算 - 增加 NASA、JPL Horizons、IMCCE 等回归测试数据与基线测试 - 重构基础算法文件组织,补充大量公开 API 注释和语义回归测试 - 更新中文和英文 README,补充示例、精度说明、SVG 配图
1 line
13 KiB
XML
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">2035-09-02 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=116.4074 lat=39.9042 type=total magnitude=1.0255 obscuration=1.0000</text><text x="460.000" y="109.000" fill="#333" font-family="Georgia, 'Times New Roman', serif" font-size="13" text-anchor="middle">Greatest: 2035-09-02 08:33:37 CST Sun altitude 31.58 deg Sun in Leo</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 145 23/77 Totality 00:01:33</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="303.800" r="43.381" fill="url(#se-sun)" stroke="#c78211" stroke-width="1.4"/><circle cx="319.200" cy="303.800" r="45.381" fill="none" stroke="#ffec92" stroke-opacity="0.58" stroke-width="7"/><text x="319.200" y="243.419" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="14" font-weight="700" text-anchor="middle">N</text><text x="255.819" y="307.800" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="14" font-weight="700" text-anchor="middle">E</text><text x="382.581" y="307.800" 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="374.181" 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="442.643" y1="253.717" x2="195.757" y2="353.883" stroke="#666" stroke-width="1" stroke-dasharray="4 3" opacity="0.82"/><text x="195.757" y="347.883" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="12" text-anchor="end">Ecliptic</text><path d="M 403.194 278.305 L 396.777 280.079 L 390.414 281.858 L 384.103 283.640 L 377.845 285.427 L 371.639 287.218 L 365.484 289.013 L 359.381 290.813 L 353.329 292.617 L 347.327 294.426 L 341.374 296.241 L 335.471 298.061 L 329.616 299.886 L 323.809 301.716 L 319.913 302.956 L 319.021 303.241 L 318.126 303.528 L 318.049 303.552 L 312.336 305.394 L 306.669 307.242 L 301.047 309.096 L 295.470 310.955 L 289.937 312.821 L 284.446 314.694 L 278.998 316.573 L 273.591 318.458 L 268.225 320.351 L 262.899 322.250 L 257.612 324.156 L 252.363 326.069 L 247.150 327.989 L 241.975 329.916 L 236.834 331.850 L 235.892 332.207" 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="403.194" cy="278.305" r="44.395" fill="none" stroke="#24518a" stroke-width="1.3" stroke-dasharray="5 4"/><circle class="event-center" data-label="C1" cx="403.194" cy="278.305" r="2.6" fill="#ffffff" stroke="#24518a" stroke-width="1.2"/><circle class="event-center" data-label="C2" cx="319.913" cy="302.956" r="2.6" fill="#ffffff" stroke="#24518a" stroke-width="1.2"/><circle class="event-moon" data-label="Greatest" cx="319.021" cy="303.241" r="44.524" fill="none" stroke="#111111" stroke-width="1.3" stroke-dasharray="5 4"/><circle class="event-center" data-label="Greatest" cx="319.021" cy="303.241" r="2.6" fill="#ffffff" stroke="#111111" stroke-width="1.2"/><circle class="event-center" data-label="C3" cx="318.126" cy="303.528" r="2.6" fill="#ffffff" stroke="#24518a" stroke-width="1.2"/><circle class="event-moon" data-label="C4" cx="235.892" cy="332.207" r="44.635" fill="none" stroke="#24518a" stroke-width="1.3" stroke-dasharray="5 4"/><circle class="event-center" data-label="C4" cx="235.892" cy="332.207" r="2.6" fill="#ffffff" stroke="#24518a" stroke-width="1.2"/><line class="contact-leader" x1="360.711" y1="291.200" x2="413.955" y2="264.614" stroke="#c96b6b" stroke-width="0.8" opacity="0.58"/><circle class="contact-point" cx="360.711" cy="291.200" r="3.2" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="413.955" y="268.614" fill="#b51616" font-family="Georgia, 'Times New Roman', serif" font-size="11" font-weight="700" text-anchor="start">C1 287°</text><line class="contact-leader" x1="291.204" y1="336.938" x2="255.645" y2="377.477" stroke="#c96b6b" stroke-width="0.8" opacity="0.58"/><circle class="contact-point" cx="291.204" cy="336.938" r="3.2" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="255.645" y="381.477" fill="#b51616" font-family="Georgia, 'Times New Roman', serif" font-size="11" font-weight="700" text-anchor="end">C2 140°</text><line class="contact-leader" x1="361.249" y1="314.468" x2="408.701" y2="315.625" stroke="#c96b6b" stroke-width="0.8" opacity="0.58"/><circle class="contact-point" cx="361.249" cy="314.468" r="3.2" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="408.701" y="319.625" fill="#b51616" font-family="Georgia, 'Times New Roman', serif" font-size="11" font-weight="700" text-anchor="start">C3 256°</text><line class="contact-leader" x1="278.140" y1="317.801" x2="223.114" y2="351.620" stroke="#c96b6b" stroke-width="0.8" opacity="0.58"/><circle class="contact-point" cx="278.140" cy="317.801" r="3.2" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="223.114" y="355.620" fill="#b51616" font-family="Georgia, 'Times New Roman', serif" font-size="11" font-weight="700" text-anchor="end">C4 109°</text><line class="event-leader" x1="403.194" y1="278.305" x2="342.617" y2="233.671" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="327.472" y="225.013" 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="319.913" y1="302.956" x2="271.319" y2="269.809" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="259.171" y="264.023" 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.021" y1="303.241" x2="291.261" y2="356.061" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="284.321" y="371.765" 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="318.126" y1="303.528" x2="374.372" y2="329.288" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="388.433" y="338.228" 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="235.892" y1="332.207" x2="285.457" y2="365.318" stroke="#24518a" stroke-width="0.8" stroke-dasharray="3 3" opacity="0.72"/><text x="297.848" y="376.095" 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="467.600" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="14" font-weight="700">Phase disk panels</text><rect x="46.000" y="477.600" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="124.800" y="495.600" 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="558.800" r="21.551" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="124.800" cy="558.800" r="22.751" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="166.528" cy="546.134" r="22.055" fill="#050505" stroke="#111111" stroke-width="1.1"/><circle class="stage-contact-point" cx="145.422" cy="552.540" r="2.5" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="124.800" y="630.000" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">07:24:28</text><rect x="213.600" y="477.600" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="292.400" y="495.600" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="middle">C2 Total begins</text><circle cx="292.400" cy="558.800" r="21.551" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="292.400" cy="558.800" r="22.751" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="292.754" cy="558.381" r="22.119" fill="#050505" stroke="#111111" stroke-width="1.1"/><circle class="stage-contact-point" cx="278.492" cy="575.263" r="2.5" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="292.400" y="630.000" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">08:32:51</text><rect x="381.200" y="477.600" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="460.000" y="495.600" 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="558.800" r="21.551" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="460.000" cy="558.800" r="22.751" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="459.911" cy="558.522" r="22.119" fill="#050505" stroke="#111111" stroke-width="1.1"/><text x="460.000" y="630.000" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">08:33:37</text><rect x="548.800" y="477.600" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="627.600" y="495.600" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="12" font-weight="700" text-anchor="middle">C3 Total ends</text><circle cx="627.600" cy="558.800" r="21.551" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="627.600" cy="558.800" r="22.751" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="627.067" cy="558.665" r="22.120" fill="#050505" stroke="#111111" stroke-width="1.1"/><circle class="stage-contact-point" cx="648.489" cy="564.100" r="2.5" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="627.600" y="630.000" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">08:34:24</text><rect x="716.400" y="477.600" width="157.600" height="164.400" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="795.200" y="495.600" 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="558.800" r="21.551" fill="url(#se-sun)" stroke="#c78211" stroke-width="1"/><circle cx="795.200" cy="558.800" r="22.751" fill="none" stroke="#ffec92" stroke-opacity="0.55" stroke-width="3"/><circle class="stage-moon" cx="753.813" cy="572.912" r="22.174" fill="#050505" stroke="#111111" stroke-width="1.1"/><circle class="stage-contact-point" cx="774.802" cy="565.755" r="2.5" fill="#b51616" stroke="#ffffff" stroke-width="0.8"/><text x="795.200" y="630.000" fill="#444" font-family="Georgia, 'Times New Roman', serif" font-size="11" text-anchor="middle">09:50:23</text><text x="40.000" y="666.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="686.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 from celestial north toward east.</text><rect x="604.400" y="191.800" width="260.000" height="117.000" fill="#fbfbf8" stroke="#d8d2c4" stroke-width="1"/><text x="616.400" y="211.800" fill="#111111" font-family="Georgia, 'Times New Roman', serif" font-size="13" font-weight="700">Contacts (CST)</text><text x="616.400" y="229.300" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">C1 First contact 07:24:28 PA 286.9°</text><text x="616.400" y="246.800" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">C2 Total begins 08:32:51 PA 139.8°</text><text x="616.400" y="264.300" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">GE Greatest 08:33:37</text><text x="616.400" y="281.800" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">C3 Total ends 08:34:24 PA 255.8°</text><text x="616.400" y="299.300" fill="#333333" font-family="Georgia, 'Times New Roman', serif" font-size="11.5">C4 Last contact 09:50:23 PA 108.8°</text></svg> |