let fbm = Fbm::new().set_seed(world.seed as u32);
let shift_by_timed_noise = |(v, strength): (P2, f32)| {
P3::new(v.x / 100., v.y / 100., ctx.time.as_secs_f32().sin() / 2.);
let t = fbm.noise(sample_point) * strength;
v.translate(V2::new(t, t))
let square = Polygon::from(Ngon::square(world.center(), 200.));
let initial_strength = 15.;
std::iter::successors(Some((square, initial_strength)), |(shape, strength)| {
let next_strength = strength / 1.5;
let next_shape = Polygon::from(
.map(shift_by_timed_noise),
Some((next_shape, next_strength))
for splotch in splotches.skip(8).take(1) {
canvas.paint(Filled(splotch));