Sierpinski con trasformazione

Qualunque sia l’immagine iniziale, la trasformazione produce il frattale di Sierpinski.

  • Mouse (tasto): aumenta la ricorsione
  • Mouse (Ctrl+tasto): diminuisce la ricorsione
  • Applicazione Java
final int numMax = 7;

int num = 2;
int dim, dim2, dim4, dim43;

PImage immagine, 
       immagine2;
boolean scende;

void setup()
{
   size(500, 500);
   fill(0);
   smooth();
   noStroke();
   
   dim   = width;
   dim2  = dim/2;
   dim4  = dim/4;
   dim43 = 3*dim4;
   immagine=loadImage("buttons.gif");
   noLoop();
}

void keyPressed()
{
   scende=true;
}
void keyReleased()
{
   scende=false;
}
void mousePressed()
{
   if(scende && num > 0)
          num--;
   else if(!scende && num < numMax) 
          num++;
   redraw();
}

void draw()
{
   background(immagine);
   
   for(int i=0; i < num; i++)
   {
	  loadPixels();
	  immagine2=createImage(dim, dim, RGB);
	  arraycopy(pixels, immagine2.pixels);

	  background(255);
	  blend(immagine2, 0, 0, dim, dim, dim4, 0   , dim2, dim2, BLEND);           
	  blend(immagine2, 0, 0, dim, dim, 0   , dim2, dim2, dim2, BLEND);
	  blend(immagine2, 0, 0, dim, dim, dim2, dim2, dim2, dim2, BLEND);           
   }
}