[*] up [*]
suivant: Ombrage monter: TipeSup précédent: Affichage en mode fil

Affichage faces pleines

Pour améliorer l'aspect du cube (et éviter les erreurs de visualisation), les faces ont été remplies : on a substitué aux lignes les faces. La définition (cf. PROGRAMME 8) est analogue à celle des lignes, la couleur en plus.
PROGRAMME 8: Le type des faces
\begin{table}
\vspace{-2mm}
\begin{verbatim}type face = F of (int*int*int*int*color);;\end{verbatim} \vspace{-7mm}
\end{table}

Rapidement, nous avons été confrontés au problème de l'élimination des faces cachées. La solution adoptée a été « d'orienter » les faces par les normales sortantes. La face sera alors visible (sous l'hypothèse que l'observateur n'est pas à l'intérieur de l'objet) si le produit scalaire de la normale et d'un vecteur dirigé de l'observateur vers un point de la face est strictement négatif. Pour simplifier l'écriture de la fonction de sélection des faces, le type face s'est vu ajouter un index pointant sur sa normale dans le tableau des normales maintenant inclus dans le résultat de la fonction cree_cube. De plus, toujours dans un souci de simplification, les faces sont rangées dans une liste, ce qui permet d'appliquer une sélection récursive. Bien évidemment, il a fallu modifier la fonction de tracé de notre cube (cf. PROGRAMME 9).


PROGRAMME 9: Elimination des faces cachées
\begin{table}
\vspace{-2mm}
\begin{verbatim}type face = F of (int*int*int*int*...
...s,l_faces) = map (quad t_pts) l_faces ;;\end{verbatim} \vspace{-7mm}
\end{table}


[*] up [*]
suivant: Ombrage monter: TipeSup précédent: Affichage en mode fil

1999-01-29