ioss 0.0.3

Io celestial simulation crate for the MilkyWay SolarSystem workspace
Documentation
pub const SECONDS_PER_DAY: f64 = 86_400.0;

#[derive(Debug, Clone, Copy, PartialEq)]
pub struct IoDate {
    pub orbit_index: i64,
    pub day_in_orbit: f64,
}

impl IoDate {
    pub fn from_elapsed_days(elapsed_days: f64) -> Self {
        let orbit_length = crate::SYNODIC_PERIOD_S / SECONDS_PER_DAY;
        let orbit_index = (elapsed_days / orbit_length).floor() as i64;
        let day_in_orbit = elapsed_days - orbit_index as f64 * orbit_length;
        Self {
            orbit_index,
            day_in_orbit,
        }
    }
}