pub struct SurfaceHazeEndpoint {
pub air_density_kg_m3: f64,
pub visibility_km: f64,
pub haze_color_linear: [f64; 3],
pub temperature_k: f64,
}
impl SurfaceHazeEndpoint {
pub fn venus_default() -> Self {
Self {
air_density_kg_m3: crate::SURFACE_AIR_DENSITY,
visibility_km: 1.0,
haze_color_linear: [0.95, 0.80, 0.50],
temperature_k: crate::MEAN_TEMPERATURE_K,
}
}
pub fn extinction_coefficient_per_km(&self) -> f64 {
3.912 / self.visibility_km
}
pub fn transmittance_at_range(&self, range_km: f64) -> f64 {
(-self.extinction_coefficient_per_km() * range_km).exp()
}
}
pub fn near_surface_visibility_km() -> f64 {
1.0
}