// EclipticAberration returns corrections due to aberration for ecliptic // coordinates of an object. func EclipticAberration(λ, β, jd float64) (Δλ, Δβ float64) { T := base.J2000Century(jd) s, _ := solar.True(T) e := solar.Eccentricity(T) π := perihelion(T) sβ, cβ := math.Sincos(β) ssλ, csλ := math.Sincos(s - λ) sπλ, cπλ := math.Sincos(π - λ) // (23.2) p. 151 Δλ = κ * (e*cπλ - csλ) / cβ Δβ = -κ * sβ * (ssλ - e*sπλ) return }
func ExampleTrue() { // Example 25.a, p. 165. jd := julian.CalendarGregorianToJD(1992, 10, 13) fmt.Printf("JDE: %.1f\n", jd) T := base.J2000Century(jd) fmt.Printf("T: %.9f\n", T) s, _ := solar.True(T) fmt.Printf("☉: %.5f\n", (s * 180 / math.Pi)) // Output: // JDE: 2448908.5 // T: -0.072183436 // ☉: 199.90987 }
// EclipticAberration returns corrections due to aberration for ecliptic // coordinates of an object. func EclipticAberration(λ, β unit.Angle, jd float64) (Δλ, Δβ unit.Angle) { T := base.J2000Century(jd) s, _ := solar.True(T) e := solar.Eccentricity(T) π := perihelion(T) sβ, cβ := β.Sincos() ssλ, csλ := (s - λ).Sincos() sπλ, cπλ := (π - λ).Sincos() // (23.2) p. 151 Δλ = κ.Mul((e*cπλ - csλ) / cβ) Δβ = -κ.Mul(sβ * (ssλ - e*sπλ)) return }
// Aberration returns corrections due to aberration for equatorial // coordinates of an object. func Aberration(α, δ, jd float64) (Δα2, Δδ2 float64) { ε := nutation.MeanObliquity(jd) T := base.J2000Century(jd) s, _ := solar.True(T) e := solar.Eccentricity(T) π := perihelion(T) sα, cα := math.Sincos(α) sδ, cδ := math.Sincos(δ) ss, cs := math.Sincos(s) sπ, cπ := math.Sincos(π) cε := math.Cos(ε) tε := math.Tan(ε) q1 := cα * cε // (23.3) p. 152 Δα2 = κ * (e*(q1*cπ+sα*sπ) - (q1*cs + sα*ss)) / cδ q2 := cε * (tε*cδ - sα*sδ) q3 := cα * sδ Δδ2 = κ * (e*(cπ*q2+sπ*q3) - (cs*q2 + ss*q3)) return }
// Aberration returns corrections due to aberration for equatorial // coordinates of an object. func Aberration(α unit.RA, δ unit.Angle, jd float64) (Δα2 unit.HourAngle, Δδ2 unit.Angle) { ε := nutation.MeanObliquity(jd) T := base.J2000Century(jd) s, _ := solar.True(T) e := solar.Eccentricity(T) π := perihelion(T) sα, cα := α.Sincos() sδ, cδ := δ.Sincos() ss, cs := s.Sincos() sπ, cπ := π.Sincos() cε := ε.Cos() tε := ε.Tan() q1 := cα * cε // (23.3) p. 152 Δα2 = unit.HourAngle(κ.Rad() * (e*(q1*cπ+sα*sπ) - (q1*cs + sα*ss)) / cδ) q2 := cε * (tε*cδ - sα*sδ) q3 := cα * sδ Δδ2 = κ.Mul(e*(cπ*q2+sπ*q3) - (cs*q2 + ss*q3)) return }