Exemplo n.º 1
0
/**
 * 计算修正后的太阳的地心视黄经
 *
 * @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
}
Exemplo n.º 2
0
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)
}