<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Altalena con Forze</title> <!-- Importa la libreria p5.js --> <script src="https://cdn.jsdelivr.net/npm/p5@1.5.0/lib/p5.min.js"></script> </head> <body> <script> let angle = Math.PI / 4; // Angolo iniziale let angleVel = 0; // Velocità angolare let angleAcc = 0; // Accelerazione angolare // Parametri fisici let length = 200; // Lunghezza della corda let gravity = 0.4; // Forza di gravità let damping = 0.995; // Smorzamento per simulare attrito/resistenza dell'aria // Punti di ancoraggio let pivotX, pivotY; function setup() { createCanvas(400, 400); // Coordinate del punto di ancoraggio (pivot) pivotX = width / 2; pivotY = 100; } function draw() { background(220); // Calcolo della forza e aggiornamento dell'angolo del pendolo // Forza di gravità proiettata sul moto angolare let force = gravity * sin(angle); // Accelerazione angolare = - forza / lunghezza angleAcc = -force / length; // Aggiorna velocità e posizione angleVel += angleAcc; angleVel *= damping; // Smorzamento per ridurre gradualmente l'ampiezza angle += angleVel; // Coordinate del sedile dell'altalena let swingX = pivotX + length * sin(angle); let swingY = pivotY + length * cos(angle); // Disegna la corda stroke(0); strokeWeight(2); line(pivotX, pivotY, swingX, swingY); // Disegna il sedile fill(100, 100, 255); noStroke(); ellipse(swingX, swingY,80, 10); } </script> </body>