fractalkitty looking for math? fractalkitty.com

early works

sunflower

#interactive#dom#math#spiral#plants

iteranglecircleSizefreezespeedcreateFractalresetApauseDgrowCshrinkCincIincDmakeButtonsliderChange

let iter = 2000;//iterations
let angle = 137.5077;
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);
  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);
  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.00005, 0.00005, 0.00001, 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())
  }
}