///| Quadratic easing functions

///|
/// Quadratic ease-in function
/// Acceleration from zero velocity, following a quadratic curve
pub fn quad_in(t : Double) -> Double {
  t * t
}

///|
/// Quadratic ease-out function
/// Deceleration to zero velocity, following a quadratic curve
pub fn quad_out(t : Double) -> Double {
  t * (2.0 - t)
}

///|
/// Quadratic ease-in-out function
/// Acceleration until halfway, then deceleration
pub fn quad_in_out(t : Double) -> Double {
  let t2 = t * 2.0
  if t2 <= 1.0 {
    t2 * t2 / 2.0
  } else {
    let t3 = t2 - 1.0
    (t3 * (2.0 - t3) + 1.0) / 2.0
  }
}