var PI=Math.PI, HALP_PI=PI/2; var maxRIC=7; var dim=150; var RIC; var scende; var raggi=[]; var colori=[]; var Xc, Yc; var maxX, maxY; function setup() { createCanvas(360, 360); noStroke(); rectMode(CENTER); Xc=width/2; Yc=0.7*height; maxX=width-1; maxY=height-1; RIC=3; scende=false; inizializzaRIC(); } function inizializzaRIC() { colori[RIC]=25; for(var i=RIC-1; i >=0; i--) colori[i]=colori[i+1]+25; raggi[RIC]=dim; for(var i=RIC-1; i >=0; i--) raggi[i]=raggi[i+1]/2; } function keyPressed() {scende=true; } function keyReleased(){scende=false;} function mousePressed() { if(scende && RIC > 0) { RIC--; inizializzaRIC(); } else if(!scende && RIC < maxRIC) { RIC++; inizializzaRIC(); } } function draw() { background(100); translate(Xc, Yc); piano(RIC, 0, 0, HALF_PI); } function piano(n, x, y, angolo) { fill(50, colori[n], 25); push(); translate(x, y); rotate(angolo); rect(0, 0, raggi[n], raggi[n]); pop(); if(n > 0) { var prossimo=raggi[n-1]*sqrt(2); var nx, ny; angolo +=PI/4; nx = x+prossimo*cos(angolo); ny = y-prossimo*sin(angolo); piano(n-1, nx, ny, angolo); angolo-=HALF_PI; nx = x+prossimo*cos(angolo); ny = y-prossimo*sin(angolo); piano(n-1, nx, ny, angolo); } }