fractalkitty looking for math? fractalkitty.com

all

gasket

#trig#image#3d#interactive#animation#polar

circgasketpolygonangle

let circ
let t
function preload(){
  circ = loadImage("/assets/Untitled_Artwork%2020_1.png")
}
function setup() {
  c = min(windowWidth,windowHeight)*0.8
	createCanvas(c,c,WEBGL);
	background(100);

    noStroke()
  texture(circ)
}

function draw() {
  t=frameCount/100;
  orbitControl()
  rotateY(t/10)
  background(0)
  sphere(4000,30,30)
  gasket()
  push()
  rotateY(PI/2)
  scale(2-cos(t),2-cos(t),2-cos(t))
  gasket()
  pop()
  push()
  scale(1+sin(t),1+sin(t),1+sin(t))
  rotateX(PI/2)
  gasket()
  pop()

}

function gasket(){
  polygon(0,0,148,9,101)
  push()
  rotate(PI/9)
  polygon(0,0,182,9,33)
  pop()
  push()
  rotate(PI/9+PI/27)
  polygon(0,0,192,9,15)
  pop()
  push()
  rotate(PI/9-PI/27)
  polygon(0,0,192,9,15)
  pop()
  push()
  rotate(PI/9+PI/27+PI/50)
  polygon(0,0,195,9,10)
  pop()
  push()
  rotate(PI/9-PI/27-PI/50)
  polygon(0,0,195,9,10)
  pop()
  push()
  rotate(PI/9+PI/27+PI/50+PI/70)
  polygon(0,0,197,9,5)
  pop()
  push()
  rotate(PI/9-PI/27-PI/50-PI/70)
  polygon(0,0,197,9,5)
  pop()
  push()
  rotate(PI/9)
  polygon(0,0,161,9,10)
  pop()
  push()
  rotate(PI/9)
  polygon(0,0,80,9,55)
  pop()
  push()
  rotate(PI/9)
  polygon(0,0,113,9,12)
  pop()
  polygon(0,0,93,9,10)
  push()
  polygon(0,0,43,9,30)
  sphere(56/2,20,20)
}

function polygon(x, y, radius, npoints,r2) {
  let angle = TWO_PI / npoints;
  beginShape();
  for (let a = 0; a < TWO_PI; a += angle) {
    let sx = x + cos(a+t) * radius;
    let sy = y + sin(a+t) * radius;
    rotateX(t/100)
    rotateY(t/200)
    push()
    translate(sx,sy,0)
    sphere(r2/2-r2/3*sin(t)*cos(sx/1000*t),40,40)
    pop()
  }
  
  endShape(CLOSE);
}