Files
astro/basic/ephemeris.go
T

36 lines
1.2 KiB
Go
Raw Permalink Normal View History

package basic
import (
"b612.me/astro/internal/ephem"
)
// Instance 显式只读星历实例 / explicit read-only ephemeris instance.
type Instance = ephem.Instance
// EphemerisModel 几何位置所用的星历模型 / ephemeris model behind geometric positions.
type EphemerisModel int
const (
// EphemerisLegacy VSOP87 + ELP2000 截断级数,astro_legacy 构建下为默认 / truncated VSOP87 and ELP2000 series, default under astro_legacy.
EphemerisLegacy EphemerisModel = iota
// EphemerisSemianalytic VSOP2013/TOP2013 + ELP/MPP02 结构、按 DE441 重拟的半解析表 / semi-analytic tables refitted to DE441.
EphemerisSemianalytic
)
// SetEphemerisModel 切换全局星历模型,未知值返回 false / switches the global ephemeris model; unknown values return false.
func SetEphemerisModel(m EphemerisModel) bool {
if m != EphemerisLegacy && m != EphemerisSemianalytic {
return false
}
// 依赖星历的缓存都按 ΔT 世代校验,切换时一并递增。
deltaTFnMu.Lock()
if ephem.SetActive(ephem.Model(m)) {
deltaTGeneration++
}
deltaTFnMu.Unlock()
return true
}
// GetEphemerisModel 当前星历模型 / the active ephemeris model.
func GetEphemerisModel() EphemerisModel { return EphemerisModel(ephem.Active()) }