Пример #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
}
Пример #2
0
// 也许没什么用
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))
}