pub struct NutationIAU2000A;Expand description
IAU 2000A nutation calculator.
Computes nutation angles using the full IAU 2000A model with 678 lunisolar terms and 687 planetary terms. The computation follows the MHB2000 formulation with coefficients expressed in microarcseconds.
§Example
use celestial_core::nutation::iau2000a::NutationIAU2000A;
let nut = NutationIAU2000A::new();
// J2000.0 epoch (two-part JD for precision)
let jd1 = 2451545.0;
let jd2 = 0.0;
let result = nut.compute(jd1, jd2).unwrap();
// result.delta_psi: nutation in longitude (radians)
// result.delta_eps: nutation in obliquity (radians)Implementations§
Source§impl NutationIAU2000A
impl NutationIAU2000A
Sourcepub fn compute(&self, jd1: f64, jd2: f64) -> AstroResult<NutationResult>
pub fn compute(&self, jd1: f64, jd2: f64) -> AstroResult<NutationResult>
Computes nutation for the given epoch.
Evaluates both lunisolar and planetary nutation series at the specified Julian Date, returning nutation in longitude (delta_psi) and obliquity (delta_eps) in radians.
§Arguments
jd1- First part of two-part Julian Date (typically the integer day)jd2- Second part of two-part Julian Date (typically the fractional day)
The epoch is computed as jd1 + jd2. The two-part representation preserves
precision when the epoch is far from J2000.0.
§Returns
NutationResult containing:
delta_psi: Nutation in longitude (radians)delta_eps: Nutation in obliquity (radians)
Sourcepub fn compute_lunisolar(&self, args: &[f64; 5], t: f64) -> (f64, f64)
pub fn compute_lunisolar(&self, args: &[f64; 5], t: f64) -> (f64, f64)
Computes the lunisolar nutation contribution.
Evaluates 678 terms of the lunisolar nutation series. Each term is a trigonometric function of a linear combination of the five fundamental arguments of lunisolar motion.
The series has the form:
delta_psi = sum_i (A_i + A'_i * t) * sin(arg_i) + A''_i * cos(arg_i)
delta_eps = sum_i (B_i + B'_i * t) * cos(arg_i) + B''_i * sin(arg_i)where arg_i = n_l * l + n_lp * l' + n_F * F + n_D * D + n_Om * Om and
coefficients are in microarcseconds.
§Arguments
args- Five fundamental arguments in radians: [l, l’, F, D, Om]- l: Moon’s mean anomaly
- l’: Sun’s mean anomaly
- F: Moon’s argument of latitude
- D: Mean elongation of Moon from Sun
- Om: Longitude of Moon’s ascending node
t- Julian centuries from J2000.0 (TT)
§Returns
Tuple of (delta_psi, delta_eps) in radians.
Sourcepub fn compute_planetary(&self, t: f64) -> (f64, f64)
pub fn compute_planetary(&self, t: f64) -> (f64, f64)
Computes the planetary nutation contribution.
Evaluates 687 terms of the planetary nutation series. Each term depends on the mean longitudes of the planets (Mercury through Neptune) plus the general precession in longitude.
The planetary series is smaller in amplitude than the lunisolar series but essential for sub-milliarcsecond accuracy. The largest planetary terms arise from resonances between planetary and lunar orbital periods.
§Arguments
t- Julian centuries from J2000.0 (TT)
§Returns
Tuple of (delta_psi, delta_eps) in radians.
Trait Implementations§
Source§impl Clone for NutationIAU2000A
impl Clone for NutationIAU2000A
Source§fn clone(&self) -> NutationIAU2000A
fn clone(&self) -> NutationIAU2000A
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more