xxxxxxxxxx
const numLines = 360;
const radius = 250;
var center;
var t = 0;
function setup() {
createCanvas(500, 500);
background(255);
center = new p5.Vector(250,250);
//noLoop();
}
function draw() {
clear();
noFill();
t+=0.05;
stroke(0,50);
drawCords(t);
ellipse(center.x, center.y,2* radius,2* radius);
}
function drawCords(t){
for(var i=0;i<numLines;i++){
var slowRotation = 0.01*t;
var theta = slowRotation + map(i,0,numLines,0,TWO_PI);
var alpha = periodicFunc(theta,t);
drawCord(theta,alpha);
}
}
function drawCord(alpha,theta){
var p = pointOnCircleAtAngle(alpha);
var q = pointOnCircleAtAngle(theta);
line(p.x,p.y,q.x,q.y);
}
function pointOnCircleAtAngle(theta){
var r = new p5.Vector(radius*cos(theta),radius*sin(theta));
return p5.Vector.add(center,r);
}
function periodicFunc(x,t) {
s = 0.5*(1+sin(t));
return 1+(1-s)/cos(x) + s*cos(x) + t*sin(2*x);
}