(著)山たー
フラクタルな図形を書いてみたシリーズ1。どれも再起関数を使うので、初めはプログラムの流れが分かりづらい。プログラムは、どれも左クリックで階層が一つ増し、右クリックで階層が一つ減る。前回、ランダムゲームで描いたものと同じ。本来の描き方。
ソースコード
int num=1; void setup(){ size(550,500); noLoop(); noStroke(); background(255); } void draw(){ background(255); Disp_Triangle(width/2,20,500,num); } void Disp_Triangle(float x, float y, float edge, int num){ fill(0); triangle(x,y,x+edge*sin(PI/6),y+edge*cos(PI/6),x-edge*sin(PI/6),y+edge*cos(PI/6)); if(num>1){ fill(255); triangle(x,y,x+edge*sin(PI/6),y+edge*cos(PI/6),x-edge*sin(PI/6),y+edge*cos(PI/6)); float next_edge=edge/2; Disp_Triangle(x,y,next_edge,num-1); Disp_Triangle(x+next_edge*sin(PI/6),y+next_edge*cos(PI/6),next_edge,num-1); Disp_Triangle(x-next_edge*sin(PI/6),y+next_edge*cos(PI/6),next_edge,num-1); } } void mousePressed() { if (mouseButton == LEFT) { num+=1; } else if (mouseButton == RIGHT) { num=max(num-1,0); } redraw(); }
コメントをお書きください