#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum EuropaZone {
    ChaosTerrain,
    LinaeRegion,
    SmoothPlains,
    ImpactSite,
    RidgedPlains,
}

#[derive(Debug, Clone, Copy, PartialEq)]
pub struct SurfaceZone {
    pub zone: EuropaZone,
    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() < 15.0 && longitude_deg.abs() < 30.0 {
        SurfaceZone {
            zone: EuropaZone::ChaosTerrain,
            mean_albedo: 0.55,
            regolith_depth_m: 2.0,
        }
    } else if latitude_deg.abs() < 40.0 {
        SurfaceZone {
            zone: EuropaZone::LinaeRegion,
            mean_albedo: 0.60,
            regolith_depth_m: 3.0,
        }
    } else if longitude_deg.abs() > 120.0 {
        SurfaceZone {
            zone: EuropaZone::RidgedPlains,
            mean_albedo: 0.65,
            regolith_depth_m: 4.0,
        }
    } else if latitude_deg.abs() > 60.0 {
        SurfaceZone {
            zone: EuropaZone::ImpactSite,
            mean_albedo: 0.70,
            regolith_depth_m: 5.0,
        }
    } else {
        SurfaceZone {
            zone: EuropaZone::SmoothPlains,
            mean_albedo: 0.67,
            regolith_depth_m: 3.5,
        }
    }
}
