87 |
l'intersection entre la droite (CD) et le segment [AB].On obtient |
l'intersection entre la droite (CD) et le segment [AB].On obtient |
88 |
alors la construction suivante: |
alors la construction suivante: |
89 |
|
|
90 |
|
\begin{center} |
91 |
|
%HEVEA\begin{toimage} |
92 |
\begin{pspicture}(-7,-3.5)(10,4) |
\begin{pspicture}(-7,-3.5)(10,4) |
93 |
\pstGeonode(-2,0){A} |
\pstGeonode(-2,0){A} |
94 |
\pstGeonode(0,2){B} |
\pstGeonode(0,2){B} |
98 |
\pstInterCC{A}{B}{B}{A}{C}{D} |
\pstInterCC{A}{B}{B}{A}{C}{D} |
99 |
\pstLineAB{C}{D} |
\pstLineAB{C}{D} |
100 |
%\pstInter{C}{D}{A}{B}{I} |
%\pstInter{C}{D}{A}{B}{I} |
101 |
\end{pspicture} |
\end{pspicture} |
102 |
|
%HEVEA\end{toimage}\imageflush |
103 |
|
\end{center} |
104 |
|
|
105 |
|
|
106 |
Etudions maintenant comment le point I peut alors être représenté en mémoire sous forme d'arbre: |
Etudions maintenant comment le point I peut alors être représenté en mémoire sous forme d'arbre: |
107 |
|
|
108 |
\begin{pspicture}(3,-11)(10,1) |
\begin{center} |
109 |
|
%HEVEA \begin{toimage} |
110 |
|
\begin{pspicture}(3,-11)(10,1) |
111 |
\psset{levelsep=2.5cm,nodesep=2mm} |
\psset{levelsep=2.5cm,nodesep=2mm} |
112 |
\pstree{\Tr{point I}}{ |
\pstree{\Tr{point I}}{ |
113 |
\pstree{\Tr{droite (CD)}}{ |
\pstree{\Tr{droite (CD)}}{ |
138 |
} |
} |
139 |
} |
} |
140 |
\end{pspicture} |
\end{pspicture} |
141 |
|
%HEVEA \end{toimage}\imageflush |
142 |
|
|
143 |
|
\end{center} |
144 |
|
|
145 |
Analysons cet arbre. Lorsque le noeud est un point, on l'obtient en |
Analysons cet arbre. Lorsque le noeud est un point, on l'obtient en |
146 |
traçant l'intersection de ses deux fils. Si c'est une droite, elle |
traçant l'intersection de ses deux fils. Si c'est une droite, elle |
287 |
bleu. A chaucne de ces 4 couleurs, on associe une fonction qui va |
bleu. A chaucne de ces 4 couleurs, on associe une fonction qui va |
288 |
retourner un code RGB suivant ces contraintes: |
retourner un code RGB suivant ces contraintes: |
289 |
|
|
290 |
|
%HEVEA\begin{toimage} |
291 |
$$ |
$$ |
292 |
noir = \left\lbrace |
noir = \left\lbrace |
293 |
\begin{array}{l} |
\begin{array}{l} |
326 |
\end{array} \Rightarrow 20^3 = 8000 \ nuances |
\end{array} \Rightarrow 20^3 = 8000 \ nuances |
327 |
\right. |
\right. |
328 |
$$ |
$$ |
329 |
|
|
330 |
|
%HEVEA\end{toimage}\imageflush{} |
331 |
|
|
332 |
|
|
333 |
Cela nous offre la possibilité de construire et d'afficher 32000 |
Cela nous offre la possibilité de construire et d'afficher 32000 |
334 |
objets. Ces contraintes sont utilisées pour l'écriture des fonctions |
objets. Ces contraintes sont utilisées pour l'écriture des fonctions |
446 |
les pixels voisins. |
les pixels voisins. |
447 |
|
|
448 |
\begin{center} |
\begin{center} |
449 |
|
%HEVEA \begin{toimage} |
450 |
\begin{pspicture}(4,3) |
\begin{pspicture}(4,3) |
451 |
\psgrid[gridlabels=0](4,2) |
\psgrid[gridlabels=0](4,2) |
452 |
\psframe*(0,0)(0.2,0.2) |
\psframe*(0,0)(0.2,0.2) |
498 |
\psframe*(0.8,1.8)(1,2) |
\psframe*(0.8,1.8)(1,2) |
499 |
\rput(2,-0.5){Fig. 2.2} |
\rput(2,-0.5){Fig. 2.2} |
500 |
\end{pspicture} |
\end{pspicture} |
501 |
|
%HEVEA \end{toimage}\imageflush{} |
502 |
\end{center} |
\end{center} |
503 |
|
|
504 |
De même, lorsque les lignes ont plus d'un pixel en commun, tous ces |
De même, lorsque les lignes ont plus d'un pixel en commun, tous ces |
585 |
p_p=(-1,-1) ; |
p_p=(-1,-1) ; |
586 |
p_id=-1}] |
p_id=-1}] |
587 |
\end{verbatim} |
\end{verbatim} |
588 |
\item la liste des droites contiendra aussi noms, coordonnées et couleurs, avec en plus pour chaque droite la liste d'intersection obtenue lors du traçage avec la fonction \verb+ruler+ (cf Annexe): |
\item la liste des droites contiendra aussi noms, coordonnées et |
589 |
|
couleurs, avec en plus pour chaque droite la liste d'intersection |
590 |
|
obtenue lors du traçage avec la fonction \verb+ruler+ (cf Annexe): |
591 |
|
|
592 |
\begin{verbatim} |
\begin{verbatim} |
593 |
type line_drawn = |
type line_drawn = |
594 |
{l_label: string ; |
{l_label: string ; |
632 |
besoin d'une fonction \verb+search_intersection+ permettant de |
besoin d'une fonction \verb+search_intersection+ permettant de |
633 |
retourner les coordonnées du point d'intersection entre deux objets. |
retourner les coordonnées du point d'intersection entre deux objets. |
634 |
|
|
635 |
Le parcours de l'arbre est avant tout basé sur l'analyse des noeuds. Trois cas se présentent donc: |
Le parcours de l'arbre est avant tout basé sur l'analyse des |
636 |
|
noeuds. Trois cas se présentent donc: |
637 |
\begin{itemize} |
\begin{itemize} |
638 |
\item \textsf{cas 1}: si le noeud est une droite, on commence par |
\item \textsf{cas 1}: si le noeud est une droite, on commence par |
639 |
regarder si cette droite n'a pas déjà été construite. Si ce n'est |
regarder si cette droite n'a pas déjà été construite. Si ce n'est |
659 |
\item soit le point est quelconque, il suffit alors de lui générer au |
\item soit le point est quelconque, il suffit alors de lui générer au |
660 |
hasard des coordonnées et une couleur. Après l'avoir affiché à |
hasard des coordonnées et une couleur. Après l'avoir affiché à |
661 |
l'écran, on l'ajoute à la liste \verb+list_point_drawn+. |
l'écran, on l'ajoute à la liste \verb+list_point_drawn+. |
662 |
\item soit le point doit être construit par intersection. On exécute alors la fonction \verb+search_intersection+ pour obtenir ses coordonnées. Le reste se fait comme pour le point quelconque. |
\item soit le point doit être construit par intersection. On exécute |
663 |
|
alors la fonction \verb+search_intersection+ pour obtenir ses |
664 |
|
coordonnées. Le reste se fait comme pour le point quelconque. |
665 |
\end{itemize} |
\end{itemize} |
666 |
\end{itemize} |
\end{itemize} |
667 |
|
|
868 |
|
|
869 |
\begin{verbatim} |
\begin{verbatim} |
870 |
{ |
{ |
|
|
|
871 |
open Parser |
open Parser |
|
|
|
872 |
exception Eof |
exception Eof |
|
|
|
873 |
} |
} |
874 |
|
|
875 |
rule token = parse |
rule token = parse |
911 |
l'utilisateur. Pour cela nous devons définir la grammaire de notre |
l'utilisateur. Pour cela nous devons définir la grammaire de notre |
912 |
langage: |
langage: |
913 |
|
|
914 |
|
%HEVEA \begin{toimage} |
915 |
$axiome \rightarrow UN \ POINT \ IDENTIFIANT \ r1 \\$ |
$axiome \rightarrow UN \ POINT \ IDENTIFIANT \ r1 \\$ |
916 |
$| UNE \ DROITE \ IDENTIFIANT r2 \\$ |
$| UNE \ DROITE \ IDENTIFIANT r2 \\$ |
917 |
$| UN \ SEGMENT \ IDENTIFIANT r2 \\$ |
$| UN \ SEGMENT \ IDENTIFIANT r2 \\$ |
948 |
|
|
949 |
$r3 \rightarrow DE \ CENTRE \ o2 \ ET \ PASSANT \ PAR \ o2 \\$ |
$r3 \rightarrow DE \ CENTRE \ o2 \ ET \ PASSANT \ PAR \ o2 \\$ |
950 |
$| DE \ CENTRE \ o2 \ ET \ DE \ RAYON \ IDENTIFIANT \\$ |
$| DE \ CENTRE \ o2 \ ET \ DE \ RAYON \ IDENTIFIANT \\$ |
951 |
|
%HEVEA \end{toimage}\imageflush{} |
952 |
|
|
953 |
\chapter{Installation et utilisation} |
\chapter{Installation et utilisation} |
954 |
\minitoc{} |
\minitoc{} |