#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum TitanZone {
    MethaneSea,
    DuneField,
    IcyHighland,
    CryovolcanicPlain,
    PolarLake,
}

#[derive(Debug, Clone, Copy, PartialEq)]
pub struct SurfaceZone {
    pub zone: TitanZone,
    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 > 55.0 && (280.0..=340.0).contains(&longitude_deg) {
        SurfaceZone {
            zone: TitanZone::MethaneSea,
            mean_albedo: 0.05,
            regolith_depth_m: 0.0,
        }
    } else if latitude_deg > 55.0 {
        SurfaceZone {
            zone: TitanZone::PolarLake,
            mean_albedo: 0.08,
            regolith_depth_m: 1.0,
        }
    } else if latitude_deg.abs() < 30.0 {
        SurfaceZone {
            zone: TitanZone::DuneField,
            mean_albedo: 0.15,
            regolith_depth_m: 50.0,
        }
    } else if longitude_deg > 200.0 {
        SurfaceZone {
            zone: TitanZone::CryovolcanicPlain,
            mean_albedo: 0.20,
            regolith_depth_m: 5.0,
        }
    } else {
        SurfaceZone {
            zone: TitanZone::IcyHighland,
            mean_albedo: 0.25,
            regolith_depth_m: 8.0,
        }
    }
}
