\clearpage
\section{La géométrie}\label{Geometrie}
\index{Tracés géométriques}\index[cle]{Geometrie@\lstinline+Geometrie+}
L'environnement \lstinline!Geometrie! permet de tracer une figure de
géométrie à l'aide de commandes simples. Même si une connaissance de
\MP{} est nécessaire, elle reste superficielle.

\begin{lstlisting}[escapechar=!,aboveskip=1em,belowskip=0.5em]
  \begin{Geometrie}[!\sffamily\textlangle clés\textrangle!]
  
  \end{Geometrie}
\end{lstlisting}
où \textlangle\lstinline!clés!\textrangle{} constituent un ensemble
  d'options pour paramétrer l'environnement.
\begin{Codes}[listing side text]{0.4}{}
\begin{Geometrie}
  pair A,B,C,D;
  A=u*(1,1);
  B-A=u*(4,0);
  C=rotation(A,B,-110);
  D-C=A-B;
  trace polygone(A,B,C,D);
\end{Geometrie}
\end{Codes}
\begin{tcolorbox}[tikzcle]
  \index[cle]{Geometrie@\lstinline+Geometrie+!CoinBG|mygobble}
  \index[cle]{Geometrie@\lstinline+Geometrie+!CoinHD|mygobble}
  \index[cle]{Geometrie@\lstinline+Geometrie+!TypeTrace|mygobble}
  \index[cle]{Geometrie@\lstinline+Geometrie+!Cadre|mygobble}
  \index[cle]{Geometrie@\lstinline+Geometrie+!Cadre!Epaisseur|mygobble}
  \index[cle]{Geometrie@\lstinline+Geometrie+!Cadre!Pointilles|mygobble}
  \index[cle]{Geometrie@\lstinline+Geometrie+!Cadre!Ombre|mygobble}
  \index[cle]{Geometrie@\lstinline+Geometrie+!Cadre!Couleur|mygobble}
  \index[cle]{Geometrie@\lstinline+Geometrie+!Cadre!Ecart|mygobble}
  \begin{Key}{CoinBG}{\{(0,0)\}}
    modifie la position du coin \og bas gauche\fg{} du rectangle \og entourant\fg{} la figure.
  \end{Key}
  \begin{Key}{CoinHD}{\{(10cm,10cm)\}}
    modifie la position du coin \og haut droite\fg{} du rectangle \og entourant\fg{} la figure.
  \end{Key}
  \begin{Key}{TypeTrace}{"Instruments"}\PfCMAJ{0.99-A-h}
    modifie le type de tracé. Les autres valeurs sont {\ttfamily "MainLevee"}, {\ttfamily "Schema"} et {\ttfamily"Espace"}.
  \end{Key}
  \begin{tcolorbox}[tikzRemarque]
    La valeur {\ttfamily "Schema"} n'est à utiliser que pour les figures planes.
  \end{tcolorbox}
  \begin{Key}{Cadre}{-}\PfCMAJ{0.99-z-y}
    permet de clipper la construction au plus près de ses dimensions réelles. Les valeurs acceptées sont {\ttfamily"aucun"}, {\ttfamily"rectangle"} ou {\ttfamily"rounded"}.
    \begin{SousDescription}
    \item[La clé \Cle{Epaisseur}]\DefautR{1} modifie l'épaisseur de tracé du cadre.
    \item[La clé \Cle{Pointilles}]\DefautR{false} trace, lorsqu'elle est positionnée à \lstinline!true!, le cadre en pointillés.
    \item[La clé \Cle{Ombre}]\DefautR{false} ajoute, lorsqu'elle est positionnée à \lstinline!true!, une ombre au cadre.
    \item[La clé \Cle{Couleur}]\DefautR{black} modifie la couleur de tracé du cadre et de l'ombre.
    \item[La clé \Cle{Ecart}]\DefautR{2} modifie l'écart en point entre le cadre tracé et le cadre minimal de la figure.
    \end{SousDescription}
  \end{Key}
\end{tcolorbox}
\begin{Codes}[listing side text]{0.4}{}
\begin{Geometrie}[CoinHD={(6u,4u)}]
  pair A,B;
  A=u*(1,1);
  B=coinhd-u*(1,1);
  trace feuillet;
  drawarrow A--coinbg;
  drawarrow B--coinhd;
  label.rt(btex Coin --bas gauche-- etex,A);
  label.lft(btex Coin --haut droite-- etex,B);
\end{Geometrie}
\end{Codes}

\begin{Codes}[listing side text]{0.4}{}
\begin{Geometrie}[TypeTrace="MainLevee"]
  pair A,B,C,D;
  A=u*(1,1);
  B-A=u*(4,0);
  C=rotation(A,B,-90);
  D-C=A-B;
  trace polygone(A,B,C,D);
\end{Geometrie}
\end{Codes}
\begin{Codes}[listing side text]{0.4}{}
\begin{Geometrie}[TypeTrace="Schema"]
  pair A,B,C,D;
  A=u*(1,1);
  B-A=u*(4,0);
  C=rotation(A,B,-90);
  D-C=A-B;
  trace polygone(A,B,C,D);
\end{Geometrie}
\end{Codes}
\begin{Codes}[listing side text,listing options={frame=,classoffset=1,deletekeywords={E,Espace,Cube},classoffset=1}]{0.2}{}
\begin{Geometrie}[TypeTrace="Espace",CoinBG={u*(-10,-10)}]
  Initialisation(1500,30,20,50);
  color A,B,C,D,E,F,G,H;
  trace Cube(A,B,C,D,E,F,G,H);
\end{Geometrie}
\end{Codes}
\begin{Codes}[listing side text,listing options={frame=,classoffset=1,deletekeywords={E,Espace,Cube},classoffset=1}]{0.2}{}
\begin{Geometrie}[TypeTrace="Espace",Cadre="rectangle",Couleur=Crimson,Ombre]
  Initialisation(1500,30,20,50);
  color A,B,C,D,E,F,G,H;
  trace Cube(A,B,C,D,E,F,G,H);
\end{Geometrie}
\end{Codes}
%\setbox1=\hbox{définit le point du cercle \lstinline!cc! associé à l'angle principal de mesure \ang{60}.}
\setbox2=\hbox{\lstinline!remplis cc withcolor...!}
\setbox3=\hbox{\lstinline[classoffset=1,deletekeywords={E},classoffset=0]!Pave(A,B,C,D,E,F,G,H)(1,2,3)!}
\setbox4=\hbox{\lstinline!Codeangle(A,B,C,0,btex \ang{60} etex)!}
\setbox5=\hbox{\lstinline!Rapporteur(clés)(A,B,n,m)!}
\setbox6=\hbox{\lstinline!marque_Para(t)(droite(A,B),droite(C,D),0.5)!}
Voici les commandes disponibles :
\begin{description}
  \setlength{\PfCLargeurTableau}{0.9\linewidth-\wd2}%
\item[Commandes de tracé/remplissage]\hfill
  \begin{center}
    \setlength{\PfCLargeurTableau}{0.9\linewidth-\wd3}%
    \begin{tabular}{p{\wd3}p{\PfCLargeurTableau}}
      \lstinline!trace cc!&trace l'objet \lstinline!cc!.\\
      \lstinline!remplis cc withcolor...!&remplis l'objet \lstinline!cc! avec une couleur \MP.\\
      \lstinline!marque_p:="style"!&modifie le style de marquage des points. \lstinline!style! peut prendre les valeurs \lstinline!"plein"!,\lstinline!"croix"!,\lstinline!"creux"!.\\
      \lstinline!pointe(A,B...)!&marque les points $A$, $B$\dots{} avec le style choisi par \lstinline!marque_p!.\\
      \lstinline!cotationmil(A,B,n,b,texte)!&\og flèche \fg{} le segment $[AB]$ à $n$ unités du segment, en laissant $b$ unités au milieu, avec le texte \lstinline!\texte!.
    \end{tabular}
  \end{center}
\item[Objets géométriques]\hfill
  \begin{center}
    \begin{tabular}{m{\wd2}m{\PfCLargeurTableau}}
      \hline
      \multicolumn{2}{|c|}{Points}\\
      \hline
      \lstinline!pair A!&définit le point $A$.\\
      \lstinline!milieu(A,B)!& définit le milieu du segment $[AB]$.\\
      \lstinline!CentreCercleC(A,B,C)!& définit le centre du cercle circonscrit à $ABC$.\\
      \lstinline!CentreCercleI(A,B,C)!& définit le centre du cercle inscrit à $ABC$.\\
      \lstinline!Orthocentre(A,B,C)!&définit l'orthocentre de $ABC$.\\
      \lstinline!iso(A,B,C...)!&définit l'isobarycentre du polygone $ABC\dots$\\
      \lstinline!pointarc(cc,60)!&définit le point du cercle \lstinline!cc! associé à l'angle principal de mesure \ang{60}.\\
      \lstinline!projection(M,A,B)!&définit le projeté orthogonal du point $M$ sur la droite $(AB)$.
    \end{tabular}
    \end{center}
    \begin{center}
      \begin{tabular}{m{\wd2}m{\PfCLargeurTableau}}
        \hline
        \multicolumn{2}{|c|}{Droites et segments}\\
        \hline
        \lstinline!segment(A,B)!& définit le segment $[AB]$.\\
        \lstinline!droite(A,B)!& définit la droite $(AB)$.\\
        \lstinline!demidroite(A,B)!& définit la demi-droite $[AB)$.\\
        \lstinline!chemin(A,B,C,D)!& définit la ligne brisée $ABCD$.\\
        \lstinline!polygone(A,B,C,D)!& définit le polygone $ABCD$.\\
        \lstinline!perpendiculaire(A,B,I)!& définit la perpendiculaire à la
                                            droite $(AB)$ passant par $I$.\\
        \lstinline!parallele(A,B,I)!& définit la parallèle à la
                                      droite $(AB)$ passant par $I$.\\
        \lstinline!mediatrice(A,B)!& définit la médiatrice du segment
                                     $[AB]$.\\
        \lstinline!bissectrice(A,B,C)!& définit la bissectrice de l'angle
                                        $\widehat{ABC}$.\\
      \end{tabular}
    \end{center}
    \begin{center}
      \begin{tabular}{p{\wd2}p{\PfCLargeurTableau}}
        \hline
        \multicolumn{2}{|c|}{Cercles et arcs}\\
        \hline
        \lstinline!cercles(A,2u)!& définit le cercle de centre $A$ et de
        rayon \Lg{2}.\\
      \lstinline!cercles(A,B)!& définit le cercle de centre $A$ et
        passant par $B$.\\
      \lstinline!arccerccle(A,B,C)!& définit l'arc de cercle $AB$ (dans
        le sens positif) de centre $C$.\\
      \lstinline!coupdecompas(A,B,10)!& définit \og un coup de compas\fg{}
        centré en $A$, passant par $B$ et de longueur 20 (l'unité étant la
        longueur du cercle associé divisée par 360).\\
      \end{tabular}
    \end{center}
    \begin{center}
      \setlength{\PfCLargeurTableau}{0.9\linewidth-\wd3}%
      \begin{tabular}{p{\wd3}p{\PfCLargeurTableau}}
        \hline
        \multicolumn{2}{|c|}{Solides}\\
        \hline
        \lstinline[classoffset=1,deletekeywords={E,Cube},classoffset=0]!Cube(A,B,C,D,E,F,G,H)!&définit un cube d'arête \lstinline!arete! dont les sommets sont $A$, $B$, $C$, $D$ (pour la face du dessous, dans le sens trigonométrique), $E$, $F$, $G$ et $H$ (pour la face du dessus, dans le sens trigonométrique, $[ED]$ étant une arête).\\
        \lstinline[classoffset=1,deletekeywords={E,Pave},classoffset=0]!Pave(A,B,C,D,E,F,G,H)(1,2,3)!&définit un pavé droit dont les sommets sont $A$, $B$, $C$, $D$ (pour la face du dessous, dans le sens trigonométrique), $E$, $F$, $G$ et $H$ (pour la face du dessus, dans le sens trigonométrique, $[ED]$ étant une arête) et de largeur 2, de profondeur 1 et de hauteur 3.\\
        \lstinline!Tetraedre(A,B,C,D)!&définit un tétraèdre régulier de sommet $A(0,0,1)$.
      \end{tabular}
    \end{center}
%    \clearpage
  \item[Papiers]\hfill
    \begin{center}
      \begin{tabular}{p{\wd2}p{\PfCLargeurTableau}}
        \lstinline!grille(n)!&pour afficher une grille carrée de côté $n$ donné en millimètre.\\
        \lstinline!papiermillimetre!&pour afficher du papier millimétré.\\
        \lstinline!papiercahier!&pour afficher du papier Seyes.\\
        \lstinline!papierisometrique!&pour afficher du papier isométrique.\\
        \lstinline!papierpointe!&pour afficher du papier pointé à maille carrée.\\
        \lstinline!papierisometrique!&pour afficher du papier pointé à maille isométrique.\\
        \lstinline!origine((a,b))!&pour placer l'origine du repère au point $(a\,\text{cm};b\,\text{cm})$.\\
        \lstinline!axes!&pour tracer les axes du repère.\\
        \lstinline!pp(a,b)!&pour repérer le point de coordonnées $(a;b)$.\\
        \lstinline!ppiso(a,b)!&pour repérer le point de coordonnées $(a;b)$ sur un papier isométrique.\\
      \end{tabular}
    \end{center}
  \item[Outils]\hfill
    \begin{center}
        \setlength{\PfCLargeurTableau}{0.9\linewidth-\wd5}%
    \begin{tabular}{p{\wd5}p{\PfCLargeurTableau}}
      \lstinline!compas(A,B,n)!&pour afficher un compas centré sur $A$ et passant par $B$; $n$ indique le positionnement \og vertical\fg{} du compas (1 au dessus du segment $[AB]$, $-1$ au dessous du segment $[AB]$).\\
      \lstinline!rapporteur(A,B,n)!&pour afficher un rapporteur centré sur $A$ et \og aligné\fg{} sur le segment $[AB]$; $n$ indique le positionnement \og vertical\fg{} du rapporteur (1 au dessus du segment $[AB]$, $-1$ au dessous du segment $[AB]$).\\
      \lstinline!rapporteurdouble(A,B,n)!&pour afficher un rapporteur centré sur $A$, \og aligné\fg{} sur le segment $[AB]$ et doublement gradué; $n$ indique le positionnement \og vertical\fg{} du rapporteur (1 au dessus du segment $[AB]$, $-1$ au dessous du segment $[AB]$).\\
      \lstinline!Rapporteur(clés)(A,B,n,m)!&\PfCMAJ{0.99-z-r}pour afficher\footnotemark{} un rapporteur centré sur $A$, \og aligné\fg{} sur le segment $[AB]$; $n$ indique le positionnement \og vertical\fg{} du rapporteur (1 au dessus du segment $[AB]$, $-1$ au dessous du segment $[AB]$); $m$ indique le pas de tracé des graduations (1; 5 ou 10). Les clés disponibles sont la clé \lstinline[classoffset=1,deletekeywords={Double},classoffset=0]!"Double"! pour une double graduation; la clé \lstinline!"Tiret"! pour afficher une croix au centre du rapporteur et la clé \lstinline!"Aleph"! pour afficher un rapporteur type Aleph.
%                                             \begin{itemize}
%                                             \item \lstinline[classoffset=1,deletekeywords={Double},classoffset=0]!"Double"! pour une double graduation;
%                                             \item \lstinline!"Tiret"! pour afficher une croix au centre du rapporteur;
%                                             \item \lstinline!"Aleph! pour afficher un rapporteur type Aleph.
%                                             \end{itemize}
%      \\
    \end{tabular}

       \begin{tabular}{p{\wd5}p{\PfCLargeurTableau}}
      \lstinline!regle(A,B,n)!&pour afficher une règle graduée positionnée pour mesurer le segment $[AB]$ en prenant le point $A$ pour origine; $n$ indique le positionnement \og vertical\fg{} de la règle (1 au dessus du segment $[AB]$, $-1$ au dessous du segment $[AB]$).\\
      \lstinline!equerre(A,B,C,n)!&pour afficher une équerre positionnée sur la droite $(AB)$ et passant par le point $C$; $n$ indique le positionnement \og vertical\fg{} de l'équerre (1 positionnée dans le sens de $A$ vers $B$, $-1$ positionnée dans le sens de $B$ vers $A$).\\
      \lstinline!arete!&pour modifier la longueur de l'arête de l'outil \lstinline[classoffset=1,deletekeywords={Cube}]!Cube!.\\
    \end{tabular}
  \end{center}
  \footnotetext{Cette commande remplace les deux commandes précédentes. Elles sont restées disponibles par souci de compatibilité.}
  \item[Paramètres]\hfill
    \begin{center}
      \setlength{\PfCLargeurTableau}{0.9\linewidth-\wd4}%
      \begin{tabular}{p{\wd6}p{\PfCLargeurTableau}}
        \lstinline!marquesegment(A,B)!&pour coder les extrémités du
        segment $[AB]$.\\
       \lstinline!marquedemidroite(A,B)!&pour coder l'origine de la
        demi-droite $[AB)$.\\
       \lstinline!codeperp(A,B,C,5)!&pour coder l'angle
        $\widehat{ABC}$ avec un angle droit dont la longueur vaut 5 fois
        celle du vecteur unité.\\
       \lstinline!Codelongueur(A,B,2)!&pour coder la longueur $AB$
        avec le codage \no2 (cinq codages sont disponibles : 1 à 5).\\
       \lstinline!Codeangle(A,B,C,0,btex \ang{60} etex)!& pour coder
        l'angle $\widehat{ABC}$ avec le codage 0 (trois codages sont disponibles : 0 à 2) en indiquant sa mesure.\\
        \lstinline!marque_Para(t)(droite(A,B),droite(C,D),0.5)!& marque le parallélisme (avec {\ttfamily t=""}) ou pas (avec {\ttfamily t="-"}) entre les droites $(AB)$ et $(CD)$ au niveau de la \og moitié\fg{} {\ttfamily 0.5} de la drtoite $(AB)$.\\
       \lstinline!marque_a!& définit le rayon des arcs de cercles de codage des
        angles. \DefautR{20}\\
       \lstinline!marque_s!& définit la longueur des traits de codage des
                             longueurs. \DefautR{5}\\
        \lstinline!echelleequerre!& définit l'échelle de l'équerre.\DefautR{2}\\
      \end{tabular}
      \begin{tabular}{p{\wd6}p{\PfCLargeurTableau}}
        \lstinline!Initialisation(1500,30,20,50)!&définit les paramètres de projection dans le cas d'une figure spatiale : \num{1500} pour la distance de \og la caméra\fg{} à l'écran, 30 pour la longitude de \og la caméra\fg{} (\ang{30}), 20 pour la latitude de \og la caméra\fg{} (\ang{20}) et 50 pour le zoom effectué.
      \end{tabular}
    \end{center}
\end{description}
\begin{Codes}[listing side text]{0.35}{\footnotesize}
\begin{Geometrie}
  pair A,B,C;
  A=u*(1,1);
  B-A=u*(4,0);
  C=cercles(A,3u) intersectionpoint cercles(B,2u);
  trace polygone(A,B,C);
  trace coupdecompas(A,C,10);
  trace coupdecompas(B,C,10);
  trace compas(A,C,1);
  label.lft(btex A etex,A);
  label.rt(btex B etex,B);
  label.top(btex C etex,C);
  trace codeperp(A,C,B,5) dashed evenly;
  trace appelation(A,B,-3mm,btex 4 cm etex);
  trace appelation(A,C,3mm,btex 3 cm etex);
  trace appelation(C,B,3mm,btex 2 cm etex);    
\end{Geometrie}
\end{Codes}
\clearpage
\begin{Codes}[listing side text]{0.35}{\footnotesize}
\begin{Geometrie}[TypeTrace="MainLevee"]
  u:=7mm;
  pair A,B,C;
  A=u*(1,1);
  B-A=u*(5,1);
  C=rotation(B,A,60);
  marque_s:=marque_s/3;
  trace Codelongueur(A,B,B,C,C,A,2);
  trace Codeangle(C,B,A,0,btex \ang{60} etex);
  trace polygone(A,B,C);
  trace cotationmil(A,C,5mm,20,btex 6 cm etex);
  label.llft(btex A etex,A);
  label.rt(btex B etex,B);
  label.top(btex C etex,C);
\end{Geometrie}
\end{Codes}
\begin{Codes}[listing side text]{0.35}{}
\begin{Geometrie}[CoinHD={u*(6,5)}]
  trace papiermillimetre withcolor orange;
  origine((3,2));
  trace axes;
  pair A,B;
  A=pp(-2,-1);
  B=pp(2,2);
  drawarrow A--B;
\end{Geometrie}
\end{Codes}
\begin{Codes}[listing side text]{0.5}{}
\begin{Geometrie}[CoinHD={u*(8,7)}]
  pair A,B,C;
  A=u*(1,1);
  B-A=u*(6,0);
  C-A=u*(5,4);
  trace polygone(A,B,C);
  trace perpendiculaire(A,B,B);
  trace parallele(A,B,C);
  trace mediatrice(B,C);
  trace bissectrice(B,A,C);
  label.llft(btex A etex,A);
  label.lrt(btex B etex,B);
  label.top(btex C etex,C);
\end{Geometrie}
\end{Codes}
\begin{Codes}[listing side text]{0.35}{}
\begin{Geometrie}
  pair A,B,C,D;
  A=u*(5,5);
  B-A=u*(2,1);
  C=rotation(B,A,30);
  D-A=u*(-1,2);
  trace cercles(A,1.5u);
  trace cercles(B,A);
  trace arccercle(B,C,A);
  trace coupdecompas(A,D,10);
  dotlabel.llft(btex A etex,A);
  dotlabel.rt(btex B etex,B);
  dotlabel.top(btex C etex,C);
  dotlabel.ulft(btex D etex,D);
\end{Geometrie}
\end{Codes}
\begin{Codes}[listing side text,listing options={frame=,classoffset=1,deletekeywords={E,Espace,Pave,},classoffset=0}]{0.27}{}
\begin{Geometrie}[CoinBG={u*(-10,-10)},TypeTrace="Espace"]
  Initialisation(1500,30,20,50);
  color A,B,C,D,E,F,G,H;
  trace Pave(A,B,C,D,E,F,G,H)(1,2,3);
\end{Geometrie}
\end{Codes}
