diff --git a/src/hud.rs b/src/hud.rs index f7f9c29..341d281 100644 --- a/src/hud.rs +++ b/src/hud.rs @@ -656,13 +656,13 @@ fn update_speedometer( let speedometer_split = 5_000.0; if let Ok(mut speedometer) = q_speedometer.get_single_mut() { let custom_c = speedometer_split; - let fraction = nature::lorenz_factor_custom_c((custom_c - speed).clamp(0.0, custom_c), custom_c).clamp(0.0, 1.0) as f32; + let fraction = nature::inverse_lorentz_factor_custom_c((custom_c - speed).clamp(0.0, custom_c), custom_c).clamp(0.0, 1.0) as f32; let wid = (fraction * SPEEDOMETER_WIDTH).clamp(0.0, 100.0); speedometer.width = Val::Vw(wid); } if let Ok(mut speedometer2) = q_speedometer2.get_single_mut() { let custom_c = nature::C - speedometer_split; - let fraction = nature::lorenz_factor_custom_c((custom_c - speed + speedometer_split).clamp(0.0, custom_c), custom_c).clamp(0.0, 1.0) as f32; + let fraction = nature::inverse_lorentz_factor_custom_c((custom_c - speed + speedometer_split).clamp(0.0, custom_c), custom_c).clamp(0.0, 1.0) as f32; let wid = (fraction * SPEEDOMETER_WIDTH).clamp(0.0, 100.0); speedometer2.width = Val::Vw(wid); } diff --git a/src/nature.rs b/src/nature.rs index 558879f..576cf0a 100644 --- a/src/nature.rs +++ b/src/nature.rs @@ -138,12 +138,20 @@ pub fn readable_speed(speed: f64) -> String { } } -pub fn lorenz_factor(speed: f64) -> f64 { - (1.0 - (speed.powf(2.0) / C.powf(2.0))).sqrt() +pub fn lorentz_factor(speed: f64) -> f64 { + (1.0 - (speed.powf(2.0) / C.powf(2.0))).powf(-0.5) } -pub fn lorenz_factor_custom_c(speed: f64, c: f64) -> f64 { - (1.0 - (speed.powf(2.0) / c.powf(2.0))).sqrt() +pub fn lorentz_factor_custom_c(speed: f64, c: f64) -> f64 { + (1.0 - (speed.powf(2.0) / c.powf(2.0))).powf(-0.5) +} + +pub fn inverse_lorentz_factor(speed: f64) -> f64 { + (1.0 - (speed.powf(2.0) / C.powf(2.0))).powf(0.5) +} + +pub fn inverse_lorentz_factor_custom_c(speed: f64, c: f64) -> f64 { + (1.0 - (speed.powf(2.0) / c.powf(2.0))).powf(0.5) } pub fn simple_orbital_period(mass: f64, distance: f64) -> f64 {