feat: 完善日月食与月掩几何链路并扩展历法接口

- 新增日月食中心带、偏食带、阴影足迹、等时线、食分线及升落边界计算,支持极区与混合食拓扑
- 新增日食单时刻阴影求解器、站心状态查询、批量采样和 ΔT 覆盖接口
- 重构恒星与行星月掩路径,补充有限盘面接触、站心修正、掩带宽度、极区投影及升落边界
- 扩展 SVG 与 GeoJSON 输出,支持详细面板、全球/极区/地球投影、边界闭合、时间标记和拓扑签名
- 扩展日月食候选搜索、局地搜索、沙罗序列预计算与范围外推,补充系列锚点和成员一致性校验
- 补齐古历纪年、儒略历独有闰日、多公历候选、历法改革跨日及精确日期运算接口
- 优化 ΔT、章动、恒星时、月球地平线、事件根搜索和本地星历缓存,降低重复计算开销并提升边界稳定
This commit is contained in:
2026-09-17 12:27:40 +08:00
parent 9ee2163cc7
commit 2bf8478639
428 changed files with 85981 additions and 7998 deletions
+64 -1
View File
@@ -1,6 +1,10 @@
package moon
import "b612.me/astro/basic"
import (
"time"
"b612.me/astro/basic"
)
// ErrInvalidOccultationInput 表示月掩输入无效。
// ErrInvalidOccultationInput reports invalid lunar-occultation input.
@@ -96,6 +100,16 @@ type OccultationSearchOptions = basic.OccultationSearchOptions
// OccultationPathOptions controls global occultation-path sampling.
type OccultationPathOptions = basic.OccultationPathOptions
// OccultationPathAlgorithm 选择全球月掩路径的优化或原有精确分支。
// OccultationPathAlgorithm selects the optimized or original exact global-path branch.
type OccultationPathAlgorithm = basic.OccultationPathAlgorithm
// 全球月掩路径的两条算法分支取值 / the two global occultation-path algorithm values.
const (
OccultationPathAlgorithmOptimized = basic.OccultationPathAlgorithmOptimized
OccultationPathAlgorithmExact = basic.OccultationPathAlgorithmExact
)
// StarOccultationInfo 描述一次点光源恒星月掩。
// StarOccultationInfo describes one point-source stellar occultation.
type StarOccultationInfo = basic.StarOccultationInfo
@@ -108,10 +122,39 @@ type PlanetOccultationInfo = basic.PlanetOccultationInfo
// OccultationPathPoint is a geographic sample of a global occultation path.
type OccultationPathPoint = basic.OccultationPathPoint
// RiseSetPhase 标识局部月掩阶段。
// RiseSetPhase identifies a local occultation phase.
type RiseSetPhase = basic.RiseSetPhase
// RiseSetDirection 标识月升或月落方向。
// RiseSetDirection identifies moonrise or moonset.
type RiseSetDirection = basic.RiseSetDirection
// 与 basic 同名的阶段与方向常量 / the phase and direction constants re-exported from basic.
const (
RiseSetPhaseStart = basic.RiseSetPhaseStart
RiseSetPhaseGreatest = basic.RiseSetPhaseGreatest
RiseSetPhaseEnd = basic.RiseSetPhaseEnd
RiseSetDirectionRise = basic.RiseSetDirectionRise
RiseSetDirectionSet = basic.RiseSetDirectionSet
)
// OccultationRiseSetCurve 是局部阶段发生在月升或月落时的边界。
// OccultationRiseSetCurve is a boundary where a local phase occurs at moonrise or moonset.
type OccultationRiseSetCurve = basic.OccultationRiseSetCurve
// OccultationGreatestTimeContour 是一个固定地方掩甚时刻的等值线支路集合。
// OccultationGreatestTimeContour contains the continuous branches of one fixed local greatest-occultation time.
type OccultationGreatestTimeContour = basic.OccultationGreatestTimeContour
// StarOccultationPath 包含点光源恒星月掩掩带。
// StarOccultationPath contains a point-source stellar occultation footprint.
type StarOccultationPath = basic.StarOccultationPath
// OccultationFootprint 是一个时刻的可见接触区域。
// OccultationFootprint is one instantaneous visible contact region.
type OccultationFootprint = basic.OccultationFootprint
// PlanetOccultationPath 包含有限盘面行星月掩掩带。
// PlanetOccultationPath contains a finite-disk planetary occultation footprint.
type PlanetOccultationPath = basic.PlanetOccultationPath
@@ -119,3 +162,23 @@ type PlanetOccultationPath = basic.PlanetOccultationPath
// PlanetOccultationFootprint 是一个时刻的可见行星接触区域。
// PlanetOccultationFootprint is one instantaneous visible planetary-contact region.
type PlanetOccultationFootprint = basic.PlanetOccultationFootprint
// StarOccultationInstant 是一个请求时刻的点源恒星月掩可见足迹。
// StarOccultationInstant is the visible point-source footprint at one requested instant.
type StarOccultationInstant = basic.StarOccultationInstant
// PlanetOccultationInstant 是一个请求时刻的行星偏掩和全掩可见足迹。
// PlanetOccultationInstant contains the visible partial and total planetary footprints at one requested instant.
type PlanetOccultationInstant = basic.PlanetOccultationInstant
// StarOccultationFootprintAt 计算指定时刻的精确恒星月掩可见足迹。
// StarOccultationFootprintAt calculates the exact visible stellar-occultation footprint at one instant.
func StarOccultationFootprintAt(at time.Time, star StarCoordinate) (StarOccultationInstant, error) {
return basic.StarOccultationFootprintAt(at, star)
}
// PlanetOccultationFootprintsAt 计算指定时刻的精确行星偏掩和全掩可见足迹。
// PlanetOccultationFootprintsAt calculates the exact visible partial and total planetary footprints at one instant.
func PlanetOccultationFootprintsAt(at time.Time, planet OccultationPlanet) (PlanetOccultationInstant, error) {
return basic.PlanetOccultationFootprintsAt(at, planet)
}