Coordonnées homogènes
# Coordonnées homogènes

En mathématiques, et plus particulièrement en géométrie projective, les coordonnées homogènes (ou coordonnées projectives), introduites par August Ferdinand Möbius, rendent les calculs possibles dans l'espace projectif, comme les coordonnées cartésiennes le font dans l'espace euclidien.

Les coordonnées homogènes sont largement utilisées en infographie et plus particulièrement pour la représentation de scènes en trois dimensions, car elles sont adaptées à la géométrie projective et elles permettent de caractériser les transformations de l'espace. La notation sous forme matricielle est plus particulièrement employée dans les bibliothèques de programmation graphique 3D telles que OpenGL et Direct3D.

## Premières notations et interprétations

Les coordonnées homogènes d'un point de l'espace projectif de dimension n sont écrites habituellement comme (x : y : z :… : w), un vecteur de longueur n+1, autre que (0 : 0 : 0 :… : 0). Deux ensembles de coordonnées qui sont proportionnels dénotent le même point d'espace projectif : pour tout scalaire non nul c pris du corps de base K, (cx : cy : cz :… : cw) est équivalent à (x, y, z, w). Ainsi, ce système de coordonnées introduit des classes d'équivalence constituées de vecteurs colinéaires. Prenant l'exemple de l'espace projectif de dimension trois, les coordonnées homogènes seront (x : y : z : w).

L'espace projectif construit permet de caractériser le plan à l'infini. Celui-ci est fréquemment défini par l'ensemble des points ou vecteurs ayant pour dernière coordonnée w = 0, appelés points à l'infini. Hors de ce plan, nous pouvons utiliser (x/w, y/w, z/w) comme un système cartésien ordinaire ; donc l'espace affine complémentaire au plan à l'infini est coordonné dans une forme familière, avec une base correspondant à (1 : 0 : 0 : 1), (0 : 1 : 0 : 1), (0 : 0 : 1 : 1).

Par exemple, si on veut déterminer l'intersection de deux plans définis par les équations x = w et x = 2w (dont la partie affine correspond aux deux plans parallèles au plan Oyz d'équations x = 1 et x = 2), on vérifie aisément l'équivalence avec w = 0 et x = 0. Cela indique que l'intersection est contenue dans le plan à l'infini et est formée de tous les points avec des coordonnées (0 : y : z : 0). C'est une droite, joignant les deux points (0 : 1 : 0 : 0) et (0 : 0 : 1 : 0), et donnée par les équations paramétriques $(0:y:z:0)=\mu (1-\lambda )(0:1:0:0)+\mu \lambda (0:0:1:0)$ où µ est un paramètre (scalaire). Ce paramètre peut être ajusté pour normaliser les coordonnés (0 : y : z : 0), donc éliminant l'un des deux degrés de liberté. Le résultat est un ensemble de points avec un seul degré de liberté comme cela est attendu d'une droite. Ce genre de calculs justifie toutes les phrases d'allure paradoxale affirmant que « les parallèles se coupent à l'infini ».

## Courbes et surfaces algébriques

L'hyperbole équilatère d'équation affine $x^{2}-y^{2}=1$ peut se prolonger au plan projectif en considérant les points (X : Y : Z) vérifiant $X^{2}-Y^{2}=Z^{2}$ (qui contient les points précédents, ainsi que les deux points à l'infini (1 : 1 : 0) et (1 : -1 : 0) ; on déterminerait par exemple les asymptotes de l'hyperbole et écrivant l'équation des tangentes à la courbe en ces deux points). On dit qu'on a homogénéisé l'équation affine.

Plus généralement, si on identifie l'espace affine ${\mathbb {R} }^{n}$ avec les points de l'espace projectif de dernière coordonnée non nulle (autrement dit, on pose $(x_{1},x_{2},\dots ,x_{n})=(x_{1}:x_{2}:\dots :x_{n}:1)$), l'hypersurface (algébrique) d'équation implicite $P(x_{1},x_{2},\dots ,x_{n})=0$ est prolongée dans l'espace projectif par l'équation implicite $Q(X_{1},X_{2},\dots ,X_{n},Z)=0$, où Q est le polynôme homogène associé à P par la formule $Q(X_{1},X_{2},\dots ,X_{n},Z)=Z^{d}P(X_{1}/Z,X_{2}/Z,\dots ,X_{n}/Z)$, d étant le degré (total) de P.

## Transformations géométriques en coordonnées homogènes

### Transformations affines

Les transformations affines sont les applications de l'espace composées d'une application linéaire et d'une translation, comme les rotations, les translations, les homothéties, les projections ainsi que les changements de repères ; elles peuvent être considérées comme des transformations projectives laissant globalement invariant le plan à l'infini ; en coordonnées homogènes, elles peuvent donc être représentées sous la forme d'une matrice de taille 4×4 dont la dernière ligne est toujours (0 0 0 1). Les sections suivantes détaillent certaines de ces représentations.

**Translations**

La matrice traduisant une translation dans l'espace écrite sous la forme d'un vecteur $(t_{x}:t_{y}:t_{z})$ est de la forme :

    $\left[{\begin{matrix}1&0&0&t_{x}\\0&1&0&t_{y}\\0&0&1&t_{z}\\0&0&0&1\end{matrix}}\right]$

En effet, si l'on calcule les coordonnées du point M' de coordonnées $(sX':sY':sZ':s)$ qui est l'image de M par la translation citée, on applique la multiplication matricielle suivante :

    $\left[{\begin{matrix}sX'\\sY'\\sZ'\\s\end{matrix}}\right]=\left[{\begin{matrix}1&0&0&t_{x}\\0&1&0&t_{y}\\0&0&1&t_{z}\\0&0&0&1\end{matrix}}\right]\left[{\begin{matrix}X\\Y\\Z\\1\end{matrix}}\right]$

Ce qui donne bien :

    ${\begin{cases}sX'=t_{x}+X\\sY'=t_{y}+Y\\sZ'=t_{z}+Z\\s=1\end{cases}}$

Plus généralement, toute transformation affine est composée d'une application linéaire et de la translation amenant l'origine du repère sur son image ; sa matrice est donc de la forme

    $\left[{\begin{matrix}a&b&c&t_{x}\\a'&b'&c'&t_{y}\\a''&b''&c''&t_{z}\\0&0&0&1\end{matrix}}\right]$

où la sous-matrice

    $\left[{\begin{matrix}a&b&c\\a'&b'&c'\\a''&b''&c''\end{matrix}}\right]$

représente l'application linéaire en question.

**Rotations**

Une rotation dans l'espace peut être aussi notée sous forme matricielle. L'opérateur sera de la forme :

    $\left[{\begin{matrix}R_{3\times 3}&0_{3\times 1}\\0_{1\times 3}&1\end{matrix}}\right]$

La sous-matrice $R_{3×3}$ désigne ici une matrice de rotation telle qu'elle est habituellement définie dans l'espace. Si l'on prend un repère de l'espace $(O,{\vec {i}},{\vec {j}},{\vec {k}})$, nous obtenons les rotations suivantes autour des axes principaux :

* rotation d'angle α autour de ${\vec {i}}$ :

    $\left[{\begin{matrix}1&0&0&0\\0&\cos(\alpha )&-\sin(\alpha )&0\\0&\sin(\alpha )&\cos(\alpha )&0\\0&0&0&1\end{matrix}}\right]$
* rotation d'angle β autour de ${\vec {j}}$ :

    $\left[{\begin{matrix}\cos(\beta )&0&\sin(\beta )&0\\0&1&0&0\\-\sin(\beta )&0&\cos(\beta )&0\\0&0&0&1\end{matrix}}\right]$
* rotation d'angle γ autour de ${\vec {k}}$ :

    $\left[{\begin{matrix}\cos(\gamma )&-\sin(\gamma )&0&0\\\sin(\gamma )&\cos(\gamma )&0&0\\0&0&1&0\\0&0&0&1\end{matrix}}\right]$

**Projections**

Dans une projection, les points sont projetés suivant une direction déterminée sur un plan situé à une distance f de l'origine suivant la direction ${\vec {k}}$. La projection orthographique est parfois interprétée comme étant une projection perspective dans laquelle le point de perspective est rejeté à l'infini. La matrice de transformation associée est alors la suivante :

    $\left[{\begin{matrix}1&0&0&0\\0&1&0&0\\0&0&0&f\\0&0&0&1\end{matrix}}\right]$

**Application au changement de repère isométrique**

Les coordonnées homogènes prennent tout leur intérêt dans ce cas précis. En effet, cette notation permet de traduire les changements de repère. Si le nouveau repère a son origine translatée par rapport à l'ancien d'un vecteur $t_{3\times 1}=(t_{x}:t_{y}:t_{z})$ et voit sa base dans le même temps changée, la matrice de changement de base étant notée $R_{3×3},$ alors les coordonnées du point M notées $(X',Y',Z',1)$ dans le nouveau repère seront liées aux coordonnées $(X,Y,Z,1)$ exprimées dans l'ancien repère par la relation :

    $\left[{\begin{matrix}sX\\sY\\sZ\\s\end{matrix}}\right]=\left[{\begin{matrix}&&&\\&R_{3\times 3}&&t_{3\times 1}\\&&&\\0&0&0&1\end{matrix}}\right]\left[{\begin{matrix}X'\\Y'\\Z'\\1\end{matrix}}\right]$

Les coordonnées dans le nouveau repère en fonction de celles dans l'ancien se déterminent alors en inversant la matrice précédente. Ce qui donne :

    $\left[{\begin{matrix}sX'\\sY'\\sZ'\\s\end{matrix}}\right]=\left[{\begin{matrix}&&&\\&R_{3\times 3}^{T}&&-R_{3\times 3}^{T}t_{3\times 1}\\&&&\\0&0&0&1\end{matrix}}\right]\left[{\begin{matrix}X\\Y\\Z\\1\end{matrix}}\right]$

où $R_{3×3}^T$ représente la matrice transposée de $R_{3×3}.$

### Transformations projectives

**Projection gnomonique**

On se place dans le cas d'une projection sur un plan $({\vec {i}},{\vec {j}})$ situé à une distance f de l'origine suivant la direction ${\vec {k}}$. Les points projetés sont ici sur la droite passant par l'origine et le point à projeter. La matrice est alors exprimée sous la forme suivante :

    $\left[{\begin{matrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&1/f&0\end{matrix}}\right]$

En effet, si l'on calcule les coordonnées du point projeté M' de coordonnées $(sX':sY':sZ':s1)$ qui est l'image de $M(X:Y:Z:1)$ par la projection citée, nous obtenons :

    ${\begin{cases}sX'=X\\sY'=Y\\sZ'=Z\\s=Z/f\end{cases}}\quad \Leftrightarrow \quad {\begin{cases}X'=fX/Z\\Y'=fY/Z\\Z'=f\\\end{cases}}$

Ceci est conforme puisque la troisième coordonnée du point est bien f, comme attendu.

Comme la troisième coordonnée est toujours connue (égale à f), il est possible de déterminer directement les coordonnées 2D sur le plan lui-même. Nous avons alors le passage de coordonnées homogènes 3D à des coordonnées homogènes 2D. Si l'on prend M' de coordonnées sur le plan $(sx',sy',s)$ image de M de coordonnées $(X,Y,Z,1)$ alors la relation liant les deux points sera écrite sous la forme :

    $\left[{\begin{matrix}sx'\\sy'\\s\\\end{matrix}}\right]=\left[{\begin{matrix}f&0&0&0\\0&f&0&0\\0&0&1&0\\\end{matrix}}\right]\left[{\begin{matrix}X\\Y\\Z\\1\\\end{matrix}}\right]$

Ce qui est équivalent au système

    ${\begin{cases}sx'=fX\\sy'=fY\\s=Z\\\end{cases}}\quad \Leftrightarrow \quad {\begin{cases}x'=fX/Z\\y'=fY/Z\\s=Z\\\end{cases}}$

On retrouve alors les mêmes valeurs que précédemment (x' = X' et y' = Y'). On a ainsi une formulation qui donne directement les coordonnées du point projeté sur le plan considéré.

## Relation avec les coordonnées barycentriques

On peut interpréter les coordonnées homogènes du point M, (X : Y : Z : T), comme les coordonnées barycentriques d'un point dans le repère (A, B, C, O), O étant l'origine et A, B et C les points à l'infini des axes du repère. Dans cette représentation, le nouveau plan à l'infini correspond à des coordonnées barycentriques de somme nulle ($X+Y+Z+T=0$). Si l'on place les points A, B et C aux sommets du tétraèdre unité (A=(1,0,0), B = (0,1,0) et C = (0,0,1)), le point N ayant les mêmes coordonnées barycentriques que M a pour coordonnées homogènes (X : Y : Z : X + Y + Z + T) ; l'application envoyant M sur N est donc une transformation projective, dont la matrice $P=\left[{\begin{matrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\1&1&1&1\end{matrix}}\right]$ est une matrice de transvection, correspondant (en coordonnées cartésiennes) à la transformation $x'={x \over x+y+z+1}$, $y'={y \over x+y+z+1}$ et $z'={z \over x+y+z+1}$. En termes de formules de changement de coordonnées, on utilisera donc la matrice inverse $P^{-1}=\left[{\begin{matrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\-1&-1&-1&1\end{matrix}}\right]$ correspondant aux formules projectives $X'=X$, $Y'=Y$, $Z'=Z$ et $T'=-X-Y-Z+T$.

