Recursion 2

Basics > Structure > Recursion2

int x, y;
int livello=7;
int raggio;

void setup() 
{
   size(500, 500);
   background(255);
   colorMode(RGB, 1);
   noStroke();
   smooth();
   ellipseMode(RADIUS);
   x=width/2;
   y=height/2;
   raggio=width/2-2;
   noLoop();
}
void draw() 
{
   disegnaCerchio(x, y, raggio, livello);
}
void disegnaCerchio(float x, float y, float raggio, int livello) 
{                    
   float tono=livello/10.0;
   fill(0.0, tono, tono);
   ellipse(x, y, raggio, raggio);  
   if(livello > 1)
   {
	raggio=raggio/2.0;
	livello--;
		
	int num = int(random(4, 6));
	for(int i=0; i<num; i++) 
	{
		float a = random(0, TWO_PI);
		float nx = x + cos(a)*raggio;
		float ny = y + sin(a)*raggio;            
		disegnaCerchio(nx, ny, raggio, livello);
	}
   }
}