fast_sweeping/
lib.rs

1mod distance_field;
2mod fast_sweeping;
3mod obstacles;
4
5use std::path::PathBuf;
6
7pub use crate::distance_field::DistanceField;
8pub use crate::fast_sweeping::NaiveFastSweepingMethod;
9pub use crate::obstacles::Obstacles;
10
11pub trait DistanceFieldAlgorithm {
12    fn calculate_distance_field(&self, distance_field: &mut DistanceField, obstacles: &Obstacles);
13}
14
15pub trait Grid {
16    type Item;
17
18    fn get_at(&self, x: usize, y: usize) -> &Self::Item;
19    fn set_at(&mut self, x: usize, y: usize, value: Self::Item);
20
21    /// Returns the specified row and the row below it.
22    fn get_rows_mut(&mut self, y: usize) -> (&mut [Self::Item], &mut [Self::Item]);
23
24    fn iter(&self) -> std::slice::Iter<'_, Self::Item>;
25    fn iter_mut(&mut self) -> std::slice::IterMut<'_, Self::Item>;
26}
27
28pub trait SavePgm {
29    fn save_pgm(&self, file_name: &PathBuf) -> std::io::Result<()>;
30}
31
32#[inline(always)]
33fn min3(a: f32, b: f32, c: f32) -> f32 {
34    a.min(b).min(c)
35}