///| Circle easing functions

///|
/// Circle ease-in function
/// Acceleration following a circular arc
pub fn circle_in(t : Double) -> Double {
  1.0 - (1.0 - t * t).sqrt()
}

///|
/// Circle ease-out function
/// Deceleration following a circular arc
pub fn circle_out(t : Double) -> Double {
  let t1 = t - 1.0
  (1.0 - t1 * t1).sqrt()
}

///|
/// Circle ease-in-out function
/// Acceleration and deceleration following circular arcs
pub fn circle_in_out(t : Double) -> Double {
  let t2 = t * 2.0
  if t2 <= 1.0 {
    (1.0 - (1.0 - t2 * t2).sqrt()) / 2.0
  } else {
    let t3 = t2 - 2.0
    ((1.0 - t3 * t3).sqrt() + 1.0) / 2.0
  }
}