· 

シェルピンスキーのカーペット

(著)山たー

フラクタルな図形を書いてみたシリーズ2。プログラムは、左クリックで階層が一つ増し、右クリックで階層が一つ減る。押しすぎに注意。

※一度灰色の画面をクリックしたら動きます。

ソースコード

int num=1;

void setup(){
  size(500,500);
  noLoop();
  noStroke();
  background(255);
}

void draw(){
  background(255);
  Disp_Square(0,0,500,num);
}

void Disp_Square(float x, float y, float edge, int num){
  fill(0);
  rect(x,y,edge,edge);
  if(num>1){
    fill(255);
    rect(x,y,edge,edge);
    float next_edge=edge/3;
    Disp_Square(x,y,next_edge,num-1);
    Disp_Square(x+next_edge,y,next_edge,num-1);
    Disp_Square(x+next_edge*2,y,next_edge,num-1);
    Disp_Square(x,y+next_edge,next_edge,num-1);
    Disp_Square(x+next_edge*2,y+next_edge,next_edge,num-1);
    Disp_Square(x,y+next_edge*2,next_edge,num-1);
    Disp_Square(x+next_edge,y+next_edge*2,next_edge,num-1);
    Disp_Square(x+next_edge*2,y+next_edge*2,next_edge,num-1);
  } 
}

void mousePressed() {
  if (mouseButton == LEFT) {
    num+=1;
  } else if (mouseButton == RIGHT) {
    num=max(num-1,0);
  }
  redraw();
}