geometry/
snap.rs

1//! Snapping utilities (eg. snap to a grid).
2
3/// Snaps `pos` to the nearest multiple of `grid`.
4pub const fn snap_to_grid(pos: i64, grid: i64) -> i64 {
5    assert!(grid > 0);
6
7    let rem = pos.rem_euclid(grid);
8    assert!(rem >= 0);
9    assert!(rem < grid);
10    if rem <= grid / 2 {
11        pos - rem
12    } else {
13        pos + grid - rem
14    }
15}