Preset colored noise.
This commit is contained in:
		| @@ -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<T: Write>(w: &mut T, f: &Frame) -> std::io::Result<()> { | ||||
|     w.flush() | ||||
| } | ||||
|  | ||||
| fn pick_color<R>(c0: Color, c1: Color, rng: &mut R) -> Color | ||||
| where | ||||
|     R: Rng, | ||||
| { | ||||
|     if rng.gen::<f64>() < 0.5 { | ||||
|         c0.interpolate(c1, rng.gen::<f64>().powf(2.0)) | ||||
|     } else { | ||||
|         Color::black() | ||||
|     } | ||||
| } | ||||
|  | ||||
| fn main() -> std::io::Result<()> { | ||||
|     let args = args().collect::<Vec<_>>(); | ||||
|     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::<Vec<_>>()) | ||||
|         .take(y_size) | ||||
|         .collect::<Vec<_>>(); | ||||
|     let mut frame = repeat_with(|| { | ||||
|         repeat_with(|| pick_color(c0, c1, &mut rng)) | ||||
|             .take(x_size) | ||||
|             .collect::<Vec<_>>() | ||||
|     }) | ||||
|     .take(y_size) | ||||
|     .collect::<Vec<_>>(); | ||||
|     loop { | ||||
|         let x = rng.gen_range(0, x_size); | ||||
|         let y = rng.gen_range(0, y_size); | ||||
|         let c = { | ||||
|             if rng.gen::<f64>() < 0.5 { | ||||
|                 c0.interpolate(c1, rng.gen::<f64>().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); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Juergen Stuber
					Juergen Stuber