From eff04faee4cbbcf3696a1ba7fe5709c27e2f8512 Mon Sep 17 00:00:00 2001 From: Juergen Stuber Date: Fri, 28 Dec 2018 14:57:41 +0100 Subject: [PATCH] Preset colored noise. --- src/bin/cnoise/main.rs | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/bin/cnoise/main.rs b/src/bin/cnoise/main.rs index 8a0a1f5..9c92213 100644 --- a/src/bin/cnoise/main.rs +++ b/src/bin/cnoise/main.rs @@ -1,7 +1,7 @@ use std::env::args; use std::io::stdout; use std::io::Write; -use std::iter::repeat; +use std::iter::repeat_with; use std::thread::sleep; use std::time::Duration; @@ -21,6 +21,17 @@ fn send(w: &mut T, f: &Frame) -> std::io::Result<()> { w.flush() } +fn pick_color(c0: Color, c1: Color, rng: &mut R) -> Color +where + R: Rng, +{ + if rng.gen::() < 0.5 { + c0.interpolate(c1, rng.gen::().powf(2.0)) + } else { + Color::black() + } +} + fn main() -> std::io::Result<()> { let args = args().collect::>(); eprintln!("executing {}", args[0]); @@ -37,19 +48,17 @@ fn main() -> std::io::Result<()> { let mut rng = thread_rng(); - let mut frame = repeat(repeat(Color::black()).take(x_size).collect::>()) - .take(y_size) - .collect::>(); + let mut frame = repeat_with(|| { + repeat_with(|| pick_color(c0, c1, &mut rng)) + .take(x_size) + .collect::>() + }) + .take(y_size) + .collect::>(); loop { let x = rng.gen_range(0, x_size); let y = rng.gen_range(0, y_size); - let c = { - if rng.gen::() < 0.5 { - c0.interpolate(c1, rng.gen::().powf(2.0)) - } else { - Color::black() - } - }; + let c = pick_color(c0, c1, &mut rng); frame[y][x] = c; let mut buf = Vec::with_capacity(x_size * y_size * 3);