pub fn normalize(v: f64, min: f64, max: f64) -> f32
Normalise v into 0..=1 over [min, max]. Degenerate ranges map to 0.5 (a flat mid-tone) rather than dividing by zero.
v
0..=1
[min, max]
0.5