feat: 完善水星与金星全球凌日搜索及制图导出
- 基于平均下合周期与节点相位预筛候选,减少无效星历计算;跳过无法求解的单个会合周期,避免有限覆盖星历导致搜索提前终止 - 引入影轴 γ、半影半径及地球尺度几何判定,结合站心可见性识别地心无接触、仅部分地区可见的掠凌 - 添加金星 243 年、水星 46 年周期族编号,并明确编号适用范围及未分配时的零值语义 - 为 SVG、GeoJSON 和 KML 增加站心部分凌日可见区,适配接触等时线、几何元数据、图层样式及取景;为地心无接触凌日事件增加正射图,按可见区球面面积加权居中
This commit is contained in:
41 files changed
+1554
-307
No files matched your search
@@ -0,0 +1,35 @@
|
||||
package kml
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"b612.me/astro/geojson"
|
||||
"b612.me/astro/venus"
|
||||
)
|
||||
|
||||
func TestPlanetTransitGlobalPartialConversion(tester *testing.T) {
|
||||
info := venus.NextTransit(time.Date(2854, 1, 1, 0, 0, 0, 0, time.UTC))
|
||||
data, err := geojson.MarshalVenusTransit(info, geojson.PlanetTransitOptions{IsochroneStep: time.Minute})
|
||||
if err != nil {
|
||||
tester.Fatal(err)
|
||||
}
|
||||
root := convert(tester, string(data), Options{})
|
||||
if !strings.Contains(root.Document.Name, "2854-12-14") {
|
||||
tester.Fatal(root.Document.Name)
|
||||
}
|
||||
if root.Document.LookAt == nil || root.Document.LookAt.Latitude > -50 {
|
||||
tester.Fatal("KML must focus on the actual partial-transit footprint")
|
||||
}
|
||||
roles := map[string]bool{}
|
||||
for _, item := range root.Document.Folders {
|
||||
roles[item.Name] = true
|
||||
}
|
||||
if !roles["部分凌日可见区"] || !roles["一触等时线"] || !roles["四触等时线"] || roles["二触等时线"] || roles["一触视地平线"] {
|
||||
tester.Fatalf("invalid partial-transit layers: %v", roles)
|
||||
}
|
||||
if paletteStyle(eventPlanetTransit, "transit-partial").FillColor == "" {
|
||||
tester.Fatal("missing partial-transit fill")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user