Curve

Trait Curve 

Source
pub trait Curve {
    type Value;
    type Velocity;

    // Required methods
    fn approximate(
        &self,
        time: f32,
    ) -> Approximation<Self::Value, Self::Velocity>;
    fn target(&self) -> Self::Value;
}
Expand description

Curves provide the mathematical foundation for animation.

Within Yoyo, we restrict curves to those with a closed-form approximation / analytical solution and similarly, a closed-form derivative that we can use to compute velocity. Typically, especially for springs, animation frameworks use numerical integrations, like RK4. We want closed-form solutions because they let us pause and resume animations at arbitrary time steps.

Required Associated Types§

Source

type Value

This is the type that this curve operates on.

Source

type Velocity

This is the type of velocity that this curve works with.

Required Methods§

Source

fn approximate(&self, time: f32) -> Approximation<Self::Value, Self::Velocity>

This should return a single approximation for the given time.

Source

fn target(&self) -> Self::Value

This should return the target value of this curve.

Implementors§

Source§

impl<T> Curve for Bezier<T>
where T: Float,

Source§

impl<T> Curve for Decay<T>
where T: Float,

Source§

impl<T> Curve for Delay<T>
where T: Float,

Source§

impl<T> Curve for Spring<T>
where T: Float,