ioss 0.0.3

Io celestial simulation crate for the MilkyWay SolarSystem workspace
Documentation
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum IoZone {
    VolcanicPlains,
    SulfurFlows,
    MountainRange,
    PolarFrost,
    LavaLake,
}

#[derive(Debug, Clone, Copy, PartialEq)]
pub struct SurfaceZone {
    pub zone: IoZone,
    pub mean_albedo: f64,
    pub regolith_depth_m: f64,
}

pub fn zone_from_lat_lon(latitude_deg: f64, longitude_deg: f64) -> SurfaceZone {
    if latitude_deg.abs() > 60.0 {
        SurfaceZone {
            zone: IoZone::PolarFrost,
            mean_albedo: 0.75,
            regolith_depth_m: 2.0,
        }
    } else if (250.0..=320.0).contains(&longitude_deg) && (5.0..=25.0).contains(&latitude_deg) {
        SurfaceZone {
            zone: IoZone::LavaLake,
            mean_albedo: 0.10,
            regolith_depth_m: 0.5,
        }
    } else if (250.0..=320.0).contains(&longitude_deg) {
        SurfaceZone {
            zone: IoZone::VolcanicPlains,
            mean_albedo: 0.30,
            regolith_depth_m: 3.0,
        }
    } else if (-30.0..=-15.0).contains(&latitude_deg) && (110.0..=150.0).contains(&longitude_deg) {
        SurfaceZone {
            zone: IoZone::MountainRange,
            mean_albedo: 0.40,
            regolith_depth_m: 5.0,
        }
    } else {
        SurfaceZone {
            zone: IoZone::SulfurFlows,
            mean_albedo: 0.63,
            regolith_depth_m: 6.0,
        }
    }
}