SketchBook

フラクタル図形 循環

var max_times = 10;
var SIZE = 400;

function setup() {
createCanvas(SIZE, SIZE);
noStroke();
frameRate(2);
}

var times = 0;
var change = 1;

function draw() {
background(10, 25, 300);

 fill(255, 255, 255);
 triangle(SIZE/3, 0, 0, SIZE, SIZE, SIZE);

fill(255,25,0);
SierpinskiGasket(SIZE/3, 0, 0, SIZE, SIZE, SIZE, times);

times += change;

if (times > max_times || times < 1) {
change *= -1;
}
}

function SierpinskiGasket(Ax, Ay, Bx, By, Cx, Cy, times) {
if(times > 0) {
SierpinskiGasket(Ax, Ay, (Ax + Bx) * 0.5, (Ay + By) * 0.5, (Ax + Cx) * 0.5, (Ay + Cy) * 0.5, times - 1);
SierpinskiGasket(Bx, By, (Ax + Bx) * 0.5, (Ay + By) * 0.5, (Bx + Cx) * 0.5, (By + Cy) * 0.5, times - 1);
SierpinskiGasket(Cx, Cy, (Bx + Cx) * 0.5, (By + Cy) * 0.5, (Ax + Cx) * 0.5, (Ay + Cy) * 0.5, times - 1);
}
triangle((Ax + Bx) * 0.5, (Ay + By) * 0.5, (Bx + Cx) * 0.5, (By + Cy) * 0.5, (Cx + Ax) * 0.5, (Cy + Ay) * 0.5);
}