\section{Jouons avec TikZ\label{tikzz}}
%=======================================



       \subsection{TikZ dans le diagramme FAST}\label{tikzpartout}
       %------------------------------------------------

               L'environnement FAST est un environnement \emph{TikZ}.
               Il est donc possible d'y ajouter n'importe quelle fonction de dessin de \emph{TikZ}.
               Il en est de m�me pour les descendances des fonctions.
%##########################################
\begin{code}
\begin{fast}{Fonction de Service}
       \FT{FT1}{\draw [shift={(4,-1)},rotate=45,scale=0.5,ball color=blue]
               (0,0) .. controls +(0,2) and +(0,3) .. (3,0)
               .. controls +(0,-2) and +(0,2) .. (0,-4)
               .. controls +(0,2) and +(0,-2) .. (-3,0)
               .. controls +(0,2) and +(0,2) .. (0,0);
               }               %Exemple pris dans ``TikZ pour l'impatient''
       \FT{FT2}{}
\end{fast}
\end{code}
%##########################################
               \cqd
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{exemple}
\begin{fast}{Fonction de Service}
       \FT{FT1}{\draw [shift={(4,-1)},rotate=45,scale=0.5,ball color=blue]
                       (0,0) .. controls +(0,2) and +(0,3) .. (3,0)
                       .. controls +(0,-2) and +(0,2) .. (0,-4)
                       .. controls +(0,2) and +(0,-2) .. (-3,0)
                       .. controls +(0,2) and +(0,2) .. (0,0);}
                       %Exemple pris dans ``TikZ pour l'impatient''
       \FT{FT2}{}
\end{fast}
\end{exemple}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

               Il est � noter que dans l'exemple pr�c�dent, la seconde ligne du diagramme ne tient pas compte de la ``place'' que prend notre dessin.
               Pour que ce soit le cas, il faut que la descendance (c'est � dire le dessin) ``marque'' sa place en cr�ant une coordonn�e correspondant au point le plus bas du dessin.
               C'est sur ce point que la seconde ligne va se baser.

               Ce point doit �tre enregistr� dans la variable {\color{blue}\verb'BoiteMinimums'} de la mani�re suivante :
%##########################################
\begin{code}
\coordinate (BoiteMinimums) at (X,Y);
\end{code}
%##########################################
               o� le couple $(X, Y)$ est la coordonn�es du minimum.

               Par exemple :
%##########################################
\begin{code}
\begin{fast}{Fonction de Service}
       \FT{FT1}{\draw [shift={(4,-1)},rotate=45,scale=0.5,ball color=blue]
               (0,0) .. controls +(0,2) and +(0,3) .. (3,0)
               .. controls +(0,-2) and +(0,2) .. (0,-4)
               .. controls +(0,2) and +(0,-2) .. (-3,0)
               .. controls +(0,2) and +(0,2) .. (0,0);
               \coordinate (BoiteMinimums) at (0,-2.5);
               }       %Exemple pris dans ``TikZ pour l'impatient''
       \FT{FT2}{}
\end{fast}
\end{code}
%##########################################
               \cqd
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{exemple}
\begin{fast}{Fonction de Service}
       \FT{FT1}{\draw [shift={(4,-1)},rotate=45,scale=0.5,ball color=blue]
               (0,0) .. controls +(0,2) and +(0,3) .. (3,0)
               .. controls +(0,-2) and +(0,2) .. (0,-4)
               .. controls +(0,2) and +(0,-2) .. (-3,0)
               .. controls +(0,2) and +(0,2) .. (0,0);
               \coordinate (BoiteMinimums) at (0,-2.5);}
               %Exemple pris dans ``TikZ pour l'impatient''
       \FT{FT2}{}
\end{fast}
\end{exemple}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

       \subsection{Gestion des bo�tes}\label{boites}
       %-----------------------------------------

       Les boites cr��es dans le diagramme FAST sont r�alis�es par la fonction {\color{blue}\verb'\node'} de \emph{TikZ}.
       Ces bo�tes sont nomm�es sous la forme suivante : {\color{blue}\verb'\fastBoiteX'} o� {\color{blue}\verb'X'} est remplac� par le num�ro de la boite.
       Ce num�ro est d�fini par ordre de cr�ation des boites : de gauche � droite, de haut en bas.
       Voici un exemple faisant appara�tre le nom des boites :
       \begin{center}
               \begin{fast}{fastBoite0}
                       \FT{fastBoite1}{\FT{fastBoite2}{}
                                       \FT{fastBoite3}{\FT{fastBoite4}{}}}
                       \FT{fastBoite5}{\FT{fastBoite6}{}
                                       \FT{fastBoite7}{}}
               \end{fast}
       \end{center}

       Partant de l�, il est alors possible de r�aliser des modifications manuelles sur le diagramme.
       Par exemple, pour avoir une solution technique commune � deux fonctions techniques :
%##########################################
\begin{code}
\begin{fast}{Fonction de service}
       \fastFT{FT1}{\fastST{ST}}
       \fastFT{FT2}{}
       \draw[line width=\fastEpaisseurTraits]
               (fastBoite3.east) -| ($0.5*(fastBoite2.north west)
               +0.5*(fastBoite1.north east)+(0,\fastDecalageTrait)$);
\end{fast}
\end{code}
%##########################################
       \cqd
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{exemple}
\begin{fast}{Fonction de service}
       \fastFT{FT1}{\fastST{ST}}
       \fastFT{FT2}{}
       \draw[line width=\fastEpaisseurTraits](fastBoite3.east) -| ($0.5*(fastBoite2.north west)+0.5*(fastBoite1.north east)+(0,\fastDecalageTrait)$);
\end{fast}
\end{exemple}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

       \subsection{Cr�er sa propre boite}\label{perso}
       %--------------------------------------

       Les boites sont � peu pr�s toutes cr��es sur le m�me mod�le et il est possible d'en cr�er d'autres :
%##########################################
\begin{code}
\newcommand*{\maBoite}[2]{
       \fastAvanceColonne              %On avance d'une colonne
       \addtocounter{cptBoite}{1}      %On incremente le numero de la boite
       %%%%%%%%%%%%%%%%%%%%%%%
       %Cr�er votre boite ici :
       \node [anchor=north west] (noeud \thecptAbscisse) at
               ($(\posX,0)+(BoiteMinimums)$) {#1};
       %%%%%%%%%%%%%%%%%%%%%%
       \node[inner sep=0,fit=(noeud \thecptAbscisse.north west)
               (noeud \thecptAbscisse.south east)]
               (fastBoite\thecptBoite) {};%Boite de nommage
       \fastTraceConnecteurs
       %%%%%%%%%%%%%%%%%%%%%%%%%
       %Votre descendance :
       #2
       %%%%%%%%%%%%%%%%%%%%%%%%%
       \fastEnregistreMinimum          %Enregistre le minimum de la boite
       \fastReculeColonne              %Recule d'une colonne
}
\end{code}
%##########################################


       Le n\oe ud cr�� sous la ligne ``{\color{blue}\verb'Cr�er votre boite ici'}'' est la boite que vous allez afficher.
       C'est elle que vous allez pouvoir modifier pour l'adapter � vos besoins.
       Ce n\oe ud doit obligatoirement porter le nom {\color{blue}\verb'(noeud \thecptAbscisse)'}.
       Les autres commandes ne doivent pas �tre chang�es.

       Voici un exemple :
%##########################################
\begin{code}
 \newcommand*{\maBoite}[2]{
       \fastAvanceColonne              %On avance d'une colonne
       \addtocounter{cptBoite}{1}      %On incremente le numero de la boite
       %%%%%%%%%%%%%%%%%%%%%%%
       %Cr�er votre boite ici
       \node [anchor=north west,draw,rounded corners=3pt,
               aspect=2.5,text=red](noeud \thecptAbscisse)
               at ($(\posX,0)+(BoiteMinimums)$) {#1};
       %%%%%%%%%%%%%%%%%%%%%%
       \node[inner sep=0,fit=(noeud \thecptAbscisse.north west)
               (noeud \thecptAbscisse.south east)]
               (fastBoite\thecptBoite) {};
       \fastTraceConnecteurs
       %%%%%%%%%%%%%%%%%%%%%%%%%
       %Votre descendance
       #2
       %%%%%%%%%%%%%%%%%%%%%%%%%
       \fastEnregistreMinimum          %Enregistre le minimum de la boite
       \fastReculeColonne              %Recule d'une colonne
}

\begin{fast}{Fonction de Service}
       \maBoite{Ma boite}
               {\fastST{Solution}}
       \FT{Fonction}{\maBoite{Ma boite bis}{}
                       \fastFT{Fonction}{}}
\end{fast}
\end{code}
%##########################################
\cqd
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{exemple}
 \newcommand*{\maBoite}[2]{
       \fastAvanceColonne              %On avance d'une colonne
       \addtocounter{cptBoite}{1}      %On incremente le numero de la boite
       %%%%%%%%%%%%%%%%%%%%%%%
       %Cr�er votre boite ici
       \node [anchor=north west,draw,rounded corners=3pt,aspect=2.5,text=red](noeud \thecptAbscisse) at ($(\posX,0)+(BoiteMinimums)$) {#1};
       %%%%%%%%%%%%%%%%%%%%%%
       \node[inner sep=0,fit=(noeud \thecptAbscisse.north west)
               (noeud \thecptAbscisse.south east)]
               (fastBoite\thecptBoite) {};%Boite vide par dessus, aux bonne dimension, afin de lui donner un nom
       \fastTraceConnecteurs
       %%%%%%%%%%%%%%%%%%%%%%%%%
       %Votre descendance
       #2
       %%%%%%%%%%%%%%%%%%%%%%%%%
       \fastEnregistreMinimum          %Enregistre le minimum de la boite
       \fastReculeColonne              %Recule d'une colonne
}

\begin{fast}{Fonction de Service}
       \maBoite{Ma boite}
               {\fastST{Solution}}
       \FT{Fonction}{\maBoite{Ma boite bis}{}
                       \fastFT{Fonction}{}}
\end{fast}
\end{exemple}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%