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::Line::Lerp - 2D grid line drawing via linear interpolation

SYNOPSIS

    use Algorithm::Line::Lerp 'line';

    my $points = line( [0,0], [2,11] );
    for my $p (@$points) { ...

DESCRIPTION

This module offers both Bresenham and linear interpolation line drawing algorithms. See eg/bench for a comparison.

Caveats of line include potential floating point portability problems or "aesthetic issues" depending on how lround in line behaves. bline is probably more predictable, but may be slower.

FUNCTIONS

These are not exported by default.

bline p1 p2

Same interface as line but uses the traditional Bresenham algorithm.

Since version 0.02.

line p1 p2

Given two points (array references of x, y values) returns an array reference of the points between the two points using linear interpolation. This may simply be a copy of point p1 (when p1 and p2 are equal) or a longer list of points.

SEE ALSO

Algorithm::Line::Bresenham - pure perl, plus support for other shapes.

Game::Xomb has a custom Bresenham implementation that deals with various gameplay elements.

https://www.redblobgames.com/grids/line-drawing.html

AUTHOR

Jeremy Mates, <jmates@thrig.me>

COPYRIGHT AND LICENSE

Copyright 2023 Jeremy Mates

This program is distributed under the (Revised) BSD License: https://opensource.org/licenses/BSD-3-Clause