Point[]p = new Point[3]; float shift = 2.0; float fade = 0; float fillCol = 0; float rot = 0; float spin = 0; float value = random(100); float valuex = random(200); float valuey = random(300); void setup(){ size(800, 800); background(0); smooth(); noStroke(); } void draw() { fade = 255.0/(width/2.0/shift); spin = 360.0/(width/2.0/shift); p[0] = new Point(-width/2, height/2); p[1] = new Point(width/2, height/2); p[2] = new Point(0, -height/2); translate(width/2, height/2); spiral(value, valuex, valuey); } void spiral(float shift1, float shift2, float shift3){ fill(fillCol); fillCol+=fade; rotate(spin); rotate(PI/3.0); float r = random(100, 255); float g = random(100, 255); float b = random(100, 255); fill(r, g, b, 10); triangle(p[0].x+=shift, p[0].y-=shift/(random(shift1)), p[1].x-=shift, p[1].y-=shift/(random(shift2)), p[2].x, p[2].y+=shift*(random(shift3))); if(p[0].x<0){ // recursive call spiral(shift1, shift2, shift3); } }