\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}%%%         écriture en multicolonnes
\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{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{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 

%%%  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{\R}{\textbf{R}}
\newcommand{\N}{\textbf{N}}
\newcommand{\Z}{\textbf{Z}}
\newcommand{\C}{\textbf{C}}
\newcommand{\Q}{\textbf{Q}}
\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[ps2pdf]{hyperref}%%% pour les références

%%% paramètres des pdf
\hypersetup{
pdfauthor = {F. Hache},
pdftitle = {Intervalle de fluctuation},
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

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

\begin{document}

\part*{\centering Courbes de Bézier}

\section{Présentation}
 
\begin{multicols}{2} 
 
Tout le monde connaît le symbole de la lutte contre le sida: ce petit ruban rouge que l'on accroche à sa boutonnière.
 
 D'un point de vue mathématique, la courbe tracée n'est pas la représentation d'une fonction. On peut la représenter au moyen de coordonnées paramétriques (on verra plus loin) mais on peut aussi la considérer comme une courbe de Bézier, ce qui permet de la tracer très rapidement.
 
On va en voir un peu plus sur les courbes de Bézier et la façon de les tracer en \LaTeX{}. 
 
 \columnbreak
 
 \begin{center}
\psset{unit=1cm}
\def\xmin {-2}      \def\xmax {2}
\def\ymin {-1}   \def\ymax {4}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
%\psgrid[gridlabels=0pt,subgriddiv=1,gridcolor=lightgray]
%\psaxes[linewidth=1.25pt,labelFontSize=\small](0,0)(\xmin,\ymin)(\xmax,\ymax)
\psbezier[showpoints=false,linecolor=red,linewidth=4pt](-1,0)(4,4)(-4,4)(1,0)
%%% Filet blanc :
\parametricplot[linecolor=white]{0}{1}{t t 26 t mul 39 sub mul 15 add mul 1 sub 12 t 1  t sub mul mul}
%%% En mode algébrique 
%\parametricplot[linecolor=white,algebraic]{0}{1}{26*t^3-39*t^2+15*t-1|12*t-12*t^2}
\end{pspicture}
\end{center}
 
 \end{multicols}
 
\section{En STS} 
 
 C'est dans certaines sections de technicien supérieur (STS) que l'on étudie les courbes de Bézier; on apprend à transformer en représentations paramétriques des courbes définies par 3 ou 4 points de contrôle.
 
 Voyons un exercice d'un sujet posé lors d'une épreuve de BTS de mai 2017; on trouve le sujet complet sur le site de l'\href{http://www.apmep.fr/IMG/pdf/BTS_Design_d_espace_9_mai_2017.pdf}{APMEP} et, comme la plupart des sujets présents sur ce site, il a été tapé par Denis Vergès.
 
\subsection{Une partie de l'exercice} 
 
 Un designer décide de concevoir une chaise longue adaptée au profil du corps humain. Pour
cela, il va modéliser la chaise à l'aide de deux courbes de Bézier, $\mathscr{C}_1$ pour l'assise et $\mathscr{C}_2$ pour la base.

\smallskip

Dans le plan muni d'un repère orthonormé $\Oij$, on considère les points P$_0(0~;~9)$ ;
P$_1(5~;~- 5)$ ; P$_2(9~;~8)$ et P$_3(12~;~1)$.

La courbe de Bézier $\mathscr{C}_1$, définie par ces quatre points de contrôle est tracée sur la figure donnée en annexe 2. Sur cette courbe est placé le point A utilisé à la question \textbf{6.}

\medskip

\begin{enumerate}
\item Placer les points P$_0$, P$_1$, P$_2$ et P$_3$ sur la figure donnée en annexe 2.
\item Quelle(s) tangente(s) à la courbe $\mathscr{C}_1$, peut-on connaître sans effectuer aucun calcul ?

Justifier la réponse.
\item Pour créer la base de cette chaise, le designer considère la courbe de Bézier $\mathscr{C}_2$ définie par les points de contrôle P$_0$(0~;~9) ; P$_4(1~;~- 3)$ et P$_3(12~;~1)$. 

Cette courbe est l'ensemble des points M$(t)$ tels que, pour tout $t$ de l'intervalle $\cd 0~,~1\cg$ :

\hfill$\v{OM$(t)$} = (1 - t)^2 \v{OP$_0$} + 2t(1 - t) \v{OP$_4$} + t^2 \v{OP$_3$}$.\hfill{}

	\begin{enumerate}
		\item Démontrer que les coordonnées $x$ et $y$ des points M$(t)$ de la courbe 
		$\mathscr{C}_2$ ont pour expression : 
		
\hfill{} $x = f(t) = 10t^2 + 2 t \text{ et }  y = g(t) = 16t^2 - 24t+ 9$.\hfill{}
		
		\item Étudier les variations des fonctions $f$ et $g$ définies pour $t$ dans l'intervalle $\cd 0~,~1\cg$ par :
		
\hfill{} $f(t) = 10t^2 + 2t  \text{ et }  g(t) = 16t^2 - 24t + 9$.\hfill{}
		
Rassembler les résultats dans un tableau unique.
	\end{enumerate}
\item  
	\begin{enumerate}
		\item [\ldots]
\end{enumerate}
\end{enumerate}

\section{Avec quatre points de contrôle} 
 
La courbe $\mathscr C_1$ du sujet de BTS est définie par quatre points de contrôle P$_0$, P$_1$, P$_2$ et P$_3$.
 
\subsection{La courbe} 
 
Le package \texttt{pstricks} (chargé dans ce document par \texttt{pst-all}) contient l'instruction \verb!\psbezier! qui fait tout le travail; l'option \texttt{showpoints=true} permet de visualiser les points de contrôle et les segments qui joignent ces points (et dont deux sont des tangentes à la courbe). 
 
\medskip 
 
\begin{center}
\psset{unit=1cm}
\def\xmin {-1}   \def\xmax {13}
\def\ymin {-6}   \def\ymax {10}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[gridlabels=0pt,subgriddiv=1,gridcolor=lightgray]
\psaxes[linewidth=1.25pt,labelFontSize=\small](0,0)(\xmin,\ymin)(\xmax,\ymax)
%%% Tracé
\psbezier[showpoints=true](0,9)(5,-5)(9,8)(12,1)
%%% Points de contrôle
\uput[ur](0,9){P$_0$} \uput[dr](5,-5){P$_1$} \uput[ur](9,8){P$_2$} \uput[dr](12,1){P$_3$}
%%% Tracé en paramétrique
%       \parametricplot[linewidth=1.25pt,linecolor=blue,plotpoints=1000]{0}{1}{15  t mul  t dup mul 3 mul sub 9 42 t mul sub t dup mul 81 mul add t 3 exp 47 mul sub}
\end{pspicture}
\end{center} 
 
 \medskip
 
 L'instruction \verb!\psbezier! permet les options sur la couleur du tracé (\texttt{linecolor}), son épaisseur (\texttt{linewidth}), son style (\texttt{linestyle}), etc.

\newpage
 
\subsection{Modification d'un point de contrôle} 
 
Voici quelques tracés quand on modifie le point de contrôle P$_1$: 
 
\medskip 
 
\begin{center}
\psset{unit=1cm}
\def\xmin {-1}   \def\xmax {13}
\def\ymin {-10}   \def\ymax {10}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[gridlabels=0pt,subgriddiv=1,gridcolor=lightgray]
\psaxes[linewidth=1.25pt,labelFontSize=\small](0,0)(\xmin,\ymin)(\xmax,\ymax)
\multido{\n=-9+2,\nn=0.1+0.1,\nm=0.9+-0.1}{8}
{
\definecolor{macoul}{rgb}{\nn,0.5,\nm}
\psbezier[showpoints=true,linecolor=macoul](0,9)(5,\n)(9,8)(12,1)
}
\end{pspicture}
\end{center}

\subsection{Modification de l'autre}

Et voici quelques tracés si on modifie le point P$_2$:

\medskip

 \begin{center}
\psset{unit=1cm}
\def\xmin {-1}   \def\xmax {13}
\def\ymin {-6}   \def\ymax {13}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[gridlabels=0pt,subgriddiv=1,gridcolor=lightgray]
\psaxes[linewidth=1.25pt,labelFontSize=\small](0,0)(\xmin,\ymin)(\xmax,\ymax)
\multido{\n=2+2}{6}
{
\psbezier[showpoints=true](0,9)(5,-5)(9,\n)(12,1)
}
\end{pspicture}
\end{center}

\newpage

\subsection{L'aspect mathématique}

La courbe de Bézier définie par les quatre points de contrôle P$_0$, P$_1$, P$_2$ et P$_3$, est l'ensemble des points M vérifiant
$\v{OM} = (1-t)^3 \v{OP$_{0}$} + 3t(1-t)^2 \v{OP$_{1}$} + 3t^2(1-t) \v{OP$_{2}$} + t^3 \v{OP$_{3}$}$

où $t$ parcourt l'intervalle $\cd 0~,~1\cg$ et O est l'origine du repère. 

En projetant cette égalité vectorielle sur les deux axes définis par le repère, on obtient la représentation paramétrique de la courbe;
$\left\lbrace
\begin{array}{l !{=} l l }
x(t) & -3\,t^2 + 15\,t\\
y(t) & -47\,t^3 + 81\,t^2 - 42\,t +9 & \text{avec } t\in \cd0~,~1\cg
\end{array}
\right .$

\section{Avec trois points de contrôle}

La courbe $\mathscr C_2$ du sujet de BTS est construite à partir de 3 points de contrôle. Une ancienne instruction \TeX{} permet de tracer ce genre de courbe de Bézier: il s'agit de \verb!\qbezier!. Mais cette instruction ne permet pas les options \texttt{linecolor} ou \texttt{linestyle}. Denis Vergès m'a signalé qu'il y avait beaucoup plus simple dans le package \texttt{pst-func}: ce sont les instructions \verb!\psBezier1!, \verb!\psBezier2!, \verb!\psBezier3!, \ldots , \verb!\psBezier9! qui tracent  des courbes de Bézier à respectivement 2, 3, 4, \ldots , 10 points de contrôle. Attention au B qu'il faut écrire en capitale.

\subsection{La courbe}

\medskip

\begin{center}
\psset{unit=1cm}
\def\xmin {-1}    \def\xmax {13}
\def\ymin {-4}   \def\ymax {10}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[gridlabels=0pt,subgriddiv=1,gridcolor=lightgray]
\psaxes[linewidth=1.25pt,labelFontSize=\small](0,0)(\xmin,\ymin)(\xmax,\ymax)
%%% Utilisation de \qbezier
%           \linethickness{1pt}%%% épaisseur du trait
%          \qbezier(0,9)(1,-3)(12,1)
%          \psline[linestyle=dotted,showpoints](0,9)(1,-3)(12,1)
\psBezier2[linecolor=blue,plotpoints=1000,showpoints](0,9)(1,-3)(12,1)
%%% La même courbe en paramétrique
%       \parametricplot[linewidth=1.25pt,linecolor=blue,plotpoints=1000]{0}{1}{t 10 t mul 2 add mul t 16 t mul 24 sub mul 9 add}
\end{pspicture}
\end{center}

\subsection{Quelques variations}

Voici quelques tracés si on modifie le point de contrôle du milieu:

\begin{center}
\psset{unit=1cm}
\def\xmin {-1}   \def\xmax {13}
\def\ymin {-6}   \def\ymax {10}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[gridlabels=0pt,subgriddiv=1,gridcolor=lightgray]
\psaxes[linewidth=1.25pt,labelFontSize=\small](0,0)(\xmin,\ymin)(\xmax,\ymax)
\multido{\i=-5+1}{5}
{
\psBezier2[showpoints](0,9)(1,\i)(12,1)
}
\end{pspicture}
\end{center}

\newpage

\section{\textbackslash{}parametricplot}

Retrouvons la courbe du paragraphe 1:

\bigskip

\begin{center}
\psset{unit=1cm}
\def\xmin {-5}    \def\xmax {5}
\def\ymin {-1}   \def\ymax {5}
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\psgrid[gridlabels=0pt,subgriddiv=1,gridcolor=lightgray]
\psaxes[linewidth=1.25pt,labelFontSize=\small](0,0)(\xmin,\ymin)(\xmax,\ymax)
\psbezier[showpoints=true,linecolor=red,linewidth=3pt](-1,0)(4,4)(-4,4)(1,0)
\parametricplot[linecolor=white]{0}{1}{t t 26 t mul 39 sub mul 15 add mul 1 sub 12 t 1  t sub mul mul}
\end{pspicture}
\end{center}

\bigskip

L'écriture sous forme paramétrique de cette courbe est:

\[\left\lbrace
\begin{array}{l !{=} l l}
x(t) & 26\,t^3 - 39 \,t^2 + 15\,t-1\\
y(t) & -12\,t^2 + 12\,t & \text{avec } t\in \cd0~,~1\cg
\end{array}
\right .\]

C'est l'instruction \verb!\parametricplot! qui permet de tracer une courbe en mode paramétrique avec pour syntaxe:

\begin{list}{\textbullet}{}
\item \verb!\parametricplot[options]{t_début}{t_fin}{x(t) y(t)}!

si on écrit les fonctions en mode post-fixé. 

C'est l'espace qui marque la séparation entre $x(t)$ et $y(t)$;

\item \verb!\parametricplot[options]{t_début}{t_fin}{x(t)|y(t)}!

si on écrit les fonctions en mode algébrique. 

Le signe de séparation entre $x(t)$ et $y(t)$ est alors \verb!|! (Alt Gr 6 sur PC).
\end{list}

En écrivant $26\,t^3 - 39 \,t^2 + 15\,t-1$ sous la forme $t\left (t\left (26\,t-39\right )+15\right )-1$, on obtient la forme post-fixée suivante:
\texttt{t t 26 t mul 39 sub mul 15 add mul 1 sub}.

Et en écrivant $-12\,t^2+12\,t$ sous la forme $12\,t\left (1-t\right )$ on obtient:
\texttt{12 t 1 t sub mul mul}.

On entrera donc l'instruction:

\hfill{} \verb!\parametricplot{0}{1}{t t 26 t mul 39 sub mul 15 add mul 1 sub 12 t 1  t sub mul mul}!\hfill{}

Pour la forme algébrique, on écrira:

\verb!\parametricplot[algebraic]{0}{1}{26*t^3-39*t^2+15*t-1|12*t-12*t^2}!

sans oublier de bien entrer le signe \verb!*! pour chaque multiplication.

\end{document}