#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PhobosZone {
    StickneyBasin,
    LeadingHemisphere,
    TrailingHemisphere,
    GrooveRegion,
    RedUnit,
}

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

pub fn zone_from_lat_lon(latitude_deg: f64, longitude_deg: f64) -> SurfaceZone {
    if (35.0..=65.0).contains(&longitude_deg) && latitude_deg.abs() < 20.0 {
        SurfaceZone {
            zone: PhobosZone::StickneyBasin,
            mean_albedo: 0.075,
            regolith_depth_m: 20.0,
        }
    } else if longitude_deg > 180.0 {
        SurfaceZone {
            zone: PhobosZone::TrailingHemisphere,
            mean_albedo: 0.068,
            regolith_depth_m: 15.0,
        }
    } else if latitude_deg.abs() > 45.0 {
        SurfaceZone {
            zone: PhobosZone::GrooveRegion,
            mean_albedo: 0.070,
            regolith_depth_m: 8.0,
        }
    } else if (80.0..=120.0).contains(&longitude_deg) && latitude_deg.abs() < 15.0 {
        SurfaceZone {
            zone: PhobosZone::RedUnit,
            mean_albedo: 0.060,
            regolith_depth_m: 18.0,
        }
    } else {
        SurfaceZone {
            zone: PhobosZone::LeadingHemisphere,
            mean_albedo: 0.071,
            regolith_depth_m: 12.0,
        }
    }
}
