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))
}