xxxxxxxxxx
39
// A simulated harmonic oscillator with force
// F = -kx
// does not use any trigonometry!
let p;
let A = 100;
function setup() {
createCanvas(400, 400);
p = new Particle(A, 0);
}
function draw() {
background(220);
translate(width / 2, height / 2);
fill(255)
line(0, 0, p.pos.x, p.pos.y)
p.update()
p.draw();
let k = 0.01
let f = p5.Vector.mult(p.pos, -k)
p.applyForce(f)
// to calculate the frequency of oscillation:
// Initial conditions:
// A = 100, m = 1, k = 0.01
// ω = √(k/m)
let omega = sqrt(k/p.m)
fill(0)
ellipse(A*cos(omega*frameCount), 100, 16)
// artificial shm by setting position
}