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 classe "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 (type PVector)

À faire vous-même 3.1

Saisissez, analyser et testez ce code

Mobile.pde


class Mobile {
  PVector OM;
  PVector dOM;
  PVector v;
  PVector dv;
  PVector a;
  //création du vecteur sommeF
  PVector sommeF;
  Mobile(){
    OM = new PVector(10,height/2);
    dOM = new PVector();
    v = new PVector();
    dv = new PVector();
    a = new PVector();
    sommeF = new PVector();
  }
  void affiche(){
    fill(0);
    ellipse(OM.x,OM.y,20,20);
  }
  void update(float dt){
    //calcul du vecteur dv
    dv = PVector.mult(a,dt);
    //calcul du nouveau vecteur vitesse
    v.add(dv);
    dOM = PVector.mult(v,dt);
    OM.add(dOM);
    //permet d'avoir sommeF égal au vecteur nul.
    sommeF.mult(0);
  }
  void ajoutForce(PVector F){
    sommeF.add(F);
  }
}
        

phy_a3_1.pde


Mobile mob;
void setup(){
  size(200,200);
  mob=new Mobile();
}
void draw(){
  background(255);
  float dt=1/frameRate;
  PVector F=new PVector(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 ("phy_a3_1.pde"), 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") puisque à 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, analyser et testez ce code

Mobile.pde


class Mobile {
  PVector OM;
  PVector dOM;
  PVector v;
  PVector dv;
  PVector a;
  PVector sommeF;
  //la variable m correspond à la masse du mobile
  float m;
  Mobile(){
    OM = new PVector(10,height/2);
    dOM = new PVector();
    v = new PVector();
    dv = new PVector();
    a = new PVector();
    sommeF = new PVector();
    //la masse du mobile est égal à 1 Kg
    m = 1;
  }
  void affiche(){
    fill(0);
    ellipse(OM.x,OM.y,20,20);
  }
  void update(float dt){
    //calcul de l'accélération grâce à la 2de loi de Newton
    a= PVector.mult(sommeF,1/m);
    dv = PVector.mult(a,dt);
    v.add(dv);
    dOM = PVector.mult(v,dt);
    OM.add(dOM);
    //fin des calculs, remise à zéro de la somme des forces
    sommeF.mult(0);
  }
  void ajoutForce(PVector F){
    sommeF.add(F);
  }
}
        

phy_a3_1.pde


Mobile mob;
void setup(){
  size(200,200);
  mob=new Mobile();
}
void draw(){
  background(255);
  float dt=1/frameRate;
  PVector F=new PVector(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= PVector.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

Modifiez la classe "Mobile" pour que le constructeur de cette classe prenne 2 arguments : la couleur du mobile (sous la forme d'une variable de type "color") et la masse du mobile. De plus, la position de départ du mobile devra être aléatoire.


À faire vous-même 3.4

Proposez un programme permettant de vérifier cette affirmation : "l'effet d'une force sur un mobile est inversement proportionnel à la masse du mobile"


À faire vous-même 3.5

Vous allez écrire la version "définitive" de la classe Mobile (en partant du code proposé dans le "À faire vous-même 3.2").

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.