After a year of messy coding in Python with avoiding pretty much any modular approach I was eager to train a more "functional" approach with p5. I started with a very basic shape.

I moved on to integrate it a function into a for-loop.

Then I tried to apply the modularity principles at my last sketch - and could not see a starting point.

let x; let y; let z = 1; let t = 1; let counter = 0; function setup() { createCanvas(400, 400); background(255) } function draw() { counter ++; if (counter > random(100)){ background(80, 130, 230, random(1)) background(0,10); } noStroke(); fill(255, 50) rect(width/2 - 7.5, 50, 15, 300); fill(mouseY / 0.7, 25) rect(width/2 - 7.5, 50, 15, 300); let y1 = map(mouseY, 0, height, 45, height-100); noFill(); if (x == width/4 || y == height/4){ console.log("yo"); z = random(10); t = random(1); } if (x <= width && y > height/2){ stroke(120, 180, 230, 30) fill( 255, 255/x+30/2) fill( 255, 220/ x*(y), 255/ x*(y), 6) triangle(x + 20, y*z, y, x*z, x/2, x); triangle(width -x*t, y/z, height, x*t, x/2*t,x/t); triangle(width - x, height - y*z, height - y, width - x*z, width - x/2, width - x); triangle(0 + x*t, height-y/z, 0, width - x*t, width - x/2*t,width - x/t); x+= 1*y1/100 } else if (x <= width && y <= height){ x += x*t; y += 100 } else{ background(255, 10); x = 10; y = 0; } }

Which looks in the original like this:

I could technically split the draw function into "objects appearing" and "move, but in the sketch above they all are mixed together. Modularity doesn't not make a lot of sense here, at least I do not see it at this moment. So I decided to play a bit with linesand perspective. Unfortunately I couldn't finish the sketch.