hexga_math/other/lerp.rs
1use super::*;
2
3// todo : lerp and easing using Time + Dt
4// todo : lerp using itself (for independant coef)
5pub trait Lerpable : Sized
6{
7 /// Restricted between `[0..1]`
8 fn lerp(self, dest : Self, coef : float) -> Self { self.lerp_unchecked(dest, coef.clamp(0., 1.)) }
9 /// Not restricted between `[0..1]`
10 fn lerp_unchecked(self, dest : Self, coef : float) -> Self;
11}
12impl<T> Lerpable for T where T: Mul<float,Output=Self> + Add<Self,Output=Self> + Sized
13{
14 fn lerp_unchecked(self, dest : Self, coef : float) -> Self { self * (1. - coef) + dest * coef }
15}
16