
Intro :
Les transformations géométriques opérées sur des objets 3D sont de 3 types : translation, rotation et mise à l’échelle (agrandissement). Grâce à ces trois transformations, on peut mettre un mouvement un ensemble de points (ou un modèle).
Mais de quoi s’agit-il ?
Une translation est un changement de position d’un point ou de plusieurs points.
Une rotation permet de faire pivoter un point (ou plusieurs points) autour d’un axe par un certain angle.
Une mise à l’échelle permet d’agrandir ou de diminuer la taille d’un objet.
Prérequis :
– Savoir ce qu’est un vecteur
– Savoir ce qu’est une matrice
Explications :
Il existe deux manières de représenter un système de coordonnées : de type gauche ou de type droit.
DirectX utilise un système de coordonnées de type droit tandis que OpenGL utilise un système de coordonnées de type gauche.
On peut se servir des matrices pour représenter une transformation d’un objet dans l’espace de coordonnées 3D.
L’intérêt de la représentation matricielle est principalement qu’on peut combiner à la suite n’importe quelle transformation en une et seule matrice de transformation finale.
Une transformation est une opération qui prend en entrée un vecteur et qui en sortie le converti autrement.
Transformation linéaire :
On précise que mathématiquement une transformation (en l’occurrence linéaire) représente :
Soit la fonction
respectant les propriétés suivantes :
et
avec et
deux vecteurs à 3 composantes.
Ces transformations sont nommées « linéaires » car elles préservent l’addition de vecteurs et la multiplication par un scalaire.
Toutes les transformations linéaires peuvent être représentées par une matrice 3×3 (ou plus).
Pensez que les opérations de rotation ou d’agrandissement sont toutes des transformations linéaires respectant ce dernier principe.
Quant à la transformation de translation, elle n’est pas une transformation linéaire mais une transformation affine.
Une transformation affine est une transformation linéaire qui est suivie d’une translation, elle préserve la colinéarité des vecteurs (caractéristique des vecteurs qui ont la même direction). Ces dernières sont peuvent être représentées par une matrice 4×4.
On remarque que les matrices de rotation et d’agrandissement sont aussi, par quant à elles, des transformations affines !
Pour s’en servir, on multiplie un vecteur qui a besoin d’être transformé par une matrice 4×4 de translation. Ce dernier vecteur doit être en notation « homogeneous » (voir l’article sur les transformations de coordonnées) pour être multiplié par une matrice 4×4.
L’avantage de ces matrices affines, est qu’elles peuvent être combinées les une à la suite des autres en une seule matrice finale qui peut représenter la somme de ces transformations.
La translation :
[schéma / dessin]
Voici la matrice de transformation affine représentant une translation :
Le vecteur représente la valeur de déplacement de la matrice.
Pour changer la position d’un vecteur par cette matrice on fait :
L’inverse de cette matrice (opération inverse) :
L’agrandissement :
Une matrice d’agrandissement permet de faire grossir ou de diminuer un modèle.
Voici la matrice de transformation affine représentant une mise à l’échelle :
Le vecteur représente la grandeur d’agrandissement.
Pour agrandir ou minimiser un vecteur par cette matrice on fait :
L’inverse de cette matrice (opération inverse) :
Si alors la matrice d’agrandissement est dite « uniforme ».
La rotation :
Cette transformation opère une rotation sur un vecteur avec un angle donné et autour d’un axe donné
La matrice de transformation affine sur l’axe des x :
La matrice de transformation affine sur l’axe des y est :
La matrice de transformation affine sur l’axe des z est :
Pour faire pivoter un vecteur par cette matrice on fait :
L’inverse de cette matrice (opération inverse) :
Faire une rotation autour d’un point quelconque :
[image / schéma avec un bonhomme]
On remarque qu’une rotation autour d’un axe d’un point
ne change en rien la position du point
sur l’axe
.
En utilisant ce principe, on déplace le point de façon à ce qu’il coïncide autour de l’origine : la matrice de translation
le permet.
On opère ensuite la rotation sur l’axe par la matrice de rotation
.
Finalement le point doit être remis à sa position initiale par la matrice de translation
.
La transformation finale correspond à cette égalité :
Résumé :
Nous avons présenté les matrices de transformations affines qui permettent de mouvoir les modèles (ensemble de points / vecteurs d’un objet / modèle) à travers la translation, la rotation, et la mise à l’échelle.
Références :
– https://takinginitiative.files.wordpress.com/2010/08/2.pdf
– Shader Approach DirectX 9
– Real Time Rendering – Third edition









