p5(sketch => {
let system;
var fractals = [];
sketch.setup = function() {
var canvas2 = sketch.createCanvas(1000, 700);
var frac1 = new fractal(400, 650, 0, 120, 0);
fractals.push(frac1)
}
sketch.draw = function() {
if(sketch.frameCount % 30 == 0 ){
var N = sketch.frameCount/30
var fractals2 = fractals;
var value = Math.pow(2, N-1)
fractals2.forEach( x => {x.update()})
}
if(sketch.frameCount % 250==0){ fractals = []; fractals.push(new fractal(400, 650, 0, 120, 0))}
sketch.background(225); sketch.stroke(0); sketch.strokeWeight(4);
for(var i in fractals) fractals[i].show()
}
function fractal(x, y, theta, r, color){
var endPoint = { x: x-Math.sin(theta)*r, y: y-Math.cos(theta)*r}
if (r<12){
this.show = function() {
sketch.fill(color)
sketch.stroke(color)
sketch.line(x, y, endPoint.x, endPoint.y)
}
this.update = function(){}
} else {
this.show = function() {
sketch.fill(color)
sketch.stroke(color)
sketch.line(x, y, endPoint.x, endPoint.y)
}
this.update = function(){
console.log("update")
var f1 = new fractal(endPoint.x, endPoint.y, theta+Math.PI/8, r*0.8, color+30)
var f2 = new fractal(endPoint.x, endPoint.y, theta-Math.PI/8, r*0.8, color+30)
fractals.push(f1, f2)
}
}
}
})