use crate::time::JulianDate;
use qtty::Degrees;
#[derive(Debug, Clone, Copy)]
pub struct IauRotationParams {
pub alpha0_deg: Degrees,
pub alpha0_rate: Degrees,
pub delta0_deg: Degrees,
pub delta0_rate: Degrees,
pub w0_deg: Degrees,
pub w_rate: Degrees,
}
impl IauRotationParams {
#[inline]
pub fn alpha0(&self, jd: JulianDate) -> Degrees {
let t_centuries = jd.julian_centuries().value();
self.alpha0_deg + self.alpha0_rate * t_centuries
}
#[inline]
pub fn delta0(&self, jd: JulianDate) -> Degrees {
let t_centuries = jd.julian_centuries().value();
self.delta0_deg + self.delta0_rate * t_centuries
}
#[inline]
pub fn w(&self, jd: JulianDate) -> Degrees {
let d_days = (jd - JulianDate::J2000).value();
self.w0_deg + self.w_rate * d_days
}
}
pub trait HasIauRotation {
const ROTATION: IauRotationParams;
}