add SI prefixes to altitude and pressure

This commit is contained in:
yuni 2024-11-27 22:56:19 +01:00
parent 08d7265905
commit 0a7f6ae702
2 changed files with 19 additions and 3 deletions

View file

@ -878,10 +878,10 @@ fn update_speedometer(
// Atmospheric conditions
let mut atmo = String::new();
if let Some(val) = settings.atmo_altitude {
atmo += format!("Altitude: {val:.6}\n").as_str();
atmo += format!("Altitude: {}m\n", nature::readable_si(val as f64)).as_str();
}
if let Some(val) = settings.atmo_pressure {
atmo += format!("Pressure: {val:.6}\n").as_str();
atmo += format!("Pressure: {}bar\n", nature::readable_si(val as f64)).as_str();
}
speed_text.sections[0].value = atmo;
@ -897,7 +897,8 @@ fn update_speedometer(
};
// Velocity relative to target
speed_text.sections[2].value = if let Ok(target_v) = q_target.get_single() { let delta_v = (target_v.0 - cam_v.0).length();
speed_text.sections[2].value = if let Ok(target_v) = q_target.get_single() {
let delta_v = (target_v.0 - cam_v.0).length();
if delta_v > 0.0001 {
format!("Δv {}\n", nature::readable_speed(delta_v))
} else {

View file

@ -155,6 +155,21 @@ pub fn readable_speed(speed: f64) -> String {
}
}
pub fn readable_si(value: f64) -> String {
if value > 1e10 {
return format!("{:.3} G", value / 1e9);
} else if value > 1e7 {
return format!("{:.3} M", value / 1e6);
} else if value > 1e4 {
return format!("{:.3} k", value / 1e3);
} else if value < 1e-2 {
return format!("{:.3} m", value * 1e3);
} else if value < 1e-5 {
return format!("{:.3} µ", value * 1e3);
}
return format!("{:.3} ", value);
}
pub fn lorentz_factor(speed: f64) -> f64 {
(1.0 - (speed.powf(2.0) / C.powf(2.0))).powf(-0.5)
}