- Mouse (tasto): aumenta la ricorsione
- Mouse (Ctrl+tasto): diminuisce la ricorsione
- Applicazione Java
final int numMax=8;
int num=3;
float X1, Y1,
X2, Y2,
X3, Y3;
boolean scende=false;
void setup()
{
size(500, 500);
smooth();
noStroke();
fill(0);
X1=0; Y1=height-1;
X2=width-1; Y2=height-1;
X3=width/2; Y3=0;
noLoop();
}
void keyPressed()
{
scende=true;
}
void keyReleased()
{
scende=false;
}
void mousePressed()
{
if(scende && num > 1)
num--;
else if(!scende && num < numMax)
num++;
redraw();
}
void draw()
{
background(255);
sierpinski(num, X1, Y1, X2, Y2, X3, Y3);
}
void sierpinski(int n, float x1, float y1,
float x2, float y2,
float x3, float y3)
{
if(n == 1)
triangle(x1, y1, x2, y2, x3, y3);
else
{
float x12=(x1+x2)/2; float y12=(y1+y2)/2;
float x23=(x2+x3)/2; float y23=(y2+y3)/2;
float x13=(x1+x3)/2; float y13=(y1+y3)/2;
sierpinski(n-1, x1, y1, x12, y12, x13, y13);
sierpinski(n-1, x2, y2, x12, y12, x23, y23);
sierpinski(n-1, x3, y3, x23, y23, x13, y13);
}
}