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}