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"}]
endDocumentation 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;
current_time- the elapsed "time" in the loop, ie if yourdurationis ten, and you want to find the position for half way through the duration then you set it to5. Units are arbitrary (steps, ms, whatever).start_value- the initial value or position atcurrent_timeof zero.change_in_value- how much thestart_valueshould be changed by the end of the animation, ie the expected final value minus thestart_value.duration- the duration of the animation, in the same units ascurrent_time.
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.