[*] up [*]
suivant: Affichage faces pleines monter: TipeSup précédent: Prérequis

Affichage en mode fil de fer

A cause de la faible puissance de calcul disponible lors des premiers essais (dans les années 70), il a fallu trouver une représentation simple où seuls les contours étaient visualisés. Aujourd'hui, cette technique n'a pas été abandonnée dans la mesure où sa rapidité permet une grande souplesse lors des phases de conception.

FIGURE 1: L'orientation de l'écran
\includegraphics[width=7.14cm, height=5.53cm]{ecran.eps}

Notre cube est défini par (cf. PROGRAMME 1) :

FIGURE 2: Un point orienté et le cube ainsi défini
\includegraphics[width=8.32cm, height=7.96cm]{cube.eps}


PROGRAMME 1: Les types utilisés
\begin{table}
\vspace{-2mm}
\begin{verbatim}type pt3d = P3 of (float*float*flo...
... (float*float*float*float*float*float);;\end{verbatim} \vspace{-7mm}
\end{table}

Nous avons également défini des fonctions d'accès aux composantes de chaque type (cf. PROGRAMME 2) ainsi que des opérations sur les vecteurs pour pouvoir accéder aux sommets du cube à partir du centre (cf. PROGRAMME 3).


PROGRAMME 2: Les fonctions d'accès aux différentes composantes des types
\begin{table}
\vspace{-2mm}
\begin{verbatim}let x = fun (P3(a,_,_))->a;;
let y...
...let alpha = fun (POri(_,_,_,_,_,a))->a;;\end{verbatim} \vspace{-7mm}
\end{table}


PROGRAMME 3: Opérations sur les vecteurs
\begin{table}
\vspace{-2mm}
\begin{verbatim} ...

La fonction segment (cf. PROGRAMME 4) trace la ligne passée en paramètre à partir des données fournies par le tableau de points. Quant à la fonction cree_cube (cf. PROGRAMME 5) fournit, à partir de la donnée d'un point orienté et du demi-côté du cube, un couple de tableaux. Le premier contient les 8 sommets et le second contient les 12 arêtes.


PROGRAMME 4: Tracé d'un segment
\begin{table}
\vspace{-2mm}
\begin{verbatim}let segment T=
fun (L(a,b))->
(m...
...sc T.(b))) (int_of_float (ord T.(b))));;\end{verbatim} \vspace{-7mm}
\end{table}


PROGRAMME 5: Création du cube
\begin{table}
\vspace{-2mm}
\begin{verbatim}let cree_cube (POri(x, y, z, theta...
...; (L(1,5)); (L(2,6)); (L(3,7))\vert]) ;;\end{verbatim} \vspace{-7mm}
\end{table}

Les formules des coordonnées des vecteurs illustrés ci-dessus ont été obtenues par multiplication des matrices des trois rotations selon les trois angles. On ajoute alors ces vecteurs aux coordonnées du centre pour obtenir les huit points. Les côtés sont alors identifiés par les index dans le tableau.

On définit une fonction proj dont le principe repose sur la projection conique décrite à la FIGURE 3. La projection conique nécessite deux paramètres : la position de l'observateur dans l'espace qui est ici l'origine (pour simplifier le calcul) et la distance f de l'observateur à l'écran. Le projeté d'un point $M$ quelconque de l'espace sur le plan (ici l'écran) est le point d'intersection de la droite $(OM)$ avec ce plan. En se reportant à la FIGURE 3 (simplifié en deux dimensions), on remarque alors que le théorème de THALÈS peut être appliqué pour calculer les coordonnées du projeté dans le repère de l'écran, d'où la fonction proj (cf. PROGRAMME 6).

FIGURE 3: Projection conique
\includegraphics[width=11.25cm, height=8.48cm]{proj.eps}


PROGRAMME 6: Projection conique
\begin{table}
\vspace{-2mm}
\begin{verbatim}let proj=fun (P3(a,b,c))->(P2(b*.f/.a+.offx, c*.f/.a+.offy));;\end{verbatim} \vspace{-7mm}
\end{table}

On applique ensuite cette fonction au tableau de points par projete_ts_les_pts (cf. PROGRAMME 7). La fonction dessiner représente le cube à partir des deux tableaux précédents. A ce niveau (cf. PROGRAMME 4), on obtient un cube représenté en mode de fil de fer, mais immobile !

FIGURE 4: Un cube en mode fil de fer
\includegraphics[width=5.79cm, height=5.16cm]{cubewire.eps}


PROGRAMME 7: Dessin du cube en fil de fer
\begin{table}
\vspace{-2mm}
\begin{verbatim}let projete_ts_les_pts (t_pts,t_li...
...e (POri(300.,0.,0.,0.5,0.5,0.5)) 50.));;\end{verbatim} \vspace{-7mm}
\end{table}


[*] up [*]
suivant: Affichage faces pleines monter: TipeSup précédent: Prérequis

1999-01-29