Have fun!
This commit is contained in:
parent
dd054e9016
commit
ad107a6910
36
src/bin/flat/float_fun.rs
Normal file
36
src/bin/flat/float_fun.rs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
use glam::FloatExt;
|
||||
|
||||
mod bounds {
|
||||
pub trait Pair<T> {}
|
||||
|
||||
impl<T> Pair<T> for (T, T) {}
|
||||
}
|
||||
|
||||
pub trait FloatExt2<T>: bounds::Pair<T> {
|
||||
fn lerp(self, t: T) -> T;
|
||||
fn inverse_lerp(self, y: T) -> T;
|
||||
}
|
||||
|
||||
impl<F: FloatExt> FloatExt2<F> for (F, F) {
|
||||
fn lerp(self, t: F) -> F { F::lerp(self.0, self.1, t) }
|
||||
fn inverse_lerp(self, y: F) -> F { F::inverse_lerp(self.0, self.1, y) }
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::FloatExt2;
|
||||
|
||||
#[test]
|
||||
fn test_lerp() {
|
||||
assert_eq!((3., 7.).lerp(-0.5), 1.);
|
||||
assert_eq!((3., 7.).lerp(0.0), 3.);
|
||||
assert_eq!((3., 7.).lerp(0.5), 5.);
|
||||
assert_eq!((3., 7.).lerp(1.0), 7.);
|
||||
assert_eq!((3., 7.).lerp(1.5), 9.);
|
||||
assert_eq!((3., 7.).inverse_lerp(1.), -0.5);
|
||||
assert_eq!((3., 7.).inverse_lerp(3.), 0.0);
|
||||
assert_eq!((3., 7.).inverse_lerp(5.), 0.5);
|
||||
assert_eq!((3., 7.).inverse_lerp(7.), 1.0);
|
||||
assert_eq!((3., 7.).inverse_lerp(9.), 1.5);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
use crate::FloatExt2;
|
||||
use crate::float_fun::FloatExt2;
|
||||
|
||||
pub struct LinearLimiter {
|
||||
pub min: f32,
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ use glam::*;
|
|||
|
||||
mod riemann;
|
||||
mod fns;
|
||||
mod float_fun;
|
||||
|
||||
use riemann::{Tens2, Decomp2, Metric, trace_iter};
|
||||
use shape::Shape;
|
||||
|
|
@ -680,13 +681,3 @@ fn test_tube_metric_derivs() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
trait FloatExt2 {
|
||||
fn lerp(&self, t: f32) -> f32;
|
||||
fn inverse_lerp(&self, y: f32) -> f32;
|
||||
}
|
||||
|
||||
impl FloatExt2 for (f32, f32) {
|
||||
fn lerp(&self, t: f32) -> f32 { f32::lerp(self.0, self.1, t) }
|
||||
fn inverse_lerp(&self, y: f32) -> f32 { f32::inverse_lerp(self.0, self.1, y) }
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user