Comment une matrice déplace des points
Une transformation linéaire déplace d’un coup tous les points du plan, et une matrice de deux lignes et deux colonnes la décrit. Vous saurez lire une matrice comme une rotation, un agrandissement ou une symétrie.
Un logo doit tourner, grandir ou se retourner à l’écran. Chacun de ses points passe par la même matrice.
À la fin de cette leçon
Remarque
Je peux lire une matrice comme une rotation, un agrandissement ou une symétrie.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Point | un couple de coordonnées x et y | (2, 1) |
| Transformation | une règle qui envoie chaque point vers un autre | |
| Rotation | un mouvement qui tourne les points autour de l’origine | |
| Symétrie | un retournement des points comme dans un miroir | |
| Composition | le fait d’enchaîner deux transformations |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Les colonnes disent où vont les deux axes
Une matrice (2, 2) envoie le point (x, y) vers un nouveau point. Sa première colonne est l’endroit où va le point (1, 0), la seconde celui où va (0, 1).
La matrice [[0, −1], [1, 0]] envoie (1, 0) en (0, 1) et (0, 1) en (−1, 0). C’est une rotation d’un quart de tour, soit 90 degrés, vers la gauche.
Exemple travaillé : tourner le point (2, 1)
| Coordonnée | Calcul | Résultat |
|---|---|---|
| Nouveau x | 0 × 2 + (−1) × 1 | −1 |
| Nouveau y | 1 × 2 + 0 × 1 | 2 |
| Point obtenu | de (2, 1) à (−1, 2) | un quart de tour |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Tourner un logo en Python
# Trois coins d’un logo, chacun un point (x, y).
logo = [[0, 0], [2, 0], [2, 1]]
# Rotation d’un quart de tour : les colonnes disent où vont (1, 0) et (0, 1).
rotation = [[0, -1], [1, 0]]
for point in logo:
x = rotation[0][0] * point[0] + rotation[0][1] * point[1]
y = rotation[1][0] * point[0] + rotation[1][1] * point[1]
print(point, "devient", [x, y])
# Remplacez rotation par [[2, 0], [0, 2]], puis relancez.
# Que devient chaque point ?
Une rotation de 90 degrés avec NumPy
docker exec jupyter python3 -c "import numpy as np; R = np.array([[0, -1], [1, 0]]); print(R @ np.array([2, 1]))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un agrandissement et une symétrie ont leur matrice
La matrice [[2, 0], [0, 2]] double chaque coordonnée : c’est un agrandissement de facteur 2. La matrice [[1, 0], [0, −1]] garde x et change le signe de y.
Le point se retrouve de l’autre côté de l’axe horizontal, comme dans un miroir : c’est une symétrie.
Exemple travaillé : trois matrices sur (3, 2)
| Matrice | Effet | Point obtenu |
|---|---|---|
| [[0, −1], [1, 0]] | quart de tour | (−2, 3) |
| [[2, 0], [0, 2]] | agrandissement par 2 | (6, 4) |
| [[1, 0], [0, −1]] | symétrie par rapport à l’axe horizontal | (3, −2) |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une symétrie avec NumPy
docker exec jupyter python3 -c "import numpy as np; F = np.array([[1, 0], [0, -1]]); print(F @ np.array([3, 2]))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Enchaîner deux transformations multiplie leurs matrices
Pour tourner un point puis l’agrandir par 2, on multiplie la matrice d’agrandissement S par celle de la rotation R. On écrit S fois R.
La matrice écrite à droite agit la première. On obtient [[0, −2], [2, 0]], qui fait les deux d’un seul produit.
Exemple travaillé : tourner puis doubler (2, 1)
| Étape | Point obtenu |
|---|---|
| Départ | (2, 1) |
| Après la rotation R | (−1, 2) |
| Après l’agrandissement S | (−2, 4) |
| Avec la matrice S fois R en une fois | (−2, 4) |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
La matrice de la rotation suivie de l’agrandissement
docker exec jupyter python3 -c "import numpy as np; R = np.array([[0, -1], [1, 0]]); S = np.array([[2, 0], [0, 2]]); print(S @ R)"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup pensent que, dans S fois R, la première matrice écrite agit la première. C’est l’inverse : on lit de droite à gauche, car R touche d’abord le point. Pour tourner puis doubler, écrivez S fois R.
Pour aller plus loin
Une rotation d’un angle quelconque, en degrés, a pour matrice [[cos, −sin], [sin, cos]] de cet angle. Pour 90 degrés, le cosinus vaut 0 et le sinus 1.
Dans un carnet, construisez cette matrice avec np.cos et np.sin : ces fonctions attendent des radians, que np.radians convertit depuis les degrés.