\documentclass[10pt,a4paper]{article}
%%% taille 10 points et format de papier A4
%%% classe article

%%% Codage en unicode
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} 

\usepackage{multicol,multirow}%%%         multicolonnes multilignes
\usepackage[normalem]{ulem}%%%   pour texte barré \sout{}
\usepackage[french]{babel}%%%    écriture en français
\DecimalMathComma%%%             évite l'espace après la virgule en mode math
%\usepackage{multido}%%%          pour faire des boucles
\usepackage{pst-all,pst-eucl,pst-func}%%% PsTricks etc.
\usepackage{pst-bezier}
\usepackage{graphicx}%%%         pour graphiques et couleurs	
\usepackage{amsmath,amsfonts,amssymb}%%% outils AMS
\usepackage{mathrsfs}%%%         police script \mathscr{}
\usepackage{tabularx}%%%         tableaux
\usepackage{fancybox}%%%         divers boîtes
\usepackage{lscape}%%%           mode paysage
\usepackage[np]{numprint}%%%     pour formater les nombres de plus de 3 chiffres
\usepackage{colortbl}%%%         pour griser des cases dans un tableau
\usepackage{makeidx}%%%          pour créer un index
\makeindex%%%                    indispensable après l'appel du package makeidx
\usepackage{lettrine}%%%         pour créer des lettrines
\usepackage{eurosym}%%%          sigle euro
\usepackage{xcolor}

%\usepackage{bez123}%%%     courbes de Bézier

\usepackage{vmargin}%%%          réglage des marges
\setmarginsrb{3cm}{2cm}{3cm}{2cm}{1cm}{1cm}{1cm}{1cm}
% 1 est la marge gauche
% 2 est la marge en haut
% 3 est la marge droite
% 4 est la marge en bas
% 5 fixe la hauteur de l'entête
% 6 fixe la distance entre l'entête et le texte
% 7 fixe la hauteur du pied de page
% 8 fixe la distance entre le texte et le pied de page

\setlength{\parindent}{0pt}%%% règle l'indentation en début de paragraphe 
\setlength{\parskip}{3pt}%%% espacement entre 2 paragraphes

%%%  Commandes perso FH

%%% Pour intégrale, somme et produit, etc.
\newcommand{\ds}{\displaystyle}%%% raccourci pour \displaystyle

%%% ensembles de nombres
%%% On réservera le style "double barre" à l'écriture au tableau
\newcommand{\N}{\textbf{N}}
\newcommand{\Z}{\textbf{Z}}
\newcommand{\D}{\textbf{D}}
\newcommand{\Q}{\textbf{Q}}
\newcommand{\R}{\textbf{R}}
\newcommand{\K}{\textbf{K}}

%%% différents repères
\newcommand{\Oij}{(\text{O}\,;\,\vec{\imath}\,,\,\vec{\jmath})}
\newcommand{\rep}{(\text{O},\text{I},\text{J})}
\newcommand{\Ouv}{(\text{O}\,;\,\vec{u}\,,\,\vec{v})}
%\newcommand{\Oijk}{(\text{O}\,;\,\vec{\imath}\,,\,\vec{\jmath}\,,\,\vec{k})}

%%%  Courbe représentative
%\newcommand{\Cr}[1]{\mathscr{C}_{#1}}

%%% crochets gauche et droit
\newcommand{\cg}{\texttt{]}}
\newcommand{\cd}{\texttt{[}}

%%% crochet d'entiers
\newcommand{\cde}{\texttt{[}\!\!\texttt{[}}
\newcommand{\cge}{\texttt{]}\!\!\texttt{]}}

%%% inférieur ou égal, supérieur ou égal
\newcommand{\pg}{\geqslant}
\newcommand{\pp}{\leqslant}

\usepackage{fancyhdr}%%%       En-têtes et pieds de pages
\pagestyle{fancy}
\renewcommand\headrulewidth{1pt}%%% filet haut de page
\renewcommand\footrulewidth{0pt}%%% filet bas de page
\renewcommand{\headwidth}{\textwidth}
%%% head pour haut de page
%%% L C et R pour Left Center et Right
\fancyhead[L]{\url{http://latexetmath.canalblog.com}}
\fancyhead[R]{\today} %%% \today = date du jour
\fancyhead[C]{}
%%% foot pour pied de page
\fancyfoot[C]{\begin{small}-- \thepage\  --\end{small}}  
\fancyfoot[R]{}%%%     {\jobname}%%% nom du fichier tex
\fancyfoot[L]{\href{mailto:francois.hache@free.fr}{FH}}

%%% Pour les énumérations
%%% premier niveau 
\renewcommand{\theenumi}{\textbf{\arabic{enumi}}}
\renewcommand{\labelenumi}{\textbf{\theenumi.}}
%%% deuxième niveau
\renewcommand{\theenumii}{\textbf{\alph{enumii}}}
\renewcommand{\labelenumii}{\textbf{\theenumii.}}
%%% troisième niveau
\renewcommand{\theenumiii}{\textbf{\arabic{enumiii}}}
\renewcommand{\labelenumiii}{\textbf{\theenumiii)}}
%%% permet d'avoir a. au lieu de (a) dans une énumération de niveau 2
%%% voir : http://cahiers.gutenberg.eu.org/cg-bin/article/CG_1994___17_32_0.pdf

\newenvironment{changemargin}[2]
{\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{0pt}%
\setlength{\rightmargin}{0pt}%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{0pt plus 1pt}%
\addtolength{\leftmargin}{#1}%
\addtolength{\rightmargin}{#2}%
}\item }{\end{list}}
%%%% pour changer les marges gauche et droite sur un paragraphe
%%%% \begin{changemargin}{marge gauche}{marge droite}
%%%% ...
%%%% \end{changemargin}

\usepackage{hyperref}%%% pour les références

%%% paramètres des pdf
\hypersetup{
pdfauthor = {F. Hache},
pdftitle = {Fonctions},
pdfstartview = FitH,
pdfcreator = {LaTeX vers PDF}
allbordercolors = white,
colorlinks=true,
linkcolor=red,
urlcolor=red,
unicode=true}

%%% Autres commandes qui doivent être définies après hyperref
\newcommand{\e}{\,\text{e\,}}%%%               le e de l'exponentielle
\renewcommand{\d}{\,\text d}%%%              le d de l'intégration
\renewcommand{\i}{\,\text{i}\,}%%%           le i des complexes
\renewcommand{\v}[1]{\,\overrightarrow{\,\text{#1}\,}}%%% vecteur
\renewcommand{\C}{\textbf{C}}

%%% définitions de nouvelles couleurs
\newrgbcolor{rb}{0.804 0 0}
\newrgbcolor{vb}{0 0.545 0}

%\usepackage{listings}

\begin{document}

\part*{\centering \rb Courbe régulière}

\section{Le problème}

On donne le tableau des variations d'une fonction $f$.

\begin{center}
{\renewcommand{\arraystretch}{1.3}
\psset{nodesep=3pt,arrowsize=2pt 3}  % paramètres
\def\esp{\hspace*{1.5cm}}% pour modifier la largeur du tableau
\def\hauteur{20pt}% mettre au moins 20pt pour augmenter la hauteur
$\begin{array}{|c| *6{c} c|}
\hline
 x & -1 & \esp & 1 & \esp & 3 & \esp & 6 \\
% \hline
%f'(x) &  &  \pmb{+} & \vline\hspace{-2.7pt}0 & \pmb{-} & \vline\hspace{-2.7pt}0 & \pmb{+} & \\  
\hline
  &  &  & \Rnode{max1}{5} & & & &  \Rnode{max2}{3} \\
\text{Variations de }f  & &  & & & & & \rule{0pt}{\hauteur}\\
 & \Rnode{min1}{-2} & & & & \Rnode{min2}{2} & & \rule{0pt}{\hauteur} 
\ncline{->}{min1}{max1} 
\ncline{->}{max1}{min2}
\ncline{->}{min2}{max2} \\
\hline
\end{array}$
}
\end{center}

Comment tracer une courbe \og propre \fg{} représentant une fonction admettant ce tableau de variations?

\section{Mise en place} 

\begin{center}
%\psset{unit=1cm,radius=2pt,showpoints=false}
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-2}   \def\xmax {7}
\def\ymin {-3}   \def\ymax {6}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=1,  gridlabels=0, gridcolor=lightgray] 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(\xmin,\ymin)(\xmax,\ymax) 
\uput[dl](0,0){O} \uput[d](1,0){I}  \uput[r](0,1){J} 
\Cnode*(-1,-2){A} \Cnode*(1,5){B}\Cnode*(3,2){C}   \Cnode*(6,3){D}
\uput[dl](A){A}  \uput[dr](C){C} 
\uput[ur](B){B}  \uput[ur](D){D}
\end{pspicture}
\end{center}

\begin{list}{\textbullet}{}
\item La zone de travail de \verb!\pspicture! est un rectangle défini par \verb!\xmin!, \verb!\xmax!, \verb!\ymin! et \verb!\ymax!. 
\item On trace les axes, on nomme l'origine O, puis les points I et J avec \verb!\uput!.
\item Les quatre points A, B, C et D sont les points intéressants de la courbe. Je les ai définis au moyen de \verb!\Cnode*!. C'est la variable \verb!radius! qui définit la taille du point; en mettant \verb!radius! à \texttt{0pt}, le point existe mais n'est pas dessiné.

Cette façon de faire permet de parler des points en utilisant leurs noms au lieu de leurs coordonnées; plus la figure est compliquée, plus ce procédé est efficace.
\item Les noms des points sont écrits avec \verb!\uput!.
\item Une grille complète le tout.
\end{list}

\section{Première idée} 

Il existe une instruction dans \texttt{PsTricks} qui permet de tracer une courbe passant par certains points; c'est \verb!\pscurve!.

On essaie donc \verb!\pscurve(A)(B)(C)(D)!.

\begin{center}
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-2}   \def\xmax {7}
\def\ymin {-3}   \def\ymax {6}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=1,  gridlabels=0, gridcolor=gray] 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(\xmin,\ymin)(\xmax,\ymax) 
\uput[dl](0,0){O} \uput[d](1,0){I}  \uput[r](0,1){J} 
\Cnode*(-1,-2){A} \Cnode*(1,5){B}\Cnode*(3,2){C}   \Cnode*(6,3){D}
\uput[dl](A){A}  \uput[dl](C){C} 
\uput[ul](B){B}  \uput[ur](D){D}
\pscurve(A)(B)(C)(D)
\end{pspicture}
\end{center}

Plutôt moche!

La courbe part verticalement du point A, semble même revenir en arrière, et le point C n'est pas un minimum. 

Impossible de modifier cette courbe; il faut trouver autre chose.

\section{Amélioration} 

Dans le package \texttt{pst-bezier}, il existe une instruction \verb!\psbcurve! qui semble prometteuse!

J'ai déjà parlé des courbes de Bézier dans deux chroniques:

\begin{list}{\textbullet}{}
\item \href{http://latexetmath.canalblog.com/archives/2017/05/19/35303509.html}{chronique de mai 2017};
\item \href{http://latexetmath.canalblog.com/archives/2018/11/01/36833119.html}{chronique de novembre 2018}.
\end{list}

Inutile de les relire pour utiliser  \verb!\psbcurve!; son mode d'emploi est dans le document \href{https://ctan.mines-albi.fr/graphics/pstricks/contrib/pst-bezier/doc/pst-bezier-doc.pdf}{pst-bezier-doc}.

Il faut naturellement charger le package: \verb!\usepackage{pst-bezier}!.

En haut de la page suivante de ce document, on voit ce que donne \verb!\psbcurve(A)(B)(C)(D)!.

\begin{figure}[!t]
\centering
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-2}   \def\xmax {7}
\def\ymin {-3}   \def\ymax {6}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=1,  gridlabels=0, gridcolor=gray] 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(\xmin,\ymin)(\xmax,\ymax) 
\uput[dl](0,0){O} \uput[d](1,0){I}  \uput[r](0,1){J} 
\Cnode*(-1,-2){A} \Cnode*(1,5){B}\Cnode*(3,2){C}   \Cnode*(6,3){D}
\uput[dl](A){A}  \uput[dl](C){C} 
\uput[ul](B){B}  \uput[ur](D){D}
%\psbcurve (A)r(0,5)(B)l(2,5)r(2,2)(C)l(4,2)(D)
\psbcurve[linecolor=blue](A)(B)(C)(D)
%\pscurve[linecolor=red](A)(B)(C)(D)
\end{pspicture}
\end{figure}

Le courbe est nettement plus jolie mais le point B ne correspond plus à un maximum et le point C toujours pas à un minimum.

\newpage

\section{Les points de contr\^ole} 

Le \texttt{b} de \verb!\psbcurve! signifiant \og Bézier \fg{}, il y a forcément des points de contrôle quelque part!

On fait afficher les points de  contrôle en tapant  \verb!\psbcurve[showpoints](A)(B)(C)(D)! au lieu de \verb!\psbcurve(A)(B)(C)(D)!,  ou en entrant \verb!\psset{showpoints=true}!.

\begin{center}
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-2}   \def\xmax {7}
\def\ymin {-3}   \def\ymax {6}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=4,  gridlabels=0, gridcolor=gray] 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(\xmin,\ymin)(\xmax,\ymax) 
\uput[dl](0,0){O} \uput[d](1,0){I}  \uput[r](0,1){J} 
\psset{showpoints=true}
\Cnode*(-1,-2){A} \Cnode*(1,5){B}\Cnode*(3,2){C}   \Cnode*(6,3){D}
\uput[dl](A){A}  \uput[dl](C){C} 
\uput[ul](B){B}  \uput[ur](D){D}
\psbcurve[linecolor=blue](A)(B)(C)(D)
{\blue
\uput{8pt}[150](0,4){R$_\text{B}$} \uput[dr](2,6){L$_\text{B}$}
\uput[dl](1.75,2.5){R$_\text{C}$} \uput[dr](4.25,1.5){L$_\text{C}$}
}
\end{pspicture}
\end{center}

Le quadrillage plus serré permet de lire les coordonnées des points de contrôle;
quatre points sont affichés: $\text{R}_{\text{B}}\,(0~;~4)$, $\text{L}_{\text{B}}\,(2~;~6)$, $\text{R}_{\text{C}}\,(1,75~;~2,5)$ et $\text{L}_{\text{C}}\,(4,25~;~1,5)$.

J'ai appelé  $\text{R}_{\text{B}}$ avec un \og R \fg{} car ce point de coordonnées $(0~;~4)$ contrôle le point B de la courbe qui est à sa droite (Right). On comprend aisément pourquoi j'ai appelé $\text{L}_{\text{B}}$ le point de coordonnées $(2~;~6)$ quand on sait que \og Left \fg{} veut dire \og Gauche \fg{}!

La droite $\left (\text{R}_{\text{B}}\text{L}_{\text{B}}\right )$ est tangente en B à la courbe, et la droite $\left (\text{R}_{\text{C}}\text{L}_{\text{C}}\right )$ est tangente en C à la courbe; c'est ce qui assure la \og régularité \fg{} de la courbe.

Comment ces points interviennent-ils dans l'instruction \verb!\psbcurve!?

En fait l'instruction \verb!\psbcurve(A)(B)(C)(D)! est la même que 

\hfill\textbackslash{}\texttt{psbcurve(A){\blue{}r(0,4)}(B){\blue{}l(2,6)}{\blue{}r(1.75,2.5)}(C){\blue{}l(4.25,1.5)}(D)};\hfill{}

vous pouvez vous en rendre compte en tapant la deuxième expression à la place de la première: c'est la même courbe qui est tracée.

Ce serait bien de pouvoir modifier ces points de contrôle. Mais est-ce possible? 

On se doute bien que la réponse est \og oui \fg{}!

\section{La solution} 

Pour qu'il y ait un maximum au point B, on remplace \texttt{{\blue{}r(0,4)}(B){\blue{}l(2,6)}} par \texttt{{\blue{}r(0,5)}(B){\blue{}l(2,5)}}, et pour qu'il y ait un minimum en C, on remplace \texttt{{\blue{}r(1.75,2.5)}(C){\blue{}l(4.25,1.5)}} par\\
\texttt{{\blue{}r(1.75,2)}(C){\blue{}l(4.25,2)}}.

Autrement dit, on trace la courbe en entrant

\hfill\textbackslash{}\texttt{psbcurve(A){\blue{}r(0,5)}(B){\blue{}l(2,5)}{\blue{}r(1.75,2)}(C){\blue{}l(4.25,2)}(D)}.\hfill{}

\label{sec:code1}
\begin{center}
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-2}   \def\xmax {7}
\def\ymin {-3}   \def\ymax {6}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=4,  gridlabels=0, gridcolor=gray] 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(\xmin,\ymin)(\xmax,\ymax) 
\uput[dl](0,0){O} \uput[d](1,0){I}  \uput[r](0,1){J} 
\Cnode*(-1,-2){A} \Cnode*(1,5){B}\Cnode*(3,2){C}   \Cnode*(6,3){D}
\uput[dl](A){A}  \uput[dl](C){C} 
\uput[ul](B){B}  \uput[ur](D){D}
\psset{showpoints}
%\psbcurve (A)l(-1,-2)r(0,4)(B)l(2,6)r(1.75,2.5)(C)l(4.25,1.5)r(6,3)(D)
\psbcurve[linecolor=blue](A)r(0,5)(B)l(2,5)r(1.75,2)(C)l(4.25,2)(D)
%\psbcurve[linecolor=blue](A)(B)(C)(D)
\end{pspicture}
\end{center}

Le code de ce graphique se trouve en  page \pageref{page_codes}.

\newpage

Ce qui donne, en nettoyant un peu la figure:

\begin{center}
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-2}   \def\xmax {7}
\def\ymin {-3}   \def\ymax {6}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=1,  gridlabels=0, gridcolor=lightgray] 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(\xmin,\ymin)(\xmax,\ymax) 
\uput[dl](0,0){O} \uput[d](1,0){I}  \uput[r](0,1){J} 
\Cnode*(-1,-2){A} \Cnode*(1,5){B}\Cnode*(3,2){C}   \Cnode*(6,3){D}
\uput[dl](A){A}  \uput[dl](C){C} 
\uput[ul](B){B}  \uput[ur](D){D}
%\psset{showpoints}
\psbcurve[linecolor=blue](A)r(0,5)(B)l(2,5)r(1.75,2)(C)l(4.25,2)(D)
\end{pspicture}
\end{center}

\section{Points anguleux}

Rien n'empêche de triturer un peu les points de contrôle pour dessiner des points anguleux en B et/ou en C. Voici ce qu'on obtient en entrant

\hfill\textbackslash{}\texttt{psbcurve(A){\blue{}r(0,4)}(B){\blue{}l(2,4)}{\blue{}r(1.75,3)}(C){\blue{}l(4.25,3)}(D)}:\hfill{}

\begin{center}
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-2}   \def\xmax {7}
\def\ymin {-3}   \def\ymax {6}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=1,  gridlabels=0, gridcolor=lightgray] 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(\xmin,\ymin)(\xmax,\ymax) 
\uput[dl](0,0){O} \uput[d](1,0){I}  \uput[r](0,1){J} 
\Cnode*(-1,-2){A} \Cnode*(1,5){B}\Cnode*(3,2){C}   \Cnode*(6,3){D}
\uput[dl](A){A}  \uput[dl](C){C} 
\uput[ul](B){B}  \uput[ur](D){D}
\psset{showpoints}
\psbcurve[linecolor=blue](A)r(0,4)(B)l(2,4)r(1.75,3)(C)l(4.25,3)(D)
\end{pspicture}
\end{center}

\section{Autre exemple}

On part de ce tableau de variations:

\begin{center}
{\renewcommand{\arraystretch}{1.3}
\psset{nodesep=3pt,arrowsize=2pt 3}  % paramètres
\def\esp{\hspace*{1.5cm}}% pour modifier la largeur du tableau
\def\hauteur{20pt}% mettre au moins 20pt pour augmenter la hauteur
$\begin{array}{|c|l *5{c} r|}
\hline
 x & -3 & \esp & 0 & \esp & 3 & \esp & 6 \\
 \hline
\text{Signe de }f' &  \vline\hspace{-2.7pt}0 &  \pmb{-} & \vline\hspace{-2.7pt}0 & \pmb{+} & \vline\hspace{-2.7pt}0 & \pmb{-} & \vline\hspace{-2.7pt}0 \\  
\hline
  & \Rnode{max1}{3}  &  &  & &\Rnode{max2}{4} & &   \\
\text{Variations de }f  & &  & & & & & \rule{0pt}{\hauteur}\\
 &  & & \Rnode{min1}{-1} & &  & &\Rnode{min2}{1} \rule{0pt}{\hauteur} 
\ncline{->}{max1}{min1} 
\ncline{->}{min1}{max2}
\ncline{->}{max2}{min2} \\
\hline
\end{array}$
}
\end{center}

Et on trace cette courbe:

\label{sec:code2}
\begin{center}
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-4}   \def\xmax {7}
\def\ymin {-2}   \def\ymax {5}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=1,  gridlabels=0, gridcolor=lightgray] 
\psaxes[ticksize=-2pt 2pt, labels=none](0,0)(\xmin,\ymin)(\xmax,\ymax) 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(1,1)
\uput[dl](0,0){O} \uput[d](0.5,0){$\vec{\imath}$} \uput[u](0,0.5){$\vec{\jmath}$} 
\Cnode*(-3,3){A} \Cnode*(0,-1){B}\Cnode*(3,4){C}   \Cnode*(6,1){D}
%\uput[ul](A){A} \uput[dr](B){B}  \uput[ul](C){C} \uput[dr](D){D}
%\psset{showpoints}
\psbcurve[linecolor=blue](A)l(-1,3)r(-1,-1)(B)l(1,-1)r(2,4)(C)l(4,4)r(4,1)(D)
\end{pspicture}
\end{center}

On remarque les tangentes horizontales aux deux extrémités de la courbe; il a fallu rajouter un point de contrôle de type \texttt{l}  après le point A, et un point de contrôle de type \texttt{r} avant le point D:

\hfill\textbackslash{}\texttt{psbcurve(A){\red{}l(-1,3)}{\blue{}r(-1,-1)}(B){\blue{}l(1,-1)}{\blue{}r(2,4)}(C){\blue{}l(4,4)}{\red{}r(4,1)}(D)}\hfill{}

Le code de ce graphique se trouve en page \pageref{page_codes}.

\section{Résumé}

\begin{list}{\textbullet}{}
\item On place les points A, B, C, etc. par lesquels la courbe doit passer.
\item On trace la courbe passant par les points en  affichant les points de contrôle:

\hfill\verb!\psbcurve[showpoints](A)(B)(C)...!\hfill{}

\item On identifie les points de contrôle sur le graphique.
\item On modifie les points de contrôle pour que la courbe ressemble à ce que l'on souhaite.
\item On trace la courbe sans afficher les points de contrôle.
\end{list}

\newpage

\section{Quelques codes}
\label{page_codes}

\bigskip

Code de la courbe de le page \pageref{sec:code1} paragraphe \ref{sec:code1}.

\medskip

\begin{changemargin}{0.5cm}{0cm}
\begin{verbatim}
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-2} \def\xmax {7} 
\def\ymin {-3} \def\ymax {6}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=1,gridlabels=0,gridcolor=gray] 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(\xmin,\ymin)(\xmax,\ymax) 
\uput[dl](0,0){O} \uput[d](1,0){I}  \uput[r](0,1){J} 
\Cnode*(-1,-2){A} \Cnode*(1,5){B}
\Cnode*(3,2){C}   \Cnode*(6,3){D}
\uput[dl](A){A}  \uput[dl](C){C}  
\uput[ul](B){B}  \uput[ur](D){D}
\psbcurve[linecolor=blue](A)(B)(C)(D)
\end{pspicture}
\end{verbatim}
\end{changemargin}

\bigskip

Code de la courbe de le page \pageref{sec:code2} paragraphe \ref{sec:code2}.

\medskip

\begin{changemargin}{0.5cm}{0cm}
\begin{verbatim}
\psset{unit=1cm,radius=2pt,arrowsize=3pt 3}
\def\xmin {-4} \def\xmax {7} 
\def\ymin {-2} \def\ymax {5}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[subgriddiv=1,gridlabels=0,gridcolor=lightgray] 
\psaxes[ticksize=-2pt 2pt, labels=none](0,0)(\xmin,\ymin)(\xmax,\ymax) 
\psaxes[ticksize=-2pt 2pt, labels=none]{->}(0,0)(1,1)
\uput[dl](0,0){O} 
\uput[d](0.5,0){$\vec{\imath}$} 
\uput[l](0,0.5){$\vec{\jmath}$} 
\Cnode*(-3,3){A} \Cnode*(0,-1){B}
\Cnode*(3,4){C}  \Cnode*(6,1){D}
\psbcurve[linecolor=blue](A)l(-1,3)r(-1,-1)(B)l(1,-1)r(2,4)(C)l(4,4)r(4,1)(D)
\end{pspicture}
\end{verbatim}
\end{changemargin}

\end{document}