pub const J2000_JD: f64 = 2_451_545.0;
pub const MERCURY_PERIHELION_J2000_JD: f64 = 2_451_590.257;
pub fn julian_centuries(jd: f64) -> f64 {
(jd - J2000_JD) / 36525.0
}
pub fn mean_longitude_deg(t: f64) -> f64 {
(252.250_906_25 + 149_472.674_635_0 * t) % 360.0
}
pub fn mean_anomaly_deg(t: f64) -> f64 {
(174.795_388_5 + 149_472.515_935_0 * t) % 360.0
}
pub fn sim_seconds_to_jd(start_jd: f64, elapsed_s: f64) -> f64 {
start_jd + elapsed_s / 86400.0
}
pub fn gmst_hours(jd: f64) -> f64 {
let t = julian_centuries(jd);
let gmst = 280.460_618_37 + 360.985_647_366_29 * (jd - J2000_JD) + 0.000_387_933 * t * t;
(gmst % 360.0) / 15.0
}