feat: 完善时标与天象几何计算并扩展输出接口

- 新增时标、ΔT 模型、质心时间与 UT1 支持
- 改进日月食、月掩、行星事件及路径边界计算
- 完善恒星三维自行与动态距离传播
- 扩展 SVG、GeoJSON、KML 输出与底层距离换算工具
- 整理中英文手册、示例资源及回归测试
This commit is contained in:
2026-09-23 18:55:12 +08:00
parent 1f31a9b5b5
commit 16c62a97d5
503 changed files with 33290 additions and 9471 deletions
+17 -2
View File
@@ -5,6 +5,7 @@ import (
"math"
"time"
"b612.me/astro"
"b612.me/astro/internal/geodata"
"b612.me/astro/internal/occultationgeo"
"b612.me/astro/moon"
@@ -119,6 +120,13 @@ func marshalStarOccultation(path moon.StarOccultationPath, markerOptions *TimeMa
return nil, err
}
}
timeScale, scaleErr := timeScaleForMarkers(markerOptions)
if scaleErr != nil {
return nil, scaleErr
}
if timeScale == astro.TimeScaleUT1 {
path = moon.StarOccultationPathInUT1(path)
}
if err := validateStarOccultationPathData(path); err != nil {
return nil, err
}
@@ -233,7 +241,7 @@ func marshalStarOccultation(path moon.StarOccultationPath, markerOptions *TimeMa
return nil, err
}
}
return marshalFeatureCollection(features)
return marshalFeatureCollectionWithTimeScale(features, timeScale)
}
// MarshalPlanetOccultation 将月掩行星的部分掩、全掩和中心线编码为 GeoJSON。
@@ -257,6 +265,13 @@ func marshalPlanetOccultation(path moon.PlanetOccultationPath, markerOptions *Ti
return nil, err
}
}
timeScale, scaleErr := timeScaleForMarkers(markerOptions)
if scaleErr != nil {
return nil, scaleErr
}
if timeScale == astro.TimeScaleUT1 {
path = moon.PlanetOccultationPathInUT1(path)
}
if err := path.Planet.Validate(); err != nil {
return nil, fmt.Errorf("geojson: planetary occultation target: %w", err)
}
@@ -501,7 +516,7 @@ func marshalPlanetOccultation(path moon.PlanetOccultationPath, markerOptions *Ti
return nil, err
}
}
return marshalFeatureCollection(features)
return marshalFeatureCollectionWithTimeScale(features, timeScale)
}
// roundAuthoritativePlanetBandJunctions runs after the partial/total