feat: 完善日月食与月掩几何链路并扩展历法接口
- 新增日月食中心带、偏食带、阴影足迹、等时线、食分线及升落边界计算,支持极区与混合食拓扑 - 新增日食单时刻阴影求解器、站心状态查询、批量采样和 ΔT 覆盖接口 - 重构恒星与行星月掩路径,补充有限盘面接触、站心修正、掩带宽度、极区投影及升落边界 - 扩展 SVG 与 GeoJSON 输出,支持详细面板、全球/极区/地球投影、边界闭合、时间标记和拓扑签名 - 扩展日月食候选搜索、局地搜索、沙罗序列预计算与范围外推,补充系列锚点和成员一致性校验 - 补齐古历纪年、儒略历独有闰日、多公历候选、历法改革跨日及精确日期运算接口 - 优化 ΔT、章动、恒星时、月球地平线、事件根搜索和本地星历缓存,降低重复计算开销并提升边界稳定
This commit is contained in:
+17
-3
@@ -77,7 +77,8 @@ func MeanSiderealTime1982(jd float64) float64 {
|
||||
// ApparentSiderealTime1982 视恒星时,计算章动
|
||||
func ApparentSiderealTime1982(jd float64) float64 {
|
||||
tmp := MeanSiderealTime1982(jd)
|
||||
return tmp + Nutation2000Bi(jd)*Cos(TrueObliquity(jd))/15
|
||||
dpsi, deps := Nutation2000B(jd)
|
||||
return tmp + dpsi*math.Cos((Obliquity1980(jd)+deps)*math.Pi/180)/15
|
||||
}
|
||||
|
||||
// EarthRotationAngle 计算地球自转角 (ERA)
|
||||
@@ -115,10 +116,23 @@ func MeanSiderealTime2006(jd_ut1 float64) float64 {
|
||||
return gmst * deg / 15
|
||||
}
|
||||
|
||||
// ApparentSiderealTime2006 视恒星时,计算章动
|
||||
// ApparentSiderealTime2006 视恒星时,计算章动。
|
||||
// 一次求值只要一份 IAU2000B 章动(黄经与交角在同一次展开里同时得到),并走有界记忆表,
|
||||
// 避免月掩路径里的重复求值;ΔT 覆盖会使记忆表按世代失效。见 sidereal_memo.go。
|
||||
// ApparentSiderealTime2006 computes apparent sidereal time. One evaluation needs only a single
|
||||
// IAU2000B nutation expansion (longitude and obliquity come out of the same series) and is
|
||||
// memoized so repeated occultation-path queries do not rerun it; a ΔT override invalidates the
|
||||
// memo by generation. See sidereal_memo.go.
|
||||
func ApparentSiderealTime2006(jd float64) float64 {
|
||||
if value, ok := siderealMemoLoad(jd); ok {
|
||||
return value
|
||||
}
|
||||
generation := siderealMemoGeneration()
|
||||
tmp := MeanSiderealTime2006(jd)
|
||||
return tmp + Nutation2000Bi(jd)*Cos(TrueObliquity(jd))/15
|
||||
dpsi, deps := Nutation2000B(jd)
|
||||
value := tmp + dpsi*math.Cos((Obliquity1980(jd)+deps)*math.Pi/180)/15
|
||||
siderealMemoStore(jd, value, generation)
|
||||
return value
|
||||
}
|
||||
|
||||
func StarRiseTime(jde, ra, dec, lon, lat, height, timezone float64, aero bool) (float64, error) {
|
||||
|
||||
Reference in New Issue
Block a user