Files
astro/eclipse/svg/doc.go
T
b612 ccf5880269 feat: 完善水星与金星全球凌日搜索及制图导出
- 基于平均下合周期与节点相位预筛候选,减少无效星历计算;跳过无法求解的单个会合周期,避免有限覆盖星历导致搜索提前终止
- 引入影轴 γ、半影半径及地球尺度几何判定,结合站心可见性识别地心无接触、仅部分地区可见的掠凌
- 添加金星 243 年、水星 46 年周期族编号,并明确编号适用范围及未分配时的零值语义
- 为 SVG、GeoJSON 和 KML 增加站心部分凌日可见区,适配接触等时线、几何元数据、图层样式及取景;为地心无接触凌日事件增加正射图,按可见区球面面积加权居中
2026-10-20 22:35:39 +08:00

71 lines
3.7 KiB
Go

// Package svg 生成日食、月食与水星、金星凌日的 SVG 图件。
//
// 可降级的图层用 data-source 标注实际几何来源,取值词表如下;没有降级分支的图层不带该属性。
//
// partial-band-union 偏食可见域填充:权威边界线材与瞬时足迹求并集
// sampled-footprint-sweep 偏食可见域填充:逐瞬时足迹扫掠(并集不可用时的降级)
// partial-band-contours 偏食可见域边界线
// rise-set-phase-lines 初亏、食甚、复圆的日升日落线
// magnitude-contours 地方最大食分等值线
// greatest-time-isochrones 食甚时刻等时线
// besselian-critical-envelope 中心食带:Bessel 临界包络
// paired-limit-chords 中心食带:南北限界弦带(包络不可用时的降级)
// sampled-open-sweep 中心食带:采样扫掠(前两者都不可用时的降级)
// central-path-limits 中心线与南北限界线
// penumbral-outlines 瞬时半影轮廓
// central-shadow-outlines 瞬时本影、反本影轮廓
// p1-p4-visibility-regions 月食可见性分区
// p1-p4-horizon-boundaries 月食 P1、P4 地平边界
// c1-c4-visibility-regions 凌日可见性分区
// c1-c4-horizon-boundaries 凌日 C1、C4 视地平边界
// transit-contact-isochrones 凌日站心接触等时线
// topocentric-transit-visibility 地心无接触时按站心求得的部分凌日可见区
//
// Package svg renders solar-eclipse, lunar-eclipse and Mercury/Venus transit SVG charts. Degradable layers tag the geometry
// source they actually used in data-source, using exactly the values above.
package svg
// data-source 词表,见包注释。
const (
eclipseMapSourcePartialBandUnion = "partial-band-union"
eclipseMapSourceSampledFootprintSweep = "sampled-footprint-sweep"
eclipseMapSourcePartialBandContours = "partial-band-contours"
eclipseMapSourceRiseSetPhaseLines = "rise-set-phase-lines"
eclipseMapSourceMagnitudeContours = "magnitude-contours"
eclipseMapSourceGreatestTimeIsochrones = "greatest-time-isochrones"
eclipseMapSourceBesselianEnvelope = "besselian-critical-envelope"
eclipseMapSourcePairedLimitChords = "paired-limit-chords"
eclipseMapSourceSampledOpenSweep = "sampled-open-sweep"
eclipseMapSourceCentralPathLimits = "central-path-limits"
eclipseMapSourcePenumbralOutlines = "penumbral-outlines"
eclipseMapSourceCentralShadowOutlines = "central-shadow-outlines"
eclipseMapSourceLunarVisibilityRegions = "p1-p4-visibility-regions"
eclipseMapSourceLunarHorizonBoundaries = "p1-p4-horizon-boundaries"
eclipseMapSourceTransitVisibilityRegions = "c1-c4-visibility-regions"
eclipseMapSourceTransitHorizonBoundaries = "c1-c4-horizon-boundaries"
eclipseMapSourceTransitContactIsochrones = "transit-contact-isochrones"
eclipseMapSourceTransitPartialVisibility = "topocentric-transit-visibility"
)
// eclipseMapDataSources 是全部合法取值,测试用它封闭词表。
var eclipseMapDataSources = []string{
eclipseMapSourcePartialBandUnion,
eclipseMapSourceSampledFootprintSweep,
eclipseMapSourcePartialBandContours,
eclipseMapSourceRiseSetPhaseLines,
eclipseMapSourceMagnitudeContours,
eclipseMapSourceGreatestTimeIsochrones,
eclipseMapSourceBesselianEnvelope,
eclipseMapSourcePairedLimitChords,
eclipseMapSourceSampledOpenSweep,
eclipseMapSourceCentralPathLimits,
eclipseMapSourcePenumbralOutlines,
eclipseMapSourceCentralShadowOutlines,
eclipseMapSourceLunarVisibilityRegions,
eclipseMapSourceLunarHorizonBoundaries,
eclipseMapSourceTransitVisibilityRegions,
eclipseMapSourceTransitHorizonBoundaries,
eclipseMapSourceTransitContactIsochrones,
eclipseMapSourceTransitPartialVisibility,
}