fractalkitty looking for math? fractalkitty.com

100 days of code

randomPersonality

#random#trig#curves#interactive#study#math

nRingsarrayXarrayYnPointspushringMakerringMakerInitdrawRing

let nRings = 2;
let arrayX = [];//x variable
let arrayY = [];//y variable
let nPoints = 15;//number of points in curves

function setup(){
  createCanvas(windowWidth,windowHeight)//create canvas
  noLoop();
  angleMode(DEGREES);
  background(255)
}


function draw(){
  translate(width/2,width/2)//make origin be in center
  rIn = random(1,15)
  ringMakerInit(rIn,0.5);//initial ring
  for (let i = 0;i<=nRings; i ++){//build array for each ring
    v = random(1,50)
    ringMaker(random(1,100),i);//ring function
  }
  for (let i = nRings;i>=0;i--){//draw each ring from the outside in
    stroke(0);//random stroke color
    fill(0)//random color for ring
    drawRing(arrayX[i],arrayY[i]);//draw ring function
    push()
    scale(-1,1)
    drawRing(arrayX[i],arrayY[i]);
    pop()
  }
}

function ringMaker(m,n){
  arrayX[n+1] = []
  arrayY[n+1] = []
  for (let i =0; i<=nPoints;i++){
    arrayX[n+1][i] = arrayX[n][i] + random(v-m,v+m)*sin(i*(360/nPoints));
    arrayY[n+1][i] = arrayY[n][i] + random(v-m,v+m)*cos(i*(360/nPoints));
  }
}

function ringMakerInit(r,v){
  arrayX[0] = [];
  arrayY[0] = [];
  for (let i =0; i<=nPoints;i++){
    arrayX[0][i] = random(r-v,r+v)*sin(i*(360/nPoints));
    arrayY[0][i] = random(r-v,r+v)*cos(i*(360/nPoints));
  }
}

function drawRing(X,Y){//draw blot
  beginShape();
    for (let i = 0;i<=nPoints;i++){
      curveVertex(X[i],Y[i]);
    }
    curveVertex(X[1],Y[1]);
    curveVertex(X[1],Y[1]);
  endShape()
}

function mousePressed(){//new with mousepress
  background(255,255,255,110)
  translate(-width/2,-width/2)

  translate(mouseX-width/2,mouseY-height/2)
  draw();
  translate(-(mouseX-width/2),-(mouseY-height/2))
  
}