feat: 完善时标与天象几何计算并扩展输出接口
- 新增时标、ΔT 模型、质心时间与 UT1 支持 - 改进日月食、月掩、行星事件及路径边界计算 - 完善恒星三维自行与动态距离传播 - 扩展 SVG、GeoJSON、KML 输出与底层距离换算工具 - 整理中英文手册、示例资源及回归测试
This commit is contained in:
+1
-1
@@ -26,7 +26,7 @@ func Aphelion(year int) ApsisInfo {
|
||||
|
||||
func convertEarthApsisInfo(event basic.ApsisEvent) ApsisInfo {
|
||||
return ApsisInfo{
|
||||
Time: basic.JDE2DateByZone(event.JDE, time.UTC, false),
|
||||
Time: basic.JD2DateByZone(event.JD, time.UTC, false),
|
||||
Distance: event.Distance,
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -11,8 +11,8 @@ import (
|
||||
func TestApsisWrappersMatchBasic(t *testing.T) {
|
||||
peri := basic.EarthPerihelion(2026)
|
||||
periWrapped := Perihelion(2026)
|
||||
if !periWrapped.Time.Equal(basic.JDE2DateByZone(peri.JDE, time.UTC, false)) {
|
||||
t.Fatalf("perihelion time mismatch: got %s want %s", periWrapped.Time.Format(time.RFC3339Nano), basic.JDE2DateByZone(peri.JDE, time.UTC, false).Format(time.RFC3339Nano))
|
||||
if !periWrapped.Time.Equal(basic.JD2DateByZone(peri.JD, time.UTC, false)) {
|
||||
t.Fatalf("perihelion time mismatch: got %s want %s", periWrapped.Time.Format(time.RFC3339Nano), basic.JD2DateByZone(peri.JD, time.UTC, false).Format(time.RFC3339Nano))
|
||||
}
|
||||
if math.Float64bits(periWrapped.Distance) != math.Float64bits(peri.Distance) {
|
||||
t.Fatalf("perihelion distance mismatch: got %.12f want %.12f", periWrapped.Distance, peri.Distance)
|
||||
@@ -20,8 +20,8 @@ func TestApsisWrappersMatchBasic(t *testing.T) {
|
||||
|
||||
aphe := basic.EarthAphelion(2026)
|
||||
apheWrapped := Aphelion(2026)
|
||||
if !apheWrapped.Time.Equal(basic.JDE2DateByZone(aphe.JDE, time.UTC, false)) {
|
||||
t.Fatalf("aphelion time mismatch: got %s want %s", apheWrapped.Time.Format(time.RFC3339Nano), basic.JDE2DateByZone(aphe.JDE, time.UTC, false).Format(time.RFC3339Nano))
|
||||
if !apheWrapped.Time.Equal(basic.JD2DateByZone(aphe.JD, time.UTC, false)) {
|
||||
t.Fatalf("aphelion time mismatch: got %s want %s", apheWrapped.Time.Format(time.RFC3339Nano), basic.JD2DateByZone(aphe.JD, time.UTC, false).Format(time.RFC3339Nano))
|
||||
}
|
||||
if math.Float64bits(apheWrapped.Distance) != math.Float64bits(aphe.Distance) {
|
||||
t.Fatalf("aphelion distance mismatch: got %.12f want %.12f", apheWrapped.Distance, aphe.Distance)
|
||||
|
||||
+2
-2
@@ -11,6 +11,6 @@ import (
|
||||
// 返回 date 对应绝对时刻的地球轨道偏心率,无量纲。
|
||||
// Returns Earth's orbital eccentricity at the instant represented by date; the value is dimensionless.
|
||||
func EarthEccentricity(date time.Time) float64 {
|
||||
jde := basic.Date2JDE(date.UTC())
|
||||
return basic.Earthe(basic.TD2UT(jde, true))
|
||||
jd := basic.Date2JD(date.UTC())
|
||||
return basic.Earthe(basic.UTC2TT(jd))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user