Objectif : Passage du mouvement 1D (y uniquement) à un mouvement 2D (x, y)#

Ce que cela change :#

Avant :

  • Position : y(t)

  • Vitesse : v(t)

  • Accélération : a(t)

Après :

  • Position : (x(t), y(t))

  • Vitesse : (vx(t), vy(t))

  • Accélération : (ax(t), ay(t))

La poussée, la gravité, la traînée, etc., doivent être projetées sur x et y en utilisant l’angle d’orientation de la fusée.


Modifications concrètes à faire :#

1. Définir de nouveaux états#

let x = 0;
let y = 0;
let vx = 0;
let vy = 0;

2. Ajouter un angle d’orientation#

let angle = Math.PI / 2; // 90 degrés = vertical

3. Calculer les forces#

3.1 Poussée#

const fx_thrust = thrust * Math.cos(angle);
const fy_thrust = thrust * Math.sin(angle);

3.2 Gravité#

const fy_gravity = -mass * g;

3.3 Traînée (Drag)#

const v = Math.sqrt(vx*vx + vy*vy);
const drag = 0.5 * rho * v * v * dragCoefficient * area;
const fx_drag = -drag * (vx / v);
const fy_drag = -drag * (vy / v);

4. Calculer les accélérations#

const ax = (fx_thrust + fx_drag) / mass;
const ay = (fy_thrust + fy_gravity + fy_drag) / mass;

5. Mettre à jour les vitesses et positions#

vx += ax * dt;
vy += ay * dt;

x += vx * dt;
y += vy * dt;

6. Stopper la simulation si la fusée touche le sol#

if (y < 0) {
    y = 0;
    vy = 0;
    vx = 0; // Optionnel
}

Résumé du schéma des forces#

  • Poussée : suit l’angle de la fusée.

  • Gravité : toujours verticale vers le bas.

  • Traînée : opposée au vecteur vitesse.


Checklist de ce que l’on doit coder :#

  • [x] Ajouter x, vx, ax.

  • [x] Projeter la poussée selon l’angle.

  • [x] Ajouter une force de traînée directionnelle.

  • [x] Adapter les équations de mouvement à 2D.