fractalkitty looking for math? fractalkitty.com

early works

perfectionist Nightmare

#interactive#packing

area_blackarea_whitecArraycBooladdCircle

let n = 0,d;
let area_black = 0
let area_white = 0
let cArray = [];
let cnt = 0;
let cBool = true;
function setup() {
  createCanvas(windowWidth, windowHeight);
  cArray[0] = [];
  cArray[1] = [];
  cArray[2] = [];
  noStroke();
}

function draw() {
  background(0);
  fill(255)
  translate(width / 2, height / 2);
  d = min(width, height) - 20;
  circle(0, 0, d);
  area_white = d*d/4*PI;
  for (let i = 0; i < n; i++) {
    addCircle(i);
  }
  noLoop();
  
}
function addCircle(x,y) {
  cBool = true;
  fill(0);
  noFill();
  c=0
  a = dist(x, y, 0, 0);
  b=1000
  if (a <= d / 2) {
    b = (d / 2 - a) * 2;
    if (cnt === 0) {
      cBool=true
    } else {
      for (let i = 0; i < cnt; i++) {
        cR=cArray[2][i] / 2
        k = dist(cArray[0][i], cArray[1][i], x, y);
         c = 2 * (k - cArray[2][i] / 2);
          b = min(b, c);
          log("c", c, "b", b);
        if (k-cR<0) {
          cBool = false;
        }
      }
    }
  } else if (a > d / 2) {
    cBool = false;
  }
  if (cBool) {
    fill(0);
    circle(x, y, b);
    area_black=area_black+(b/2)*(b/2)*PI
    cArray[0][cnt] = x;
    cArray[1][cnt] = y;
    cArray[2][cnt] = b;
    cnt++;
  }
  cBool=true;
}
function mousePressed(){
  
  
  addCircle(mouseX-width/2,mouseY-height/2)
  pw = round((area_white-area_black)/area_white*100)
  pb = round((area_black)/area_white*100)
  push()
  console.log("white~" + str(round(area_white-area_black)) + "  percent: "+pw)
  console.log("black~" + str(round(area_black)) + "  percent: "+pb)
  pop()
}
function keyPressed(){
  translate(-width/2,-height/2)
  cArray[0] = [];
  cArray[1] = [];
  cArray[2] = [];
  noStroke();
  cnt=0;
  draw();
  push()
  area_white=(d/2)*(d/2)*PI
  area_black = 0
  
  console.log("white~" + str(round(area_white-area_black)))
  console.log("black~" + str(round(area_black)))
  
  pop()
  
}