
\documentclass[a4paper,10pt,latin1,fourier]{article}
\usepackage{polymaths}
\usepackage{listings}

\lstloadlanguages{MetaPost,sh}
\lstset{numbers=none,language=MetaPost,%
keywordstyle =\color{blue}\bfseries,basicstyle=\sffamily\small,
    backgroundcolor=\color{bleu_ciel}}
   



%\renewcommand\thesubsection{}
\usepackage[ps2pdf,colorlinks]{hyperref}
\renewcommand{\La}{\LaTeX{}}
\setcounter{tocdepth}{2}

\entete{{\bfseries \large \rightmark}}{\texttt{ \large \textbf{METAPOST}}}{Stage \La}



\begin{document}
\thispagestyle{empty}
\setlength{\parindent}{0mm}

\begin{center}
\MONSTER{  \textsf{ METAPOST}}

\end{center}




\tableofcontents



\newpage


Tout d'abord, on commencera chaque fichier mp par le préambule

\begin{lstlisting}
input /home/moi/Lycee/TS/figures/introMP;
\end{lstlisting}


qui contient en fait 

\begin{lstlisting}
input /home/moi/Lycee/TS/figures/newcourbes/newcourbes; 
input /home/moi/Lycee/TS/figures/geo;
input /home/moi/Lycee/TS/figures/couleur;
\end{lstlisting}


Il faudra juste remplacer 

\begin{lstlisting}
 /home/moi/Lycee/TS/figures/
\end{lstlisting}

par le chemin correspondant à votre ordinateur.

\begin{Danger}
La sortie pdf est de moins bonne qualité que la sortie ps, donc aucune hésitation pour le choix de l'extension : voyez, si vous êtes équipé(e), la différence en cliquant 
\href{http://gconnan.free.fr/les\%20pdf/PresMPost.ps}{ICI}
\end{Danger}



Les mots clés colorés en bleus sont ceux présents dans la configuration de MetaPOST par défaut. Les mots-clés rajoutés restent en noir.

\section{Repère}

La première chose est de fixer le repère à l'aide de la macro \texttt{repere} : 

\begin{lstlisting}
repere(origine des x, origine des y,Xmin,Xmax,Ymin,Ymax,Unite x,Unite y)
\end{lstlisting}


\subsection{Axes}

On tace les axes, l'origine, les unités, les labels des axes.

\begin{lstlisting}
beginfig(1);
repere(0,0,-2,8,-1,4,1cm,1cm);
r_axes;
r_origine;
r_unites;
r_labelxy;
endfig;
\end{lstlisting}

\begin{center}
\includegraphics{PresMPost.1}
\end{center}

\subsection{Graduations}

\begin{lstlisting}
...
grad_x(0.5,1,0.4white);
grad_y(1,1,0.4white);
...
\end{lstlisting}


\begin{center}
\includegraphics{PresMPost.3}
\end{center}


\subsection{Quadrillages}

On utilise \texttt{quad\_xy(fraction de l'unité, couleur)} et \texttt{quadu\_xy(couleur)} ou seulement \texttt{quad\_x} et \texttt{quad\_y} si on ne veut qu'une partie du quadrillage.

\begin{lstlisting}
...
quad_xy(0.2,0.3*or);
quadu_xy(0.1*or);
...
\end{lstlisting}


\begin{center}
\includegraphics{PresMPost.2}
\end{center}

\break

\section{Points, droites}


\subsection{Points}

\begin{lstlisting}
...
r_pp(3,2);
r_cp(5,3);

label.rt(btex $A$ etex, r_p(3,2));
label.rt(btex $B$ etex, r_p(5,3));
...
\end{lstlisting}



\begin{center}
\includegraphics{PresMPost.4}
\end{center}




\subsection{Projection de points}

\begin{lstlisting}
...
r_proj(3,2,vert_fonce);
...
\end{lstlisting}


\begin{center}
\includegraphics{PresMPost.5}
\end{center}




\subsection{Segment}

\begin{lstlisting}
r_segment(3,2,5,3);
\end{lstlisting}

\begin{center}
\includegraphics{PresMPost.6}
\end{center}

\subsection{Droite}

Droite passant par le point A$(3\pv 2)$ et de coefficient directeur  1.5

\begin{lstlisting}
...
draw r_droite(3,2,1.5) withcolor red;
...
\end{lstlisting}

\begin{center}
\includegraphics{PresMPost.7}
\end{center}



Droite d'équation $x=3$

\begin{lstlisting}
...
draw rx_droite(3) withcolor blue;
...
\end{lstlisting}

\begin{center}
\includegraphics{PresMPost.8}
\end{center}


\section{Fonctions}

\subsection{Courbes $y=f(x)$ }

On travaille en paramétrant les abscisses et les ordonnées pour plus de généralité, donc on définit \texttt{fx(t)} et \texttt{fy(t)} et on utilise 
\texttt{f\_courbe(fx,fy,ti,tf,nb de points)}

\begin{lstlisting}
beginfig(9)
%%%%%%%%%%%%%%%%%%%%%%%
vardef fx(expr t)=
t
enddef;

vardef fy(expr t)=
                             sin(t) % c'est la seule ligne à changer
enddef;
%%%%%%%%%%%%%%%%%%%%%
repere(0,0,-2,8,-1,1,1cm,2cm);
r_axes;
r_origine;
r_unites;
r_labelxy;
quad_xy(0.2,0.3*or);
quadu_xy(0.1*or);
grad_x(1,1,0.4white);
grad_y(1,1,0.4white);

draw f_courbe(fx,fy,-2,2,100)withpen pencircle scaled 1.5bp withcolor red;
draw f_courbe(fx,fy,2,8,100)withpen pencircle scaled 1.5bp withcolor bleu dashed evenly;

r_fin;
endfig;

\end{lstlisting}



\begin{center}
\includegraphics{PresMPost.9}
\end{center}



\subsection{Tangente}

On obtient une approximation du nombre dérivée en $a$ à partir du taux de variation de pas $h$.


Si on veut une double flèche de <<~largeur~>> $b$ au point d'abscisse $a$, on utilise \texttt{tracef\_tangente(fx,fy,a,b,h,couleur)}.

\begin{lstlisting}
%%%%%%%%%%%%%%%%%%%%%%%
vardef fx(expr t)=
t
enddef;

vardef fy(expr t)=
                             exp(0.5*t) % c'est la seule ligne à changer
enddef;
%%%%%%%%%%%%%%%%%%%%%
repere(0,0,-2,8,-2,8,1cm,0.5cm);
r_axes;
r_origine;
r_unites;
r_labelxy;


draw f_courbe(fx,fy,-2,8,100)withpen pencircle scaled 1.5bp withcolor red;

tracef_tangente(fx,fy,3,1,0.05,bleu_f);

r_fin;
endfig;
\end{lstlisting}



\begin{center}
\includegraphics{PresMPost.10}
\end{center}

Si on veut tracer la tangente, on préfèrera \texttt{f\_tangente(fx,fy,a,h)}

\begin{lstlisting}
...
draw f_tangente(fx,fy,1,0.05);
...
\end{lstlisting}


\begin{center}
\includegraphics{PresMPost.11}
\end{center}

\break

\section{Suites}

\subsection{Suites $u_n=f(n)$}

Il faut rentrer \texttt{ux} et \texttt{uy} et \texttt{u\_courbe(ux,uy,ni,nf,t);} avec t prenant la valeur 1 si on veut les $u_i$ et 0 sinon.

\begin{lstlisting}
beginfig(12)
%%%%%%%%%%%%%%%%%%%%%%%
vardef ux(expr t)=
t
enddef;
vardef uy(expr t)=
                             exp(0.5*t) % c'est la seule ligne à changer
enddef;
%%%%%%%%%%%%%%%%%%%%%
repere(0,0,-2,5,-2,8,1.5cm,0.5cm);
r_axes;
r_origine;

 u_courbe(ux,uy,0,4,1);

r_fin;
endfig;
\end{lstlisting}



\begin{center}
\includegraphics{PresMPost.12}
\end{center}

\subsection{Suites $u_{n+1}=f(u_n)$}


On utilise \texttt{u\_reccourbe(fx,fy,u0,ni,nf,xi,xf,t}, t jouant le même rôle que plus haut.

\begin{lstlisting}
beginfig(13)
%%%%%%%%%%%%%%%%%%%%%%%
vardef fx(expr t)=
t
enddef;
vardef fy(expr t)=
                             sqrt(1+t) % 
enddef;
%%%%%%%%%%%%%%%%%%%%%
repere(0,0,-2,3,-1,2,2.5cm,2.5cm);
r_axes;
r_origine;

 u_reccourbe(fx,fy,-0.5,0,3,-1,2,1);

r_fin;
endfig;
\end{lstlisting}


\begin{center}
\includegraphics{PresMPost.13}
\end{center}



\section{Intégration}

\subsection{Aire sous une courbe}

On utilise \texttt{Aire(fx,fy,a,b,couleur)} pour représenter le domaine compris entre la courbe d'équation $y=f(x)$, l'axe des abscisses, les droites d'équation $x=a$ et $x=b$.

\begin{lstlisting}
beginfig(32)

%%%%%%%%%%%%%%%%%%%%%%%
vardef fx(expr t)=
t
enddef;

vardef fy(expr t)=
                             t*t*exp(1-t) 
enddef;
%%%%%%%%%%%%%%%%%%%%%
repere(0,0,-1,7,-2,4,1cm,1cm);

Aire(fx,fy,-.5,2,bleu_ciel);

r_axes;
r_origine;
r_unites;
r_labelxy

draw f_courbe(fx,fy,-1,7,50)withpen pencircle scaled 1.5bp withcolor red;

r_fin
endfig;
\end{lstlisting}


\begin{center}
\includegraphics{PresMPostbis.32}
\end{center}


\subsection{Méthodes des rectangles}

On utilise \texttt{trace\_rectangles\_min\_c(fx,fy,a,b,largeur en cm ,couleur)} et \texttt{trace\_rectangles\_max(fx,fy,a,b,largeur en cm)}


 Il existe une version <<~transparente~>> de la première macro : \texttt{trace\_rectangles\_min\_t(fx,fy,a,b,largeur en cm )}
\begin{lstlisting}
%==========================================================================
vardef fx(expr t) =
t
enddef;
vardef fy(expr t) =
                      (-2)*((t-0.5)**2)+0.5
enddef;
%==========================================================================
                
beginfig(14); 
repere(0,0,-0.2,1.2,-0.2,0.7,8cm,6cm);
r_axes;
r_origine;
r_labelxy;

draw f_courbe(fx,fy,0,1,100)  withpen pencircle scaled 1.2bp;

 trace_rectangles_min_c(fx,fy,0,1,1/10,bleu_ciel);
trace_rectangles_max(fx,fy,0,1,1/10);

r_fin;
endfig;
\end{lstlisting}



\begin{center}
\includegraphics{PresMPost.14}
\end{center}


Après, on peut s'amuser : 

\begin{lstlisting}
%========================================================================
vardef fx(expr t) =
t
enddef;
vardef fy(expr t) =
               cos(t)+4
enddef;
%======================================================================== 
beginfig(15);
path p[],q[],t[];
repere(0,0,-1,9,-1,6,1cm,1cm);

%definition de la surface
p1 = f_courbe(fx,fy,2,9,100);
q1 = rx_droite(3);
q2= rx_droite(6);
q3 =rx_droite(8);
q4 = r_droitedir(0,0,0);

%remplissage de la surface
t1 = buildcycle(q2,p1,q3,q4);
fill t1 withcolor bleu;
t2= buildcycle(q1,p1,q2,q4);
fill t2 withcolor bleu_m;

%trace de la surface
draw p1;
draw r_point(3,0)--f_point(fx,fy,3);
draw r_point(6,0)--f_point(fx,fy,6);
draw r_point(8,0)--f_point(fx,fy,8);
label.lft(btex $y=f(x)$ etex, f_point(fx,fy,2));
label.bot(btex $a$ etex,  r_point(3,0));
label.bot(btex $b$ etex,  r_point(6,0));
label.bot(btex $c$ etex,  r_point(8,0));


trace_rectangles_min_t(fx,fy,3,6,1);

trace_rectangles_max(fx,fy,3,6,1);

trace_rectangles_min_t(fx,fy,6,8,1/2) ;

trace_rectangles_max(fx,fy,6,8,1/2);

r_axes;
r_origine;
r_fin;
endfig;
\end{lstlisting}


\begin{center}
\includegraphics{PresMPost.15}
\end{center}


\subsection{Méthodes des trapèzes}

\texttt{trace\_trapezes(fx,fy,a,b,largeur)}


\begin{lstlisting}
%==========================================================================
vardef fx(expr t) =
t
enddef;
vardef fy(expr t) =
                      cos(t)+4
enddef;
%==========================================================================   
beginfig(16); 
repere(0,0,-1,10,-1,6,1cm,1cm);
r_axes;
r_origine;
r_labelxy;

draw  f_courbe(fx,fy,2,10,100) withpen pencircle scaled 1.2bp;

 trace_trapezes(fx,fy,3,9,1.5);

r_fin;
endfig;
\end{lstlisting}

\begin{center}
\includegraphics[height=5cm]{PresMPost.16}
\end{center}



\section{Géométrie}



\subsection{Triangle}


\begin{lstlisting}
beginfig(18);
         pair A,B,C,O,G,H;
        string s;
        u=1cm;
        A=origin;B=(5u,0);C=(2u,3.5u);
        draw A--B--C--cycle withcolor red;
        O=centrecerclecirconscrit(A,B,C);
        G=centredegravite(A,B,C);
        H=orthocentre(A,B,C);
        
            draw cerclecirconscrit(A,B,C) dashed evenly withcolor blue;
            draw cercleinscrit(A,B,C) dashed withdots withpen pencircle scaled 
            1.5bp withcolor bleu;

          pickup pencircle scaled 2 bp;
        for t=O,G,H :
                draw t withpen pencircle scaled 3bp;
        endfor

        draw droite(O,G,10) withcolor rose;

        label.rt(btex $O$ etex, O);        
        label.rt(btex $G$ etex, G);  label.rt(btex $H$ etex, H);
endfig;
\end{lstlisting}






\begin{center}
\includegraphics{PresMPost.18}
\end{center}


\begin{lstlisting}
beginfig(19);
        pair A,B,M,I;
        A=origin;B=(5u,0);

draw mediatrice(A,B,0.5) withcolor blue; 
I:=milieu(A,B);

M:=B rotatedaround(I,90);

draw symbole_ortho(B,I,M,0.25u);

draw A--B;
label.lrt(btex $A$ etex, A);
label.llft(btex $B$ etex, B);

label.llft(btex $I$ etex, I);

draw_marks(A--I,2);       draw_marks(B--I,2);

endfig;
\end{lstlisting}


\begin{center}
\includegraphics{PresMPost.19}
\end{center}



\subsection{Cube}



La macro \texttt{cube(origine,largeur arête)} trace un cube à partir du point origine et \texttt{nommecube} nomme les sommets de manière usuelle.

\begin{lstlisting}
beginfig(17);
        picture lecube;
        pair A,H,F,C;
        lecube=cube((0,0),5cm);
        draw lecube;
        nommecube;
        A=sommetCube0;
        H=sommetCube7;
        F=sommetCube5;
        C=sommetCube2;
        pickup pencircle scaled 1bp;
        draw A--F--C withcolor blue;
        draw H--F withcolor blue;
        draw A--H--C--cycle dashed evenly withcolor vert_fonce;
endfig;
\end{lstlisting}

\begin{center}
\includegraphics{PresMPost.17}
\end{center}



\subsection{Diverses figures dans l'espace}

Les sources sont à l'adresse 

\url{http://193.55.139.7/syracuse/metapost/cours/nivaud/fig1sc_geoespvec/fig1sc_geoespvec.mp}

Le site contient encore bien d'autres magnifiques figures à copier-coller...

\begin{center}
\includegraphics{PresMPost.20}
\includegraphics{PresMPost.21}
\includegraphics{PresMPost.22}
\includegraphics{PresMPost.23}
\includegraphics{PresMPost.24}
\includegraphics{PresMPost.25}
\includegraphics{PresMPost.26}
\includegraphics{PresMPost.27}
\includegraphics{PresMPost.28}
\includegraphics{PresMPost.29}
\includegraphics{PresMPost.30}

\end{center}

\break


\section{Arbre en proba}


Pour produire rapidement un arbre $2\times 2$


\begin{lstlisting}
input TEX
beginfig(1)
arbre("$A$","$\overline{A}$","$C$","$D$","1/3","2/3","3/5","2/5","5/7","2/7");
endfig;
\end{lstlisting}
\includegraphics{PresMPost.31}


\section{Conversions}

Voici quelques makefile pour convertir les fichiers produits par metapost en eps et en pdf.
Il suffit d'enregistrer ces fichiers dans \texttt{/usr/bin} sous la forme par exemple de \texttt{mp2eps.sh}, d'éditer le fichier metapost sans préambule ni \texttt{beginfig} et de lancer \texttt{./mp2eps.sh fichier}. Dans un éditeur comme Kile ou emacs, on fabrique facilement un raccourci du type Alt+M,E pour cette conversion.

\subsection{Conversion en eps}

\begin{lstlisting}[language=sh]
  #!/bin/sh
  FILE=${1%.*}
  cat>mptemp.mp<<EOF
  input /home/moi/Lycee/TS/figures/newcourbes/newcourbes; 
  input /home/moi/Lycee/TS/figures/couleur;
  verbatimtex
  %&latex
  \documentclass{polymaths}
  \begin{document} 
  etex
  beginfig(1)
  input $FILE
  endfig;
  end
  EOF
  mpost mptemp 
  cat>textemp.tex<<EOF
  \documentclass{polymaths}
  \thispagestyle{empty}
  \begin{document}
  \begin{TeXtoEPS}
  \includegraphics{mptemp.1}
  \end{TeXtoEPS}
  \end{document}
  EOF
  latex textemp
  dvips -o $FILE.eps -E 'textemp.dvi'
  rm -f textemp.*
  rm -f mptemp.*
\end{lstlisting}

\subsection{Conversion en pdf}

\begin{lstlisting}[language=sh]
  #!/bin/sh
  FILE=${1%.*}
  cat>mptemp.mp<<EOF
  input /home/moi/Lycee/TS/figures/newcourbes/newcourbes; 
  input /home/moi/Lycee/TS/figures/couleur;
  verbatimtex
  %&latex
  \documentclass{polymaths}
  \begin{document} 
  etex
  beginfig(1)
  input $FILE
  endfig;
  end
  EOF
  mpost mptemp 
  cat>textemp.tex<<EOF
  \documentclass{polymaths}
  \thispagestyle{empty}
  \begin{document}
  \begin{TeXtoEPS}
  \includegraphics{mptemp.1}
  \end{TeXtoEPS}
  \end{document}
  EOF
  latex textemp
  dvips -o 'textemp.eps' -E 'textemp.dvi'
  epstopdf textemp.eps --debug --outfile=$FILE.pdf
  rm -f textemp.*
  rm -f mptemp.*

\end{lstlisting}

\end{document}