/** * 计算修正后的太阳的地心视黄经 * * @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 GetSunEclipticLongitudeForEarth(jd float64) float64 { t := calendarutil.GetJulianThousandYears(jd) L0 := GetEarthL0(t) L1 := GetEarthL1(t) L2 := GetEarthL2(t) L3 := GetEarthL3(t) L4 := GetEarthL4(t) L5 := GetEarthL5(t) L := ((((L5*t+L4)*t+L3)*t+L2)*t+L1)*t + L0 return mathutil.Mod2Pi(L) }