eazy_data/interpolation/rational/
quadratic.rs1use crate::easing::Curve;
4
5use libm::sqrtf;
6
7#[derive(Debug)]
9pub struct InRationalQuadratic;
10
11impl Curve for InRationalQuadratic {
12 #[inline(always)]
13 fn y(&self, p: f32) -> f32 {
14 p * p / (2.0 * p * p - 2.0 * p + 1.0)
15 }
16}
17
18#[test]
19fn test_in_rational_quadratic() {
20 let p = InRationalQuadratic.y(1.0);
21
22 assert_eq!(p, 1.0);
23}
24
25#[derive(Debug)]
27pub struct OutRationalQuadratic;
28
29impl Curve for OutRationalQuadratic {
30 #[inline(always)]
31 fn y(&self, p: f32) -> f32 {
32 (p - sqrtf(p * (1.0 - p))) / (2.0 * p - 1.0)
33 }
34}
35
36#[test]
37fn test_out_rational_quadratic() {
38 let p = OutRationalQuadratic.y(1.0);
39
40 assert_eq!(p, 1.0);
41}