Add trail deposition, diffusion and decay.

This commit is contained in:
mindv0rtex
2021-02-26 20:39:27 -05:00
parent cf35e041dd
commit 51f10723ed
4 changed files with 26 additions and 12 deletions

View File

@@ -32,8 +32,7 @@ impl Blur {
fn boxes_for_gaussian<const N: usize>(sigma: f32) -> ([usize; N]) {
let w_ideal = (12.0 * sigma * sigma / N as f32 + 1.0).sqrt();
let mut w = w_ideal as usize;
w -= 1 - w & 1;
w -= 1 - (w & 1);
let mut m = 0.25 * (N * (w + 3)) as f32;
m -= 3.0 * sigma * sigma / (w + 1) as f32;
let m = m.round() as usize;
@@ -145,4 +144,16 @@ mod tests {
]
)
}
#[test]
fn test_boxes_for_gaussian() {
let boxes = Blur::boxes_for_gaussian::<3>(1.5);
assert_eq!(boxes, [1, 1, 1]);
let boxes = Blur::boxes_for_gaussian::<3>(1.8);
assert_eq!(boxes, [1, 1, 2]);
let boxes = Blur::boxes_for_gaussian::<3>(2.5);
assert_eq!(boxes, [2, 2, 2]);
}
}