xxxxxxxxxx
102
let iter = 2000;//iterations
let angle = 137.5077; //golden angle
let circleSize = 12;
let t= 0;
let p = 1;
let freeze = false;
let speed = 0.0001
function setup() {
cnv = createCanvas(500, 500);
angleMode(DEGREES);
makeButton();
}
function draw() {
cnv.translate(500 / 2, 500 / 2);
rotation = angle;
distance = 1;
delta = 0.1;
background(255);
rect(0,0,circleSize,circleSize);
//ellipse(0, 0, circleSize, circleSize);
for (let i = 0; i <= iter; i++) {
createFractal(rotation, distance);
rotation += angle;
distance += delta;
fill(255, 227, 117);
}
angle = angle- speed;
if (angle < 0) { angle = 137.5;}
aDisplay = Math.round(angle*10000)/10000;
valueDisp1.html("angle = " +aDisplay)
}
function createFractal(_rotation, _distance) {
push();
rotate(_rotation);
rect(_distance, 0,circleSize,circleSize);
//ellipse(_distance, 0, circleSize, circleSize);
pop();
}
function resetA() {
angle = 137.5;
circleSize = 12;
iter = 2000;
}
function pauseD() {
freeze = !freeze;
if (freeze == true) noLoop();
else loop();
}
function growC() {
circleSize = circleSize + 2;
}
function shrinkC() {
circleSize = circleSize - 2;
print(circleSize);
if (circleSize <= 3){circleSize = 3;}
}
function incI (){
iter = iter + 500;
if (iter >= 12000){
iter = 12000;
}
}
function incD (){
iter = iter - 500;
if (iter <= 500){
iter = 500;
}
}
function makeButton(){
button = createButton('Reset');
button.position(19, 19);
button.mousePressed(resetA);
button2 = createButton('Play/Pause');
button2.position(70, 19);
button2.mousePressed(pauseD);
growS = createButton('Grow');
growS.position(145, 19);
growS.mousePressed(growC);
shrinkS = createButton('Shrink');
shrinkS.position(193, 19);
shrinkS.mousePressed(shrinkC);
iterI = createButton('More Iterations');
iterI.position(250, 19);
iterI.mousePressed(incI);
iterD = createButton('Less Iterations');
iterD.position(350, 19);
iterD.mousePressed(incD);
aSlider = createSlider(-0.1, 0.1, 0.0001, 0.00005);
aSlider.position(20, 40);
aSlider.size(80,20);
valueDisp1 = createP()
valueDisp1.position(350, 29);
valueDisp1.html("angle = " +angle)
valueDisp2 = createP()
valueDisp2.position(29, 40);
valueDisp2.html("speed= " + speed)
aSlider.input(sliderChange);
function sliderChange(){
speed = aSlider.value();
valueDisp2.html('speed = ' + aSlider.value())
}
}