fractalkitty looking for math? fractalkitty.com

Coded Poems

mathober day-3: Internal

#random#trig#vectors#image#3d#animation#accumulates#poem#geometry#mathober

img1img2internalSimilitude


let img1, img2;
let C1, C2, Si, r1, r2, Se, c1, c2;

function preload() {
  img1 = loadImage("/assets/internal.jpg");
  img2 = loadImage("/assets/internal_2.png");
}

function setup() {
  createCanvas(600, 600, WEBGL);
  c1 = random(-100, -200);
  c2 = random(100, 200);
  r1 = 100;
  r2 = 50;
  noFill();
  strokeWeight(3);
  fill(255, 255, 255, 50);
  noStroke();
}

function draw() {
  t = frameCount / 100;
  C1 = createVector(c1 * cos(t) + (c2 / 3) * sin(t / 2) * cos(t), c1 * sin(t));
  C2 = createVector(c2 * cos(t) * sin(t / 4), c2 * sin(t) * cos(t / 3));
  r1 = 100 + 25 * sin(t / 3);
  r2 = 75 + 50 * cos(t / 3);

  Si = createVector(
    (C1.x * r2 + C2.x * r1) / (r1 + r2),
    (C1.y * r2 + C2.y * r1) / (r1 + r2)
  );
  texture(img1);
  push();
  rotateX(t / 10);
  rotateY(t / 8);
  rotateZ(t / 5);
  box(2000, 2000, 2000);
  pop();
  texture(img2);
  push();

  push();

  translate(C1.x, C1.y);
  rotateZ(t);
  rotateY(PI);
  rotateZ(PI);
  sphere(10, 50, 50);
  torus(r1, 10, 50, 50);

  pop();
  translate(C2.x, C2.y);
  rotateZ(-t);
  rotateY(PI);
  rotateZ(PI);
  sphere(10, 50, 50);
  torus(r2, 10, 50, 50);

  pop();

  pop();
  push();
  translate(Si.x, Si.y);
  rotateY(PI);
  rotateZ(PI);
  sphere(5, 50, 50);
  pop();

  pop();


  push();
  stroke(0);
  fill(0);
  strokeWeight(2);
  beginShape();
  vertex(C1.x, C1.y, 0);
  vertex(C2.x, C2.y, 0);
  endShape();

  pop();
  pop();
}

function internalSimilitude() {
  x = (C1.x * r2 + C2.x * r1) / (r1 + r2);
  y = (C1.y * r2 + C2.y * r1) / (r1 + r2);
}