eazy_data/easing/polynomial/
quadratic.rs1use crate::easing::Curve;
10
11#[derive(Debug)]
22pub struct InQuadratic;
23
24impl Curve for InQuadratic {
25 #[inline(always)]
26 fn y(&self, p: f32) -> f32 {
27 p * p
28 }
29}
30
31#[test]
32fn test_in_quadratic() {
33 let p = InQuadratic.y(1.0);
34
35 assert_eq!(p, 1.0);
36}
37
38#[derive(Debug)]
49pub struct OutQuadratic;
50
51impl Curve for OutQuadratic {
52 #[inline(always)]
53 fn y(&self, p: f32) -> f32 {
54 let m = p - 1.0;
55
56 1.0 - m * m
57 }
58}
59
60#[test]
61fn test_out_quadratic() {
62 let p = OutQuadratic.y(1.0);
63
64 assert_eq!(p, 1.0);
65}
66
67#[derive(Debug)]
78pub struct InOutQuadratic;
79
80impl Curve for InOutQuadratic {
81 #[inline(always)]
82 fn y(&self, p: f32) -> f32 {
83 let m = p - 1.0;
84 let t = p * 2.0;
85
86 if t < 1.0 {
87 p * t
88 } else {
89 1.0 - m * m * 2.0
90 }
91 }
92}
93
94#[test]
95fn test_in_out_quadratic() {
96 let p = InOutQuadratic.y(1.0);
97
98 assert_eq!(p, 1.0);
99}