[*] up [*]
suivant: Et pourtant, il tourne monter: TipeSup précédent: Affichage faces pleines

Ombrage

Afin de rendre notre cube plus réaliste, nous avons décidé de lui appliquer un ombrage de LAMBERT (aussi connu sous le nom de flat shading). Dans ce modèle d'éclairage, chaque face a une couleur unie variant selon l'angle d'incidence du faisceau lumineux sur celle-ci. On suppose la source lumineuse située à l'infini. De ce fait, les rayons sont parallèles, et de direction connue. Dans notre cas, la source est à l'infini dans le dos de l'observateur.

Pour calculer la nouvelle teinte de la face, connaissant sa couleur en « pleine lumière », nous utilisons le cosinus de l'angle entre le faisceau et la normale. En effet, si une quantité de lumière $Q$ vient frapper orthogonalement une longueur $L$, on suppose que l'intensité lumineuse a pour valeur $1$. Alors, si la même quantité $Q$ vient frapper une longueur $L'$, l'intensité sera $L/L'$. Or, comme le montre la FIGURE 5, $L/L'=\cos \beta$. Pour obtenir alors la nouvelle couleur, on multiplie la couleur initiale par le cosinus de l'angle entre le faisceau et la normale à la face que l'on extrait du produit scalaire entre ces deux vecteurs. On modifie alors la fonction select (cf. PROGRAMME 10) pour qu'elle calcule les nouvelles couleurs, ainsi que le produit scalaire que l'on « normalise ».

FIGURE 5: Calcul de la couleur d'une face
\includegraphics[width=6.3cm, height=4.52cm]{ombre.eps}


PROGRAMME 10: Sélection des faces et ombrage
\begin{table}
\vspace{-2mm}
\begin{verbatim}let select (t_points,t_normales,l_...
...[] -> []
in (t_points,trouve l_faces)
;;\end{verbatim} \vspace{-7mm}
\end{table}


[*] up [*]
suivant: Et pourtant, il tourne monter: TipeSup précédent: Affichage faces pleines

1999-01-29