\clearpage
\section{Patrons de cubes et de pavés droits}\label{DocPatronsPaves}\PfCMAJ{0.99-z-m}
\index{Espace}\index{Cubes}\index{Paves droits@Pavés droits}\index[cle]{Patron@\lstinline+\Patron+}
La commande \lstinline!\Patron! permet d'obtenir des patrons de pavés droits tels que :
\begin{center}
  \Patron{%
  xxx,
  oxo,
  oxo,
  oxo}
\hspace{0.1\linewidth}
\Patron[Pave,Largeur=1.5cm,Profondeur=0.75cm,Hauteur=1.125cm,
ListeCouleurs={
Crimson,
Orange,LightGreen,
Crimson,Orange,
LightGreen}]{%
  phoo,
  lhpo,
  hopl,
  pool
}
\end{center}
Elle a la forme suivante :
\begin{lstlisting}[escapechar=!,belowskip=0pt]
  \Patron[!\sffamily\textlangle clés\textrangle!]{!\sffamily\textlangle description du patron\textrangle!}
\end{lstlisting}
où
\begin{itemize}
\item\textlangle\lstinline!clés!\textrangle{} constituent un ensemble
  d'options pour paramétrer la commande (paramètres optionnels);
\item\textlangle\lstinline!description du patron!\textrangle{} se fait :
  \begin{itemize}
  \item sous la forme \lstinline!xxoo,oxxo,ooxx! où \lstinline!x! représente les carrés du patron d'un cube;
  \item sous la forme \lstinline!phoo,lhpo,hopl,pool! où \lstinline!p,h,l! représente respectivement la profondeur, la hauteur et la largeur d'un pavé droit. La première lettre de chaque ligne de description indique la largeur des rectangles situés sur cette ligne.
  \end{itemize}
\end{itemize}
\begin{Codes}[listing side text]{0.4}{}
\Patron{%
  xxoo,
  oxxo,
  ooxx
}%
\end{Codes}
\begin{tcolorbox}[tikzcle]
  \index[cle]{Patron@\lstinline+\Patron+!Arete|mygobble}
  \index[cle]{Patron@\lstinline+\Patron+!Pave|mygobble}
  \index[cle]{Patron@\lstinline+\Patron+!Pave!Largeur|mygobble}
  \index[cle]{Patron@\lstinline+\Patron+!Pave!Profondeur|mygobble}
  \index[cle]{Patron@\lstinline+\Patron+!Pave!Hauteur|mygobble}
\begin{Key}{Arete}{\Lg{1}}
  modifie l'arête du cube utilisé.
\end{Key}
\begin{Key}{Pave}{false}
  permet d'afficher un patron d'un pavé droit.  
\end{Key}
\begin{tcolorbox}[tikzRemarque]
  Toutes les lignes de la description d'un patron doivent avoir une longueur identique.
\end{tcolorbox}
  \begin{minipage}{0.65\linewidth}
  \begin{Key}{Largeur}{\Lg{2}}
  modifie la largeur du pavé droit utilisé.
\end{Key}
\begin{Key}{Profondeur}{\Lg{1}}
  modifie la profondeur du pavé droit utilisé.
\end{Key}
\begin{Key}{Hauteur}{\Lg{1.5}}
  modifie la hauteur du pavé droit utilisé.
\end{Key}
\end{minipage}
\hfill
\begin{minipage}{0.3\linewidth}
  \begin{Geometrie}[TypeTrace="Espace",CoinBG={u*(-5,-5)},CoinHD={u*(5,5)}]
    Initialisation(1500,30,20,175);
    color A,B,C,D,E,F,G,H;
    trace Pave(A,B,C,D,E,F,G,H)(0.4,0.3,0.5);
    trace appelation(A,B,-3mm,btex largeur etex);
    trace appelation(B,C,-3mm,btex profondeur etex);
    label.rt(btex hauteur etex,1/2[Projette(C),Projette(H)]);
  \end{Geometrie}
\end{minipage}
\index[cle]{Patron@\lstinline+\Patron+!Traces|mygobble}
\index[cle]{Patron@\lstinline+\Patron+!ListeCouleurs|mygobble}
\begin{Key}{Traces}{-}
  permet d'ajouter des tracés au patron choisi.
\end{Key}
\begin{Key}{ListeCouleurs}{white}
  modifie la couleur des faces.
\end{Key}
\end{tcolorbox}
\begin{Codes}[listing side text]{0.4}{}
\Patron[Pave]{%
  % 1ere ligne : la "hauteur" des rectangles correspond à p, soit la profondeur.
  phoo,
  % 2eme ligne : la "hauteur" des rectangles correspond à l, soit la largeur.
  lhpo,
  % 3eme ligne : la "hauteur" des rectangles correspond à h, soit la hauteur.
  hopl,
  % 4eme ligne : la "hauteur" des rectangles correspond à p, soit la profondeur.
  pool
}
\end{Codes}
\begin{Codes}[listing side text]{0.5}{}
\Patron[%
Pave,
Largeur=1cm,%
Profondeur=1.5cm,%
Hauteur=2cm]{%
  hlpl,
  lopo,
  hopo,
  lopo}
\end{Codes}
Chaque faces d'un patron est numérotée et associée à cinq points : quatre ($M$, $N$, $O$ et $P$ pour les sommets de la face) et un ($C$) pour son centre.
\begin{center}
\begin{Codes}[listing side text]{0.5}{}
\Patron[%
Arete=1.5cm,
Traces={
  dotlabel.top(btex $C_1$ etex,C1);
  dotlabel.top(btex $C_2$ etex,C2);
  dotlabel.top(btex $C_3$ etex,C3);
  dotlabel.top(btex $C_4$ etex,C4);
  dotlabel.top(btex $C_5$ etex,C5);
  dotlabel.top(btex $C_6$ etex,C6);
  dotlabel.llft(btex $M_5$ etex,M5);
  dotlabel.lrt(btex $N_5$ etex,N5);
  dotlabel.lrt(btex $O_5$ etex,O5);
  dotlabel.ulft(btex $P_5$ etex,P5);
}]{%
  oox,
  oxx,
  xxo,
  oxo
}
\end{Codes}
\end{center}

\begin{Codes}[listing side text]{0.4}{}
\Patron[%
Arete=1.5cm,
Traces={
  label.lrt(btex 1 etex,P1);
  label.lrt(btex 2 etex,P2);
  label.lrt(btex 3 etex,P3);
  label.lrt(btex 4 etex,P4);
  label.lrt(btex 5 etex,P5);
  label.lrt(btex 6 etex,P6);
  drawoptions(withpen pencircle scaled 2);
  draw chemin(iso(M4,N4),C4,iso(N3,O3),iso(O3,P3),C1,iso(M1,P1));
  draw chemin(iso(P2,O2),iso(M2,N2));
  draw chemin(iso(M6,P6),iso(N6,O6));
}]{
  oxoo,
  xxxx,
  oxoo
}
\end{Codes}
\begin{Codes}[listing side text]{0.5}{}
\Patron[Pave,ListeCouleurs={%
Crimson,
!,% Pas de couleur pour la face 2.
LightGreen,
Crimson,
Orange,
LightGreen}]{%
phoo,
lhpo,
hopl,
pool
}  
\end{Codes}
Cette commande peut aussi être utilisée pour construire de faux patrons\dots
\begin{Codes}[]{}{}
\Patron[Arete=5mm]{oxo,xxx,oxo}\hspace{0.1\linewidth}\Patron[Arete=5mm]{oxo,oxo,oxx,xxo}\hspace{0.1\linewidth}\Patron[Arete=5mm]{xxxx,oxoo}\hspace{0.1\linewidth}\Patron[Arete=5mm]{oox,oox,xxx,oox}\hspace{0.1\linewidth}\Patron[Arete=5mm]{oooxo,xxxxx,oooxo}
\end{Codes}