Cette série d'activités s'inspire de l'excellent livre de Daniel Shiffman, "The Nature of Code" (licence Creative Commons Attribution-NonCommercial 3.0).

Vous devez avoir des connaissances de base sur les vecteurs (un niveau "classe de seconde" de l'enseignement général devrait suffire). Si nécessaire, vous trouverez des cours de mathématiques en ligne qui abordent ce sujet, comme par exemple ici.

Vous devez maîtriser les notions suivantes :

Pour manipuler les vecteurs, Processing propose la classe "PVector". Voici quelques exemples d'utilisation des méthodes de la classe PVector (un vecteur est un objet (au sens programmation orientée objet) dans Processing) :

Pour créer un vecteur, il suffit d'écrire :


PVector AB;
AB = new PVector(5,15);
        

Ces 2 lignes vous permettent de créer un vecteur $\vec{AB}$ de coordonnées $\begin{pmatrix} 5 \\ 15 \end{pmatrix}$

Si vous ne passez aucun paramètre au constructeur PVector :


PVector AB;
AB = new PVector();
        

par défaut, le vecteur $\vec{AB}$ a pour coordonnées $\begin{pmatrix} 0 \\ 0 \end{pmatrix}$ (vecteur nul $\vec{0}$).

Il est possible d'obtenir la coordonnée x d'un vecteur $\vec{AB}$ en écrivant "AB.x" (même chose pour la coordonnée y avec "AB.y"). "AB.x" et "AB.y" sont de type float.

À faire vous-même 1.1

Saisissez et testez ce code


PVector AB;
AB = new PVector(5,15);
println("x : "+AB.x+" y : "+AB.y);
        

La méthode "mag" permet d'obtenir la norme d'un vecteur.

À faire vous-même 1.2

Saisissez et testez ce code


PVector AB;
float normeAB;
AB = new PVector(5,15);
normeAB = AB.mag();
println(normeAB);
        

La méthode "mult" permet d'avoir le résultat d'un vecteur par un réel. Cette méthode peut s'utiliser de 2 manières différentes :

À faire vous-même 1.3

Saisissez et testez ce code


PVector AB;
float k=2.0;
AB = new PVector(5,15);
println("Avant => x : "+AB.x+" y : "+AB.y);
AB.mult(k);
println("Après => x : "+AB.x+" y : "+AB.y);
        

À faire vous-même 1.4

Saisissez et testez ce code


PVector AB;
PVector CD;
float k=2.0;
AB = new PVector(5,15);
CD = new PVector();
CD=AB.mult(AB,k);
println("AB => x : "+AB.x+" y : "+AB.y);
println("CD => x : "+CD.x+" y : "+CD.y);
        

La méthode "add" permet d'additionner 2 vecteurs. Comme pour la méthode "mult", la méthode "add" peut être utilisée de 2 façons :

À faire vous-même 1.5

Saisissez et testez ce code


PVector AB;
PVector CD;
AB = new PVector(5,15);
CD = new PVector(9,8);
println("AB avant => x : "+AB.x+" y : "+AB.y);
println("CD avant => x : "+CD.x+" y : "+CD.y);
AB.add(CD);
println("AB après => x : "+AB.x+" y : "+AB.y);
println("CD après => x : "+CD.x+" y : "+CD.y);
        

À faire vous-même 1.6

Saisissez et testez ce code


PVector AB;
PVector CD;
PVector EF;
AB = new PVector(5,15);
CD = new PVector(9,8);
EF = new PVector();
println("AB avant => x : "+AB.x+" y : "+AB.y);
println("CD avant => x : "+CD.x+" y : "+CD.y);
println("EF avant => x : "+EF.x+" y : "+EF.y);
EF=PVector.add(AB,CD);
println("AB après => x : "+AB.x+" y : "+AB.y);
println("CD après => x : "+CD.x+" y : "+CD.y);
println("EF après => x : "+EF.x+" y : "+EF.y);
        

La méthode "sub" permet de soustraire 2 vecteurs, elle s'utilise comme la méthode "add". La relation $\vec{EF}=\vec{AB}-\vec{CD}$ s'écrit :


EF = PVector.sub(AB,CD); //avec EF, AB et CD de type PVector
        

Comme pour la méthode "add", il est aussi possible d'écrire :


AB.sub(CD);
        

La méthode "normalize" permet de normaliser un vecteur (cette notion vous est peut-être inconnue). Soit un vecteur $\vec{AB}$ la normalisation de ce vecteur donnera un vecteur $\vec{u}$ qui aura la même direction et le même sens que $\vec{AB}$ mais qui n'aura pas la même norme. On aura $||\vec{u}||$=1 ($\vec{u}$ est un vecteur unitaire). On aura donc $\vec{AB}=||\vec{AB}||\vec{u}$.

À faire vous-même 1.7

Saisissez et testez ce code


PVector AB;
PVector u;
float normeu;
float normeAB;
AB = new PVector(5,15);
u = new PVector();
AB.normalize(u);
normeu=u.mag();
normeAB=AB.mag();
println("norme de u = "+normeu);
println("norme de AB = "+normeAB);
        

À faire vous-même 1.8

Créez un programme qui permettra de vérifier que $\vec{AB}$ et $\vec{u}$ (voir ci-dessus) ont bien la même direction (colinéaire) et le même sens