Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Rotation, échelle et symétrie

Après cette leçon: Je peux lire une matrice comme une rotation, un agrandissement ou une symétrie.

Leçon de 60 min3 commandesLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

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

MotCe que ça veut direExemple
Pointun couple de coordonnées x et y(2, 1)
Transformationune règle qui envoie chaque point vers un autre
Rotationun mouvement qui tourne les points autour de l’origine
Symétrieun retournement des points comme dans un miroir
Compositionle 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éeCalculRésultat
Nouveau x0 × 2 + (−1) × 1−1
Nouveau y1 × 2 + 0 × 12
Point obtenude (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

Code: 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

Commande
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)

MatriceEffetPoint 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

Commande
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)

ÉtapePoint 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

Commande
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.

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.