Expand description
This library implements the basic physics-based primitives we use in Yoyo. The most important task of this library is to support continuous animation.
Continuous animation is when a running, uncompleted animation with a particular value and velocity is replaced with a new animation that starts from that same value and velocity so that it is seemingly one and the same animation to the user.
§Example
use yoyo_physics::Curve;
use yoyo_physics::bezier::Bezier;
use yoyo_physics::spring::Spring;
// Start a Bezier with strong easing.
let bezier = Bezier {
from_value: 0.0,
to_value: 320.0,
duration: 1.0,
control_points: [(0.95, 0.05), (0.05, 0.95)],
};
// Pause the Bezier midway.
let sample = bezier.approximate(0.5);
// Start a spring from the Bezier's state.
let spring = Spring {
from_value: sample.value,
to_value: 320.0,
initial_velocity: sample.velocity,
..Default::default()
};
// Verify that the spring's starting velocity equals the Bezier's midway
// velocity.
assert_eq!(spring.approximate(0.0).velocity, sample.velocity);Re-exports§
pub use threshold::Threshold;
Modules§
- bezier
- Cubic Bezier curves (incl. root finding) suitable for animation.
- decay
- Deceleration towards a target.
- delay
- Instantaneous movement after a delay.
- spring
- Damped harmonic oscillator (DHO) suitable for animation.
- threshold
- Threshold traits and types that are used to stop a pending animation.
Structs§
- Approximation
- Approximation of the value (y-coordinate) and velocity of a curve at the given (unnormalized) time (x-coordinate).
- Keyed
Iter - Iterator that yields both the timestamps of each approximation as the approximation itself.
- Sampler
- Sampling iterator over curves that generates approximations at a fixed sample rate.
Traits§
- Curve
- Curves provide the mathematical foundation for animation.