config | ||
lib | ||
test | ||
.formatter.exs | ||
.gitignore | ||
.gitlab-ci.yml | ||
LICENSE.md | ||
mix.exs | ||
mix.lock | ||
README.md |
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;
current_time
- the elapsed "time" in the loop, ie if yourduration
is 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_time
of zero.change_in_value
- how much thestart_value
should 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.