xxxxxxxxxx
61
let radii = [];
let freq = [];
let wave = [];
let t = 0;
const N = 4;
const loc = { x: 150, y: 200 };
const dt = 0.05;
function setup() {
createCanvas(600, 400);
let maxrad = 100;
let startfreq = 1;
for (let i = 0; i < N; i++) {
radii.push(maxrad / (2*i + 1));
freq.push(startfreq * (2*i + 1));
}
}
function draw() {
background(80);
translate(loc.x, loc.y);
stroke(220);
let x = 0;
let y = 0;
for (let i = 0; i < N; i++) {
xold = x;
yold = y;
x += radii[i] * cos(freq[i] * t);
y += radii[i] * sin(freq[i] * t);
fill(220);
ellipse(x, y, radii[i] / 10);
line(xold, yold, x, y);
noFill();
ellipse(xold, yold, 2 * radii[i]);
}
wave.unshift(y);
translate(200, 0);
line(x - 200, y, 0, y);
beginShape();
for (let i = 0; i < wave.length; i++) {
vertex(i, wave[i]);
}
endShape();
if(wave.length > 250) {
wave.pop();
}
t += dt;
// if(frameCount == 30) {
// noLoop();
// }
}