Principe

La méthode par subdivisions de triangles est quasiment identique à la méthode Jacquin. Elles possèdent cependant deux différences majeures. D'une part, nous travaillons maintenant sur des triangles. Et d'autre part, un module de subdivision des triangles a été ajouté.

Mais avant de présenter la subdivision de triangles en elle-même, il est nécessaire d'évoquer la méthode utilisée pour gérer les triangles. En effet, en langage C, manipuler des carrés et des triangles est une chose totalement différente ! Travailler sur un carré est relativement simple, il suffit de définir la hauteur du carré, et un point de départ (en haut à gauche en général). Un triangle est plus complexe, il faut soit 3 points, soit 3 droites.

Ainsi, pour savoir si un point (ou un pixel) appartient ou non à un triangle, nous avons choisi de modéliser un triangle à l'aide de 3 droites d1, d2 et d3, comme le montre la figure suivante.

Figure 3.1: Appartenance d'un point à un triangle
\begin{figure}
\begin{center}
\epsfig{file=droites_triangle.eps,scale=0.7} %\\
\end{center}
\end{figure}

Pour connaître l'appartenance d'un point à un triangles, il suffit de vérifier les équations définies ci-dessous :

$\displaystyle \begin{tabular}{ c c }
 $P.x \geq d1$&
 $P.y \geq d1$
 \tabularne...
...&
 $P.y \leq d2$
 \tabularnewline
 $P.x \leq d3$&
 $P.y \leq d3$
 \end{tabular}$ (3.1)

Si un point P (de coordonnées (P.x,P.y)) appartient au triangle formé par les segments d1, d2 et d3, alors il vérifie ces inéquations.

Une fois que nous avons conçu le module de gestion d'un pixel dans un triangle, nous avons simplement repris toutes les fonctions utilisées par la compression Jacquin, et nous les avons transformées pour qu'elles manipulent non plus des carrés, mais des triangles.

julien michot 2006-08-13