1use crate::float::FloatExt;
4
5impl FloatExt for f64 {
6 #[inline]
7 fn lerp(self, rhs: Self, t: Self) -> Self {
8 self + (rhs - self) * t
9 }
10
11 #[inline]
12 fn inverse_lerp(a: Self, b: Self, v: Self) -> Self {
13 (v - a) / (b - a)
14 }
15
16 #[inline]
17 fn remap(self, in_start: Self, in_end: Self, out_start: Self, out_end: Self) -> Self {
18 let t = Self::inverse_lerp(in_start, in_end, self);
19 Self::lerp(out_start, out_end, t)
20 }
21
22 #[inline]
23 fn fract_gl(self) -> Self {
24 self - crate::f64::math::floor(self)
25 }
26
27 #[inline]
28 fn step(self, value: Self) -> Self {
29 if value < self {
30 0.0
31 } else {
32 1.0
33 }
34 }
35
36 #[inline]
37 fn saturate(self) -> Self {
38 self.clamp(0.0, 1.0)
39 }
40}