#line #drawing #points #iterator-based #algorithm #integer-only

bresenham

A fast, iterator-based integer-only implementation of Bresenham's line algorithm

2 releases

Uses old Rust 2015

0.1.1 Aug 14, 2016
0.1.0 Aug 14, 2016

#77 in Rendering engine

Download history 213/week @ 2024-10-02 163/week @ 2024-10-09 243/week @ 2024-10-16 373/week @ 2024-10-23 250/week @ 2024-10-30 208/week @ 2024-11-06 144/week @ 2024-11-13 264/week @ 2024-11-20 286/week @ 2024-11-27 449/week @ 2024-12-04 591/week @ 2024-12-11 386/week @ 2024-12-18 135/week @ 2024-12-25 231/week @ 2025-01-01 475/week @ 2025-01-08 751/week @ 2025-01-15

1,654 downloads per month
Used in 7 crates (6 directly)

MIT license

6KB
131 lines

bresenham-rs

Implements Bresenham's line drawing algorithm in Rust using an iterator over all points in the line. Most, if not all overhead should evaporate when inlined by the compiler.

Example use:

for (x, y) in Bresenham::new((0, 1), (6, 4)) {
    println!("{}, {}", x, y);
}

Will print:

(0, 1)
(1, 1)
(2, 2)
(3, 2)
(4, 3)
(5, 3)

lib.rs:

Iterator-based Bresenham's line drawing algorithm

[Bresenham's line drawing algorithm] (https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm) is fast algorithm to draw a line between two points. This crate implements the fast integer variant, using an iterator-based appraoch for flexibility. It calculates coordinates without knowing anything about drawing methods or surfaces.

Example:

extern crate bresenham;
use bresenham::Bresenham;

fn main() {
    for (x, y) in Bresenham::new((0, 1), (6, 4)) {
        println!("{}, {}", x, y);
    }
}

Will print:

(0, 1)
(1, 1)
(2, 2)
(3, 2)
(4, 3)
(5, 3)

No runtime deps