La notion force est centrale en physique, qu'est-ce qu'une force ?

Une force permet de modéliser l'action qu'exerce un objet A sur un objet B. Prenons tout de suite un exemple : l'action qu'exerce la Terre (planète) sur un livre est une force que l'on appelle le poids du livre. Pour qu'il y ait force, il faut obligatoirement 2 "objets" : un objet qui exerce la force (la Terre dans notre exemple) et un objet qui "subit" la force (le livre dans notre exemple). Une force est modélisée par un vecteur, on parle de vecteur force $\vec{F}$.

Autre définition pour une force : c'est une action mécanique capable d'imposer une modification du vecteur vitesse.

Nous avons vu, dans l'activité précédente, une autre grandeur qui provoque une modification du vecteur vitesse : le vecteur accélération. Il existe donc un lien entre la notion de force et la notion d'accélération. Cette relation est décrite dans une loi fondamentale de la physique : la seconde loi de Newton.

Soit un mobile M de masse m, M subit une force $\vec{F}$. Si $\vec{a}$ est l'accélération de M, la deuxième loi de Newton nous dit que :

$\vec{F}=m.\vec{a}$

avec $||\vec{F}||$ en Newton, $||\vec{a}||$ en mètre par seconde par seconde et m en Kg

Que se passe-t-il si le mobile M est soumis simultanément à plusieurs forces ($\vec{F1}, \vec{F2}, \vec{F3},...$) ?

Il faut faire la somme des forces : $\sum\vec{F}=\vec{F1}+\vec{F2}+\vec{F3}$

la seconde loi de Newton s'écrit alors :

$\sum\vec{F}=m.\vec{a}$

Passons maintenant à l'intégration de cette deuxième loi de Newton dans notre objet "Mobile".

Nous allons définir un nouveau vecteur "sommeF" qui correspondra à la somme des forces s'exerçant sur le mobile.

La méthode "ajoutForce" permettra d'ajouter une force à "sommeF". Cette méthode prendra pour paramètre la force à ajouter (un vecteur).

À faire vous-même 3.1

Saisissez, analysez et testez ce code

mobile.js


Mobile=function () {
  this.OM = new createVector(width/2,height/2);
  this.dOM = new createVector();
  this.v = new createVector();
  this.dv = new createVector();
  this.a = new createVector();
  //création du vecteur sommeF
  this.sommeF = new createVector();
  this.affiche=function(){
    fill(0);
    ellipse(this.OM.x,this.OM.y,20,20);
  }
  this.update=function(dt){
    this.dv = p5.Vector.mult(this.a,dt);
    this.v.add(this.dv);
    this.dOM = p5.Vector.mult(this.v,dt);
    this.OM.add(this.dOM);
    //fin des calculs, remise à zéro de la somme des forces
    this.sommeF.mult(0);
  }
  this.ajoutForce=function(F){
    this.sommeF.add(F);
  }
}
        

script.js


var mob;
function setup(){
  createCanvas(200,200);
  mob=new Mobile();
}
function draw(){
  var dt=0;
  background(255);
  if (frameRate()>0){
    dt=1/frameRate();
  }
  F=createVector(10,0);
  mob.ajoutForce(F);
  mob.update(dt);
  mob.affiche();
}
        

Nous avons bien ajouté la méthode "ajoutForce". À chaque fois que cette méthode est exécutée depuis le programme principal ("script.js"), une force est ajoutée au vecteur "sommeF".

Une ligne de la méthode "update" doit particulièrement attirer votre attention :


sommeF.mult(0);
        

Cette ligne est équivalente à un $\sum\vec{F}=\vec{0}$. Cette ligne permet de "remettre à zéro" le vecteur "sommeF", pourquoi doit-on remettre le vecteur "sommeF" à zéro ?

La somme des forces est calculée à chaque image (chaque exécution de la fonction "draw") puisqu' à chaque nouvelle exécution, nous rencontrons la ligne "mob.ajoutForce(F);". Si rien n'était fait nous aurions :

ce qui évidemment, n'est pas le but recherché (nous voulons avoir $\sum\vec{F}=\vec{F}$ à chaque image).

Voilà pourquoi, à chaque image, dans la méthode "update", nous remettons "les compteurs à zéro" avec le "sommeF.mult(0);".

Cette façon de faire a pour conséquence que les appels de la méthode "ajoutForce" devront forcement être fait avant d'exécuter la méthode "update".

L'ajout des forces n'a pour l'instant aucune conséquence sur le mobile M, il nous fait maintenant implémenter la seconde loi de Newton.

À faire vous-même 3.2

Saisissez, analysez et testez ce code

mobile.js


Mobile=function () {
  this.OM = new createVector(width/2,height/2);
  this.dOM = new createVector();
  this.v = new createVector();
  this.dv = new createVector();
  this.a = new createVector();
  //création du vecteur sommeF
  this.sommeF = new createVector();
  //la variable m correspond à la masse du mobile
  this.m=1;
  this.affiche=function(){
    fill(0);
    ellipse(this.OM.x,this.OM.y,20,20);
  }
  this.update=function(dt){
    //calcul de l'accélération grâce à la 2de loi de Newton
    this.a=p5.Vector.mult(this.sommeF,1/this.m);
    this.dv = p5.Vector.mult(this.a,dt);
    this.v.add(this.dv);
    this.dOM = p5.Vector.mult(this.v,dt);
    this.OM.add(this.dOM);
    //fin des calculs, remise à zéro de la somme des forces
    this.sommeF.mult(0);
  }
  this.ajoutForce=function(F){
    this.sommeF.add(F);
  }
}
        

script.js


var mob;
function setup(){
  createCanvas(200,200);
  mob=new Mobile();
}
function draw(){
  var dt=0;
  background(255);
  if (frameRate()>0){
    dt=1/frameRate();
  }
  F=createVector(10,0);
  mob.ajoutForce(F);
  mob.update(dt);
  mob.affiche();
}
        

Nous avons introduit un nouvel attribut m qui correspond à la masse de l'objet

La ligne :


a=p5.Vector.mult(sommeF,1/m);
        

permet d'avoir $\vec{a}=\frac{1}{m}.\sum\vec{F}$ qui est bien sûr équivalent à un $\vec{a}=\frac{\sum\vec{F}}{m}$ (qui découle de la seconde loi de Newton $\sum\vec{F}=m.\vec{a}$)

À faire vous-même 3.3

Vous allez écrire la version "définitive" de l'objet Mobile.

Apporter les modifications nécessaires pour que :

La "correction" de ce "À faire vous-même" est donnée au début de l'activité suivante.