Complément sur les matrices >>
Chapter 5
Matrices et transformations linéaires
Il est temps de se transformer !
— Super WHY!
Le chapitre 4 a examiné certaines des propriétés mathématiques fondamentales des matrices. Il a également développé une compréhension géométrique des matrices et de leur relation aux transformations d’espaces de coordonnées en général. Ce chapitre poursuit notre étude des transformations.
Plus précisément, ce chapitre traite de l’expression des transformations linéaires en 3D à l’aide de matrices . Nous donnons une définition plus formelle des transformations linéaires à la fin de ce chapitre, mais pour l’instant, rappelons de notre introduction informelle aux transformations linéaires dans la section 4.2 qu’une propriété importante des transformations linéaires est qu’elles ne contiennent pas de translation. Une transformation qui contient une translation est appelée transformation affine. Les transformations affines en 3D ne peuvent pas être implémentées avec des matrices . La section 5.7.2 donne une définition formelle des transformations affines, et la section 6.4 montre comment utiliser des matrices pour représenter les transformations affines.
Ce chapitre traite de l’implémentation des transformations linéaires via les matrices. Il est divisé en deux parties. Dans la première partie, les sections 5.1–5.5, nous utilisons les outils fondamentaux des chapitres précédents pour dériver des matrices pour les transformations linéaires primitives : rotation, mise à l’échelle, projection orthographique, réflexion et cisaillement. Pour chaque transformation, des exemples et des équations en 2D et 3D sont donnés. La même stratégie sera utilisée à plusieurs reprises : déterminer ce qui arrive aux vecteurs de base standard à la suite de la transformation, puis placer ces vecteurs de base transformés dans les lignes de notre matrice. Notez que ces discussions supposent une transformation active : l’objet est transformé tandis que l’espace de coordonnées reste stationnaire. Rappelons depuis la section 3.3.1 que nous pouvons effectivement réaliser une transformation passive (transformer l’espace de coordonnées et garder l’objet fixe) en transformant l’objet de la quantité opposée.
Une grande partie de ce chapitre est remplie d’équations complexes et de détails, et vous pourriez être tenté de le sauter — mais ne le faites pas ! Il y a de nombreux principes importants, faciles à assimiler, entrelacés avec les détails sans danger à oublier. Nous pensons qu’il est important de pouvoir comprendre comment diverses matrices de transformation peuvent être dérivées, afin de pouvoir en principe les dériver soi-même depuis le début. Retenez les principes de haut niveau de ce chapitre, et ne vous enlisez pas trop dans les détails. Ce livre ne s’autodétruira pas après votre lecture, alors gardez-le sous la main pour référence lorsque vous avez besoin d’une équation particulière.
La seconde partie de ce chapitre revient aux principes généraux des transformations. La section 5.6 montre comment une séquence de transformations primitives peut être combinée par multiplication matricielle pour former une transformation plus complexe. La section 5.7 aborde diverses catégories intéressantes de transformations, notamment les transformations linéaires, affines, inversibles, conservant les angles, orthogonales, et de corps rigide.
Nous avons déjà vu des exemples généraux de matrices de rotation. Développons maintenant une définition plus rigoureuse. D’abord, la section 5.1.1 examine la rotation 2D. La section 5.1.2 montre comment pivoter autour d’un axe cardinal. Enfin, la section 5.1.3 aborde le cas le plus général de rotation autour d’un axe arbitraire en 3D.
En 2D, il n’y a vraiment qu’un seul type de rotation possible : la rotation autour d’un point. Ce chapitre traite des transformations linéaires, qui ne contiennent pas de translation, donc nous limitons encore davantage notre discussion à la rotation autour de l’origine. Une rotation 2D autour de l’origine n’a qu’un seul paramètre, l’angle , qui définit l’amplitude de la rotation. La convention standard que l’on trouve dans la plupart des livres de mathématiques est de considérer la rotation antihoraire comme positive et la rotation horaire comme négative. (Cependant, différentes conventions sont plus appropriées selon les situations.) La figure 5.1 montre comment les vecteurs de base et sont pivotés autour de l’origine, donnant les nouveaux vecteurs de base et .

Figure 5.1Rotation autour de l’origine en 2D
Maintenant que nous connaissons les valeurs des vecteurs de base après rotation, nous pouvons construire notre matrice :
Matrice de rotation 2D

Figure 5.2Rotation autour de l’axe en 3D
En 3D, la rotation s’effectue autour d’un axe plutôt que d’un point, le terme axe prenant ici son sens courant de droite autour de laquelle quelque chose tourne. Un axe de rotation ne doit pas nécessairement être l’un des axes cardinaux , ou — mais ce sont ces cas particuliers que nous considérons
dans cette section. Encore une fois, nous ne prenons pas en compte la translation dans ce chapitre, donc nous limiterons la discussion à la rotation autour d’un axe passant par l’origine. Dans tous les cas, nous devrons établir quelle direction de rotation est considérée comme « positive » et laquelle comme « négative ». Nous allons respecter la règle de la main gauche pour cela. Relisez la section 1.3.3 si vous avez oublié cette règle.
Commençons par la rotation autour de l’axe , comme illustré dans la figure 5.2. En construisant une matrice à partir des vecteurs de base pivotés, nous obtenons
Matrice 3D de rotation autour de l’axe
La rotation autour de l’axe est similaire (voir la figure 5.3). La matrice de rotation autour de l’axe est
Matrice 3D de rotation autour de l’axe

Figure 5.3Rotation autour de l’axe en 3D

Figure 5.4Rotation autour de l’axe en 3D
Et enfin, la rotation autour de l’axe (voir la figure 5.4) s’effectue avec la matrice
Matrice 3D de rotation autour de l’axe
Notez que bien que les figures de cette section utilisent une convention main gauche, les matrices fonctionnent dans des systèmes de coordonnées main gauche ou main droite, en raison des conventions utilisées pour définir la direction de rotation positive. Vous pouvez le vérifier visuellement en regardant les figures dans un miroir.
Nous pouvons également pivoter autour d’un axe arbitraire en 3D, à condition, bien sûr, que l’axe passe par l’origine, puisque nous ne prenons pas en compte la translation pour l’instant. Cela est plus complexe et moins courant que la rotation autour d’un axe cardinal. Comme précédemment, nous définissons comme l’amplitude de la rotation autour de l’axe. L’axe sera défini par un vecteur unitaire .
Dérivons une matrice pour pivoter autour de d’un angle . En d’autres termes, nous souhaitons dériver la matrice telle que lorsque nous multiplions un vecteur par , le vecteur résultant est le résultat de la rotation de autour de d’un angle :
Pour dériver la matrice , voyons d’abord si nous pouvons exprimer en termes de , , et . L’idée de base est de résoudre le problème dans le plan perpendiculaire à , ce qui est un problème 2D bien plus simple. Pour cela, nous décomposons en deux vecteurs, et , qui sont respectivement parallèle et perpendiculaire à , de sorte que . (Nous avons appris à faire cela avec le produit scalaire dans la section 2.11.2.) En pivotant chacune de ces composantes individuellement, nous pouvons pivoter le vecteur dans son ensemble. En d’autres termes, . Puisque est parallèle à , il ne sera pas affecté par la rotation autour de . En d’autres termes, . Donc tout ce que nous avons à faire est de calculer , et nous aurons . Pour calculer , nous construisons les vecteurs , , et un vecteur intermédiaire , comme suit :
Le vecteur est la composante de parallèle à . Autrement dit, est la valeur de projetée sur . D’après la section 2.11.2, nous savons que .
Le vecteur est la composante de perpendiculaire à . Puisque , peut être calculé par . est le résultat de la projection de sur le plan perpendiculaire à .
Le vecteur est mutuellement perpendiculaire à et et a la même longueur que . Il peut être construit en faisant pivoter de autour de ; ainsi, sa valeur se calcule facilement par .
Ces vecteurs sont montrés dans la figure 5.5.

Figure 5.5 Rotation d’un vecteur autour d’un axe arbitraire
Comment ces vecteurs nous aident-ils à calculer ? Notez que et forment un espace de coordonnées 2D, avec comme « axe » et comme « axe ». (Notez que les deux vecteurs n’ont pas nécessairement une longueur unité.) est le résultat de la rotation de dans ce plan d’un angle . Notez que c’est presque identique à la rotation d’un angle vers la position standard. La section 1.4.4 a montré que les extrémités d’un rayon unitaire pivoté d’un angle sont et . La seule différence ici est que notre rayon n’est pas unitaire, et nous utilisons et comme vecteurs de base. Ainsi, peut être calculé comme
Résumons les vecteurs que nous avons calculés :
En substituant pour , nous obtenons
L’équation (5.1) nous permet de faire pivoter n’importe quel vecteur arbitraire autour de n’importe quel axe arbitraire. Nous pourrions effectuer des transformations de rotation arbitraires en n’utilisant que cette équation, donc en un sens nous avons terminé — l’arithmétique restante est essentiellement un changement de notation qui exprime l’équation (5.1) sous forme de multiplication matricielle.
Maintenant que nous avons exprimé en termes de , , et , nous pouvons calculer ce que deviennent les vecteurs de base après transformation et construire notre matrice. Nous présentons simplement les résultats ici ; un lecteur souhaitant suivre chaque étape peut consulter l’exercice 2.24 :
Notez que et ses homologues sont en réalité des vecteurs lignes, nous les écrivons simplement comme des vecteurs colonnes transposés pour tenir sur la page.
En construisant la matrice à partir de ces vecteurs de base, nous obtenons
Matrice 3D de rotation autour d’un axe arbitraire
Nous pouvons mettre à l’échelle un objet pour le rendre proportionnellement plus grand ou plus petit d’un facteur . Si nous appliquons cette mise à l’échelle à l’objet entier, « dilatant » ainsi l’objet autour de l’origine, nous effectuons une mise à l’échelle uniforme. La mise à l’échelle uniforme préserve les angles et les proportions. Les longueurs augmentent ou diminuent uniformément d’un facteur , les aires d’un facteur , et les volumes (en 3D) d’un facteur .
Si nous souhaitons « étirer » ou « écraser » l’objet, nous pouvons appliquer des facteurs de mise à l’échelle différents dans des directions différentes, ce qui donne une mise à l’échelle non uniforme. La mise à l’échelle non uniforme ne préserve pas les angles. Les longueurs, aires et volumes sont ajustés par un facteur qui varie selon l’orientation relative à la direction de mise à l’échelle.
Si , l’objet devient « plus petit » dans cette direction. Si , l’objet devient « plus grand ». Si , nous avons une projection orthographique, traitée dans la section 5.3. Si , nous avons une réflexion, couverte dans la section 5.4. Pour le reste de cette section, nous supposerons que .
La section 5.2.1 commence par le cas simple de la mise à l’échelle le long des axes cardinaux. Puis la section 5.2.2 examine le cas général, la mise à l’échelle le long d’un axe arbitraire.
L’opération de mise à l’échelle la plus simple applique un facteur de mise à l’échelle distinct le long de chaque axe cardinal. La mise à l’échelle le long d’un axe est appliquée par rapport à l’axe (en 2D) ou au plan (en 3D) perpendiculaire. Si les facteurs de mise à l’échelle sont égaux pour tous les axes, la mise à l’échelle est uniforme ; sinon, elle est non uniforme.
En 2D, nous avons deux facteurs de mise à l’échelle, et . La figure 5.6 montre un objet avec diverses valeurs de et .

Figure 5.6Mise à l’échelle d’un objet 2D avec divers facteurs pour et
Comme il est intuitivement évident, les vecteurs de base et sont affectés indépendamment par les facteurs de mise à l’échelle correspondants :
En construisant la matrice de mise à l’échelle 2D à partir de ces vecteurs de base, nous obtenons
Matrice 2D de mise à l’échelle sur les axes cardinaux
En 3D, nous ajoutons un troisième facteur , et la matrice de mise à l’échelle 3D est alors donnée par
Matrice 3D de mise à l’échelle sur les axes cardinaux
Si nous multiplions n’importe quel vecteur arbitraire par cette matrice, alors, comme prévu, chaque composante est mise à l’échelle par le facteur approprié :
Nous pouvons appliquer une mise à l’échelle indépendamment du système de coordonnées utilisé en mettant à l’échelle dans une direction arbitraire. Définissons comme le vecteur unitaire parallèle à la direction de mise à l’échelle, et comme le facteur de mise à l’échelle à appliquer par rapport à la droite (en 2D) ou au plan (en 3D) qui passe par l’origine et est perpendiculaire à . Nous mettons à l’échelle le long de , et non autour de .
Pour dériver une matrice qui met à l’échelle le long d’un axe arbitraire, nous utiliserons une approche similaire à celle utilisée dans la section 5.1.3 pour la rotation autour d’un axe arbitraire. Dérivons une expression qui, étant donné un vecteur arbitraire , calcule en termes de , , et . Comme précédemment, nous décomposons en deux valeurs, et , qui sont respectivement parallèle et perpendiculaire à , de sorte que . La composante parallèle, , est la projection de sur . D’après la section 2.11.2, nous savons que . Puisque est perpendiculaire à , il ne sera pas affecté par l’opération de mise à l’échelle. Ainsi , et tout ce qu’il reste à faire est de calculer la valeur de . Puisque est parallèle à la direction de mise à l’échelle, est trivialement donné par . Cela est illustré dans la figure 5.7.

Figure 5.7 Mise à l’échelle d’un vecteur dans une direction arbitraire
Résumer les vecteurs connus et substituer nous donne
Maintenant que nous savons comment mettre à l’échelle un vecteur arbitraire, nous pouvons calculer la valeur des vecteurs de base après la mise à l’échelle. Nous dérivons le premier vecteur de base 2D ; l’autre vecteur de base est similaire, et nous présentons simplement les résultats. (Notez que des vecteurs colonnes sont utilisés dans les équations ci-dessous uniquement pour que les équations s’affichent bien sur la page.) :
En formant une matrice à partir des vecteurs de base, nous arrivons à la matrice 2D de mise à l’échelle d’un facteur dans une direction arbitraire spécifiée par le vecteur unitaire :
Matrice 2D de mise à l’échelle dans une direction arbitraire
En 3D, les valeurs des vecteurs de base sont calculées par
Un lecteur suspicieux qui se demande si nous avons simplement inventé cela peut suivre la dérivation dans l’exercice 2.23.
Enfin, la matrice 3D de mise à l’échelle d’un facteur dans une direction arbitraire spécifiée par le vecteur unitaire est
Matrice 3D de mise à l’échelle dans une direction arbitraire
En général, le terme projection désigne toute opération qui réduit la dimension. Comme nous l’avons discuté dans la section 5.2, une façon d’obtenir une projection est d’utiliser un facteur de mise à l’échelle nul dans une direction. Dans ce cas, tous les points sont aplatis ou projetés sur l’axe (en 2D) ou le plan (en 3D) perpendiculaire. Ce type de projection est une projection orthographique, également connue sous le nom de projection parallèle, car les droites reliant les points originaux à leurs homologues projetés sont parallèles. Nous présentons un autre type de projection, la projection en perspective, dans la section 6.5.
D’abord, la section 5.3.1 traite de la projection orthographique sur un axe ou plan cardinal, puis la section 5.3.2 examine le cas général.
Le type de projection le plus simple se produit lorsque nous projetons sur un axe cardinal (en 2D) ou un plan (en 3D). Cela est illustré dans la figure 5.8.
Figure 5.8Projection d’un objet 3D sur un plan cardinal
La projection sur un axe ou plan cardinal se produit le plus souvent non pas par une transformation réelle, mais simplement en supprimant l’une des coordonnées lors de l’assignation des données dans une variable de dimension inférieure. Par exemple, nous pouvons transformer un objet 3D en objet 2D en supprimant les composantes des points et en ne copiant que et .
Cependant, nous pouvons également projeter sur un axe ou plan cardinal en utilisant une valeur de mise à l’échelle nulle sur l’axe perpendiculaire. Par souci d’exhaustivité, nous présentons les matrices pour ces transformations :
Projection sur un axe cardinal
Projection sur un plan cardinal
Nous pouvons également projeter sur n’importe quelle droite arbitraire (en 2D) ou plan (en 3D). Comme précédemment, puisque nous ne prenons pas en compte la translation, la droite ou le plan doit passer par l’origine. La projection sera définie par un vecteur unitaire perpendiculaire à la droite ou au plan.
Nous pouvons dériver la matrice de projection dans une direction arbitraire en appliquant un facteur de mise à l’échelle nul dans cette direction, en utilisant les équations développées dans la section 5.2.2. En 2D, nous avons
Matrice 2D de projection sur une droite arbitraire
Rappelons que est perpendiculaire à la droite sur laquelle nous projetons, et non parallèle à elle. En 3D, nous projetons sur le plan perpendiculaire à :
Matrice 3D de projection sur un plan arbitraire
La réflexion (également appelée miroir) est une transformation qui « retourne » l’objet par rapport à une droite (en 2D) ou un plan (en 3D). La figure 5.9 montre le résultat de la réflexion d’un objet par rapport à l’axe et à l’axe .

Figure 5.9 Réflexion d’un objet par rapport à un axe en 2D
La réflexion peut être obtenue en appliquant un facteur de mise à l’échelle de . Soit un vecteur unitaire 2D. Alors la matrice qui effectue une réflexion par rapport à l’axe de réflexion passant par l’origine et perpendiculaire à est donnée par
Matrice 2D de réflexion par rapport à un axe arbitraire
En 3D, nous avons un plan de réflexion plutôt qu’un axe. Pour que la transformation soit linéaire, le plan doit contenir l’origine, auquel cas la matrice effectuant la réflexion est
Matrice 3D de réflexion par rapport à un plan arbitraire
Notez qu’un objet ne peut être « réfléchi » qu’une seule fois. Si nous le réfléchissons à nouveau (même par rapport à un axe ou plan différent), l’objet est retourné vers son état initial, et c’est la même chose que si nous avions fait pivoter l’objet depuis sa position initiale. Un exemple de cela est montré dans le coin inférieur gauche de la figure 5.9.

Figure 5.10Cisaillement en 2D
Le cisaillement est une transformation qui « déforme » l’espace de coordonnées, l’étirant de façon non uniforme. Les angles ne sont pas préservés ; cependant, de façon surprenante, les aires et les volumes le sont. L’idée de base est d’ajouter un multiple d’une coordonnée à l’autre. Par exemple, en 2D, nous pourrions prendre un multiple de et l’ajouter à , de sorte que . Cela est illustré dans la figure 5.10.
La matrice qui effectue ce cisaillement est
où la notation indique que la coordonnée est cisaillée par l’autre coordonnée, . Le paramètre contrôle l’amplitude et la direction du cisaillement. L’autre matrice de cisaillement 2D, , est
En 3D, nous pouvons prendre une coordonnée et ajouter différents multiples de cette coordonnée aux deux autres coordonnées. La notation indique que les coordonnées et sont décalées par l’autre coordonnée, . Nous présentons ces matrices par souci d’exhaustivité :
Matrices de cisaillement 3D
Le cisaillement est une transformation rarement utilisée. Il est également connu sous le nom de transformation de déformation oblique. Combiner cisaillement et mise à l’échelle (uniforme ou non uniforme) crée une transformation indiscernable d’une transformation contenant rotation et mise à l’échelle non uniforme.
Cette section montre comment prendre une séquence de matrices de transformation et les combiner (ou les concaténer) en une seule matrice de transformation. Cette nouvelle matrice représente le résultat cumulatif de l’application de toutes les transformations originales dans l’ordre. C’est en fait assez simple. La transformation résultant de l’application de la transformation avec la matrice suivie de la transformation avec la matrice a pour matrice . C’est-à-dire que la multiplication matricielle est la façon de composer des transformations représentées sous forme de matrices.
Un exemple très courant de cela se trouve dans le rendu. Imaginez qu’il y ait un objet à une position et une orientation arbitraires dans le monde. Nous souhaitons rendre cet objet étant donné une caméra dans n’importe quelle position et orientation. Pour ce faire, nous devons prendre les sommets de l’objet (en supposant que nous rendons une sorte de maillage triangulaire) et les transformer de l’espace objet vers l’espace monde. Cette transformation est connue sous le nom de transformation de modèle, que nous notons . À partir de là, nous transformons les sommets en espace monde avec la transformation de vue, notée , vers l’espace caméra. Les mathématiques impliquées se résument à
D’après la section 4.1.6, nous savons que la multiplication matricielle est associative, et nous pourrions donc calculer une seule matrice pour transformer directement de l’espace objet vers l’espace caméra :
Ainsi, nous pouvons concaténer les matrices en dehors de la boucle sur les sommets, et n’avoir qu’une seule multiplication matricielle à l’intérieur de la boucle (rappelons qu’il y a de nombreux sommets) :
Nous voyons donc que la concaténation matricielle fonctionne d’un point de vue algébrique en utilisant la propriété associative de la multiplication matricielle. Essayons d’obtenir une interprétation plus géométrique de ce qui se passe. Rappelons depuis la section 4.2, notre découverte majeure, que les lignes d’une matrice contiennent le résultat de la transformation des vecteurs de base standard. Cela est vrai même dans le cas de transformations multiples. Notez que dans le produit matriciel , chaque ligne résultante est le produit de la ligne correspondante de par la matrice . En d’autres termes, si les vecteurs lignes , , et représentent les lignes de . Alors la multiplication matricielle peut s’écrire alternativement comme
Cela montre explicitement que les lignes du produit sont en réalité le résultat de la transformation des vecteurs de base de par .
Nous pouvons classer les transformations selon plusieurs critères. Cette section traite des catégories de transformations. Pour chaque catégorie, nous décrivons les propriétés des transformations qui lui appartiennent et précisons lesquelles des transformations primitives des sections 5.1 à 5.5 appartiennent à cette catégorie. Les catégories de transformations ne sont pas mutuellement exclusives, et elles ne suivent pas nécessairement un « ordre » ou une « hiérarchie », chacune étant plus ou moins restrictive que la suivante.
Lorsque nous parlons de transformations en général, nous pouvons utiliser les termes synonymes application ou fonction. Dans le sens le plus général, une application est simplement une règle qui prend une entrée et produit une sortie. Nous notons que l’application envoie sur en écrivant (lire « de est égal à »). Bien sûr, nous nous intéressons principalement aux transformations qui peuvent être exprimées par une multiplication matricielle, mais il est important de noter que d’autres applications sont possibles.
Cette section mentionne également le déterminant d’une matrice. Nous anticipons un peu ici, car une explication complète des déterminants n’est donnée qu’en la section 6.1. Pour l’instant, sachez simplement que le déterminant d’une matrice est une quantité scalaire très utile pour faire certaines déterminations de haut niveau sur la matrice.
Nous avons rencontré les fonctions linéaires de façon informelle dans la section 4.2. Mathématiquement, une application est linéaire si
Conditions satisfaites si est une application linéaire
C’est une façon élaborée d’affirmer que l’application est linéaire si elle préserve les opérations fondamentales d’addition et de multiplication par un scalaire. Si nous additionnons deux vecteurs, puis effectuons la transformation, nous obtenons le même résultat que si nous effectuons la transformation sur les deux vecteurs individuellement puis additionnons les vecteurs transformés. De même, si nous mettons à l’échelle un vecteur puis le transformons, nous devrions obtenir le même vecteur résultant que si nous transformons le vecteur puis le mettons à l’échelle.
Il y a deux implications importantes de cette définition de transformation linéaire. Premièrement, l’application , où est n’importe quelle matrice carrée, est une transformation linéaire, car
La multiplication matricielle satisfait l’équation (5.2)
et
La multiplication matricielle satisfait l’équation (5.3)
En d’autres termes :
Toute transformation qui peut être accomplie par une multiplication matricielle est une transformation linéaire.
Deuxièmement, toute transformation linéaire transforme le vecteur nul en vecteur nul. Si , alors ne peut pas être une application linéaire, car et donc . De ce fait,
Les transformations linéaires ne contiennent pas de translation.
Puisque toutes les transformations que nous avons discutées dans les sections 5.1 à 5.5 peuvent être exprimées par une multiplication matricielle, ce sont toutes des transformations linéaires.
Dans certains ouvrages, une transformation linéaire est définie comme celle dans laquelle les droites parallèles restent parallèles après la transformation. Cela est presque totalement exact, à deux exceptions près. Premièrement, les droites parallèles restent parallèles après une translation, mais la translation n’est pas une transformation linéaire. Deuxièmement, qu’en est-il de la projection ? Lorsqu’une droite est projetée et devient un point unique, peut-on considérer ce point comme « parallèle » à quoi que ce soit ? En excluant ces subtilités techniques, l’intuition est correcte : une transformation linéaire peut « étirer » les choses, mais les droites ne sont pas « tordues » et les droites parallèles restent parallèles.
Une transformation affine est une transformation linéaire suivie d’une translation. Ainsi, l’ensemble des transformations affines est un sur-ensemble de l’ensemble des transformations linéaires : toute transformation linéaire est une transformation affine, mais toutes les transformations affines ne sont pas des transformations linéaires.
Puisque toutes les transformations discutées dans ce chapitre sont des transformations linéaires, elles sont également toutes des transformations affines (bien qu’aucune d’elles n’ait de composante de translation). Toute transformation de la forme est une transformation affine.
Une transformation est inversible s’il existe une transformation opposée, appelée inverse de , qui « annule » la transformation originale. En d’autres termes, une application est inversible s’il existe une application inverse telle que
pour tout . Notez que cela implique que est également inversible.
Il existe des transformations non affines inversibles, mais nous ne les considérerons pas pour l’instant. Pour l’instant, concentrons-nous sur la détermination de si une transformation affine est inversible. Comme déjà indiqué, une transformation affine est une transformation linéaire suivie d’une translation. De toute évidence, nous pouvons toujours « annuler » la composante de translation en effectuant simplement une translation de la quantité opposée. La question devient donc de savoir si la transformation linéaire est inversible.
Intuitivement, nous savons que toutes les transformations autres que la projection peuvent être « annulées ». Si nous pivotons, mettons à l’échelle, réfléchissons ou cisaillons, nous pouvons toujours « annuler la rotation », « annuler la mise à l’échelle », « annuler la réflexion » ou « annuler le cisaillement ». Mais quand un objet est projeté, nous supprimons effectivement une ou plusieurs dimensions d’information, et cette information ne peut pas être récupérée. Ainsi, toutes les transformations primitives autres que la projection sont inversibles.
Puisque toute transformation linéaire peut être exprimée comme une multiplication par une matrice, trouver l’inverse d’une transformation linéaire est équivalent à trouver l’inverse d’une matrice. Nous discutons de la façon de le faire dans la section 6.2. Si la matrice n’a pas d’inverse, nous disons qu’elle est singulière, et la transformation n’est pas inversible. Le déterminant d’une matrice inversible est non nul.
Dans une matrice non singulière, le vecteur nul est le seul vecteur d’entrée qui est mappé vers le vecteur nul dans l’espace de sortie ; tous les autres vecteurs sont mappés vers un autre vecteur non nul. Dans une matrice singulière, cependant, il existe tout un sous-espace des vecteurs d’entrée, appelé le noyau de la matrice, qui est mappé vers le vecteur nul. Par exemple, considérons une matrice qui projette orthographiquement sur un plan contenant l’origine. Le noyau de cette matrice consiste en la droite de vecteurs perpendiculaires au plan, car ils sont tous mappés vers l’origine.
Lorsqu’une matrice carrée est singulière, ses vecteurs de base ne sont pas linéairement indépendants (voir la section 3.3.3). Si les vecteurs de base sont linéairement indépendants, ils ont le rang plein, et les coordonnées de tout vecteur donné dans l’espace engendré sont uniquement déterminées. Si les vecteurs sont linéairement dépendants, il existe une portion de l’espace -dimensionnel complet qui n’est pas dans l’espace engendré par la base. Considérons deux vecteurs et , qui diffèrent d’un vecteur appartenant au noyau d’une matrice , de sorte que . En raison de la nature linéaire de la multiplication matricielle, envoie et vers la même sortie :
Une transformation conserve les angles si l’angle entre deux vecteurs n’est pas modifié ni en amplitude ni en direction après la transformation. Seules la translation, la rotation et la mise à l’échelle uniforme sont des transformations conservant les angles. Une matrice conservant les angles préserve les proportions. Nous ne considérons pas la réflexion comme une transformation conservant les angles car, même si l’amplitude de l’angle entre deux vecteurs est la même après la transformation, la direction de l’angle peut être inversée. Toutes les transformations conservant les angles sont affines et inversibles.
Orthogonal est un terme utilisé pour décrire une matrice dont les lignes forment une base orthonormée. Rappelons de la section 3.3.3 que l’idée de base est que les axes sont perpendiculaires les uns aux autres et ont une longueur unité. Les transformations orthogonales sont intéressantes car il est facile de calculer leur inverse et elles apparaissent fréquemment en pratique. Nous parlons davantage des matrices orthogonales dans la section 6.3.
La translation, la rotation et la réflexion sont les seules transformations orthogonales. Toutes les transformations orthogonales sont affines et inversibles. Les longueurs, angles, aires et volumes sont tous préservés ; cependant, en affirmant cela, nous devons être prudents dans notre définition précise d’angle, d’aire et de volume, car la réflexion est une transformation orthogonale et nous venons de dire dans la section précédente que nous ne considérons pas la réflexion comme une transformation conservant les angles. Peut-être devrions-nous être plus précis et dire que les matrices orthogonales préservent les amplitudes des angles, des aires et des volumes, mais peut-être pas leurs signes.
Comme le montre le chapitre 6, le déterminant d’une matrice orthogonale est .
Une transformation de corps rigide est une transformation qui modifie la position et l’orientation d’un objet, mais pas sa forme. Tous les angles, longueurs, aires et volumes sont préservés. La translation et la rotation sont les seules transformations de corps rigide. La réflexion n’est pas considérée comme une transformation de corps rigide.
Les transformations de corps rigide sont également connues sous le nom de transformations propres. Toutes les transformations de corps rigide sont orthogonales, conservent les angles, sont inversibles et affines. Les transformations de corps rigide sont la catégorie la plus restrictive discutée dans cette section, mais elles sont aussi extrêmement courantes en pratique.
Le déterminant de toute matrice de transformation de corps rigide est 1.
Le tableau 5.1 résume les différentes catégories de transformations. Dans ce tableau, Y signifie que la transformation de cette ligne possède toujours la propriété associée à cette colonne. L’absence de Y ne signifie pas « jamais » ; cela signifie plutôt « pas toujours ».
| Transformation | Linéaire | Affine | Inversible | Angles préservés | Orthogonale | Corps rigide | Longueurs préservées | Aires/volumes préservés | Déterminant |
| Transformationslinéaires | Y | Y | |||||||
| Transformationsaffines | Y | ||||||||
| Transformationsinversibles | Y | ||||||||
| Transformations conservant les angles | Y | Y | Y | ||||||
| Transformationsorthogonales | Y | Y | Y | ||||||
| Transformations decorps rigide | Y | Y | Y | Y | Y | Y | Y | 1 | |
| Translation | Y | Y | Y | Y | Y | Y | Y | 1 | |
| Rotation1 | Y | Y | Y | Y | Y | Y | Y | Y | 1 |
| Mise à l’échelle uniforme2 | Y | Y | Y | Y | 3 | ||||
| Mise à l’échellenon uniforme | Y | Y | Y | ||||||
| Projectionorthographique4 | Y | Y | 0 | ||||||
| Réflexion5 | Y | Y | Y | Y | Y6 | Y | |||
| Cisaillement | Y | Y | Y | Y7 | 1 |
| 1 | Autour de l’origine en 2D ou d’un axe passant par l’origine en 3D. |
| 2 | Autour de l’origine en 2D ou d’un axe passant par l’origine en 3D. |
| 3 | Le déterminant est le carré du facteur de mise à l’échelle en 2D, et son cube en 3D. |
| 4 | Sur une droite (2D) ou un plan (3D) passant par l’origine. |
| 5 | Par rapport à une droite (2D) ou un plan (3D) passant par l’origine. |
| 6 | Sans considérer l’aire ou le volume « négatif ». |
| 7 | Surprenant ! |
Tableau 5.1Types de transformations
La matrice ci-dessous exprime-t-elle une transformation linéaire ? Affine ?
Construisez une matrice pour pivoter de autour de l’axe .
Construisez une matrice pour pivoter de autour de l’axe .
Construisez une matrice pour pivoter de autour de l’axe .
Construisez une matrice qui double la hauteur, la largeur et la profondeur d’un objet en 3D.
Construisez une matrice pour mettre à l’échelle d’un facteur 5 par rapport au plan passant par l’origine et perpendiculaire au vecteur .
Construisez une matrice pour projeter orthographiquement sur le plan passant par l’origine et perpendiculaire au vecteur .
Construisez une matrice pour réfléchir orthographiquement par rapport au plan passant par l’origine et perpendiculaire au vecteur .
Un objet avait initialement ses axes et son origine coïncidant avec les axes et l’origine du monde. Il a ensuite été pivoté de autour de l’axe puis de autour de l’axe du monde.
(a)Quelle est la matrice qui peut être utilisée pour transformer des vecteurs lignes de l’espace objet vers l’espace monde ?
(b)Et la matrice pour transformer des vecteurs de l’espace monde vers l’espace objet ?
(c)Exprimez l’axe de l’objet en coordonnées verticales.
À l’envers
Garçon, tu me retournes
À l’intérieur et à l’extérieur
Et en rond et en rond
— Upside Down (1980) de Diana Ross
Retour en haut