The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Algorithm::Easing - Calculate eased translations between two positive whole integer values over time

SYNOPSIS

        ## with mediator

        use Algorithm::Easing;
        use Algorithm::Easing::Mediator;
        use Algorithm::Easing::Bounce;

        # this example produces traditional 'bounce' output;

        my $bounce_translation = Algorithm::Easing::Mediator->new(Algorithm::Easing::Mediator::Bounce->new);

        # total time for eased translation as a real positive integer value
        my $d = 2.5;

        # begin
        my $b = 0;

        # change
        my $c = 0;

        # time passed in seconds as a real positive integer between each frame
        my $frame_time = 0.0625;

        my @p = [319,0];

        for(my $t = 0; $t < 2.5; $t += 0.0625) {
            $p[1] = $bounce_translation->ease_out($t,$b,$c,$d)

            # plot
            ...
        }

INTRODUCTION

Commonly used in animation, Penner's easing functions are beautiful translations between two positive whole integer values.

The included easing functions in Algorithm::Easing are :

    Exponential
    Elastic
    Bounce
    Linear
    Cubic
    Quadratic
    Quartonion
    Quintonion
    Sinusoidal
    Backdraft
    Circular

For ease of use, there is an included Mediator class. The Mediator class permits the programmer to select from the spread of easing functions through a single class name.

USAGE

Read of a usage example using the proper mediator :

    ## with mediator

    use Algorithm::Easing;
    use Algorithm::Easing::Mediator;
    use Algorithm::Easing::Bounce;

    # this example produces traditional 'bounce' output;

    my $bounce_translation = Algorithm::Easing::Mediator->new(Algorithm::Easing::Mediator::Bounce->new);

    # total time for eased translation as a real positive integer value
    my $t = 2.5;

    # begin
    my $b = 0;

    # change
    my $c = 0;

    # time passed in seconds as a real positive integer between each frame
    my $frame_time = 0.0625;

    my @p = [319,0];

    for(my $d = 0; $d < 2.5; $d += 0.0625) {
        $p[1] = $bounce_translation->ease_out($t,$b,$c,$d)

        # plot
        ...
    }
        

AUTHOR

Jason McVeigh, <jmcveigh@outlook.com>

COPYRIGHT AND LICENSE

Copyright 2016 by Jason McVeigh

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.