marss 0.0.3

Mars celestial simulation crate for the MilkyWay SolarSystem workspace
Documentation
pub struct AncientBasin {
    pub name: &'static str,
    pub center_lat_deg: f64,
    pub center_lon_deg: f64,
    pub diameter_km: f64,
    pub floor_depth_m: f64,
}

pub fn major_basins() -> Vec<AncientBasin> {
    vec![
        AncientBasin {
            name: "Hellas Planitia",
            center_lat_deg: -42.7,
            center_lon_deg: 70.0,
            diameter_km: 2_300.0,
            floor_depth_m: -7_152.0,
        },
        AncientBasin {
            name: "Argyre Planitia",
            center_lat_deg: -49.7,
            center_lon_deg: -43.0,
            diameter_km: 1_800.0,
            floor_depth_m: -5_200.0,
        },
        AncientBasin {
            name: "Isidis Planitia",
            center_lat_deg: 12.9,
            center_lon_deg: 87.0,
            diameter_km: 1_500.0,
            floor_depth_m: -3_800.0,
        },
        AncientBasin {
            name: "Utopia Planitia",
            center_lat_deg: 49.7,
            center_lon_deg: 118.0,
            diameter_km: 3_300.0,
            floor_depth_m: -5_000.0,
        },
    ]
}

pub fn subsurface_ice_depth_m(lat_deg: f64) -> f64 {
    let abs_lat = lat_deg.abs();
    if abs_lat > 60.0 {
        0.5
    } else if abs_lat > 30.0 {
        5.0 + (60.0 - abs_lat) * 0.5
    } else {
        20.0 + (30.0 - abs_lat) * 2.0
    }
}

pub fn arabia_shoreline_elevation_m() -> f64 {
    -2_540.0
}

pub fn deuteronilus_shoreline_elevation_m() -> f64 {
    -3_800.0
}