fast-sweeping 0.1.0

Unsigned Distance Fields using Fast Sweeping Method
Documentation
use fast_sweeping::{
    DistanceField, DistanceFieldAlgorithm, Grid, NaiveFastSweepingMethod, Obstacles, SavePgm,
};
use std::path::PathBuf;

fn main() {
    let mut obstacles = Obstacles::new(640, 480);

    for y in 100..200 {
        obstacles.set_at(100, y, true);
    }

    for x in 100..400 {
        obstacles.set_at(x, 200, true);
    }

    for x in 100..200 {
        obstacles.set_at(400 + x, 200 + x, true);
    }

    let mut distance_field = DistanceField::from(&obstacles);

    println!("Sweeping ...");
    let naive = NaiveFastSweepingMethod::new(0.1, 5);
    naive.calculate_distance_field(&mut distance_field, &obstacles);

    println!("Saving distance field to PGM ...");
    distance_field
        .save_pgm(&PathBuf::from("test-distances.pgm"))
        .unwrap();

    println!("Saving obstacles to PGM ...");
    obstacles
        .save_pgm(&PathBuf::from("test-obstacles.pgm"))
        .unwrap();
}