2 releases
new 0.1.1 | Jan 13, 2025 |
---|---|
0.1.0 | Jan 11, 2025 |
#1268 in Algorithms
44 downloads per month
26KB
368 lines
easing-fixed
: fixed-point easing iterators for rust
This is a fork of https://github.com/joliv/easing which uses fixed-point math instead. no_std
compatible.
Development
The test cases define an acceptable error margin (ERROR_MARGIN_FAC
) and every test case stepping outside of that threshold gets its "is" and "ought" data written to jupyter-tests/<name of test>-{is,ought}.json
. In there, you can use the supplied tests.ipynb
notebook for a visualized representation of the failure:
The JSON files get cleared out by build.rs
. Sadly on every build, not just during tests, as cfg-gating for test
is not possible there.
(mostly preserved) original README below
Rust iterators are fantastic—why not use them for easing? Use like so:
use easing_fixed as easing;
let begin: f64 = 0;
let end: f64 = 1000;
let steps: u64 = 10;
// In a for loop!
for x in easing::sin_in(begin, end, steps) {
println!("Woo, I'm at x={}!", x);
}
// Mapping!
fn move_to(x: f64) {
println!("Moving on up to {}", x);
}
easing::cubic_out(begin, end, steps).map(move_to);
// And other iterator stuff!
let xs: Vec<f64> = easing::exp_inout(begin, end, steps).collect(); // why would you do this
Available iterators are currently:
function | in | out | in and out |
---|---|---|---|
linear | linear |
linear |
linear |
quadratic | quad_in |
quad_out |
quad_inout |
cubic | cubic_in |
cubic_out |
cubic_inout |
quartic | quartic_in |
quartic_out |
quartic_inout |
sinusoidal | sin_in |
sin_out |
sin_inout |
exponential | exp_in |
exp_out |
exp_inout |
Easing functions taken from warrenm's AHEasing.
Dependencies
~4MB
~69K SLoC