Ease

A generic implementation of standard easing functions for use in animation or robotics.

For examples of "standard" easing algorithms (in this case used in CSS animations) take a look at easings.net

Installation

Available in Hex, the package can be installed by adding ease to your list of dependencies in mix.exs:

def deps do
  [{:ease, "~> 0.1.0"}]
end

Documentation can be found at https://hexdocs.pm/ease.

Usage

You can use an easing function directly from within your own loop, provided that you can supply the four arguments needed;

Given a quadratic ease-in of 1..10, over 1 unit of time, where would we be when half-way through:

iex> Ease.ease_in_quad(0.5, 1, 10, 1)
3.25

Plot the {x, y} positions for a circular ease-in:

iex> ys = 1..10
...> xs = Ease.map(ys, :ease_in_circular)
...> Enum.zip(xs, ys)
[{1.0, 1}, {1.0557280900008417, 2}, {1.2250356126078779, 3},
 {1.5147186257614298, 4}, {1.9377422517014504, 5}, {2.5166852264521173, 6},
 {3.291796067500631, 7}, {4.34314575050762, 8}, {5.876894374382339, 9},
 {10.0, 10}]

License

Source code is licensed under the terms of the MIT license, the text of which is included in the LICENSE file in this distribution.