/** * 计算修正后的太阳的地心视黄经 * * @param jd * 儒略日 * @return 修正后的地心黄经(rad) */ func GetEarthEclipticLongitudeForSun(jd float64) float64 { // 计算地球的日心黄经 l := GetSunEclipticLongitudeForEarth(jd) // 计算地球的日心黄纬 b := GetSunEclipticLatitudeForEarth(jd) // 修正章动 // l += GetLongitudeNutation(jd) // 转换到fk5 l += Vsop2Fk5LongitudeCorrection(l, b, jd) // 转换成太阳的地心黄经 l = mathutil.Mod2Pi(l + math.Pi) // 计算光行差 // 计算日地距离 r := GetSunRadiusForEarth(jd) // 太阳到地球的光行差参数 LIGHT_ABERRATION := mathutil.SecondsToRadians(20.4898) l -= LIGHT_ABERRATION / r return l }
// 也许没什么用 func Vsop2Fk5LatitudeCorrection(l float64, b float64, jd float64) float64 { t := calendarutil.GetJulianCentury(jd) lp := l - mathutil.ToRadians(1.397)*t - mathutil.ToRadians(0.00031)*t*t return mathutil.SecondsToRadians(0.03916) * (math.Cos(lp) - math.Sin(lp)) }