xxxxxxxxxx
62
let l1 = 100;
let l2 = 200;
let m1 = 20;
let m2 = 20;
let a1 = 0;
let a2 = 0;
let a1v = 0;
let a2v = 0;
let a1a = 0;
let a2a = 0;
const g = 1;
function setup() {
createCanvas(900, 800);
a1 = PI / 2;
a2 = PI / 2;
}
function draw() {
a1a = getAcc1();
a2a = getAcc2();
translate(width / 2, height / 4);
background(255);
stroke(0);
strokeWeight(2);
const x1 = l1 * sin(a1);
const y1 = l1 * cos(a1);
line(0, 0, x1, y1);
strokeWeight(m1);
point(x1, y1);
strokeWeight(2);
const x2 = x1 + l2 * sin(a2);
const y2 = y1 + l2 * cos(a2);
line(x1, y1, x2, y2);
strokeWeight(m2);
point(x2, y2);
a1v += a1a;
a2v += a2a;
a1 += a1v;
a2 += a2v;
}
function getAcc1() {
const num1 = g * (2 * m1 + m2) * sin(a1);
const num2 = m2 * g * sin(a1 - 2 * a2);
const num3 = 2 * sin(a1 - a2) * m2 * (a2v * a2v * l2 + a1v * a1v * l1 * cos(a1 - a2));
const num = -num1 - num2 - num3;
const den = l1 * (2 * m1 + m2 - m2 * cos(2 * a1 - 2 * a2));
return num / den;
}
function getAcc2() {
const num1 = a1v * a1v * l1 * (m1 + m2);
const num2 = g * (m1 + m2) * cos(a1);
const num3 = a2v * a2v * l2 * m2 * cos(a1 - a2);
const num = 2 * sin(a1 - a2) * (num1 + num2 + num3);
const den = l2 * (2 * m1 + m2 - m2 * cos(2 * a1 - 2 * a2));
return num / den;
}