$$\newcommand{\mtn}{\mathbb{N}}\newcommand{\mtns}{\mathbb{N}^*}\newcommand{\mtz}{\mathbb{Z}}\newcommand{\mtr}{\mathbb{R}}\newcommand{\mtk}{\mathbb{K}}\newcommand{\mtq}{\mathbb{Q}}\newcommand{\mtc}{\mathbb{C}}\newcommand{\mch}{\mathcal{H}}\newcommand{\mcp}{\mathcal{P}}\newcommand{\mcb}{\mathcal{B}}\newcommand{\mcl}{\mathcal{L}} \newcommand{\mcm}{\mathcal{M}}\newcommand{\mcc}{\mathcal{C}} \newcommand{\mcmn}{\mathcal{M}}\newcommand{\mcmnr}{\mathcal{M}_n(\mtr)} \newcommand{\mcmnk}{\mathcal{M}_n(\mtk)}\newcommand{\mcsn}{\mathcal{S}_n} \newcommand{\mcs}{\mathcal{S}}\newcommand{\mcd}{\mathcal{D}} \newcommand{\mcsns}{\mathcal{S}_n^{++}}\newcommand{\glnk}{GL_n(\mtk)} \newcommand{\mnr}{\mathcal{M}_n(\mtr)}\DeclareMathOperator{\ch}{ch} \DeclareMathOperator{\sh}{sh}\DeclareMathOperator{\th}{th} \DeclareMathOperator{\vect}{vect}\DeclareMathOperator{\card}{card} \DeclareMathOperator{\comat}{comat}\DeclareMathOperator{\imv}{Im} \DeclareMathOperator{\rang}{rg}\DeclareMathOperator{\Fr}{Fr} \DeclareMathOperator{\diam}{diam}\DeclareMathOperator{\supp}{supp} \newcommand{\veps}{\varepsilon}\newcommand{\mcu}{\mathcal{U}} \newcommand{\mcun}{\mcu_n}\newcommand{\dis}{\displaystyle} \newcommand{\croouv}{[\![}\newcommand{\crofer}{]\!]} \newcommand{\rab}{\mathcal{R}(a,b)}\newcommand{\pss}[2]{\langle #1,#2\rangle} $$
Bibm@th

Courbes de Bézier

Introduction

Les courbes de Bézier répondent au problème suivant : comment représenter facilement avec un logiciel de conception assistée par ordinateur (CAO) des formes complexes (aile d'avion, pièce de voiture, fontes de caractères,…) en ne rentrant qu'un nombre fini de contraintes. En termes plus mathématiques, on souhaite construire des courbes lisses à partir d'un nombre fini de points de contrôles.

Prenons l'exemple de 3 points de contrôle $P_0,P_1,P_2$. On souhaite construire une courbe allant de $P_0$ à $P_2$ telle que la tangente en $P_0$ soit $\overrightarrow{P_0P_1}$ et la tangente en $P_2$ soit $\overrightarrow{P_1P_2}$. La première idée est, comme sur le dessin ci-dessous, de tracer les segments allant de $P_0$ à $P_1$ et de $P_1$ à $P_2$ : pas sûr que l'on vende beaucoup de voitures avec des formes aussi anguleuses!

L'idée de Pierre Bézier, ingénieur chez Renault, est de procéder par barycentrage successif.

  • Étape 1 : On décrit les points des segments $[P_0P_1]$ et $[P_1P_2]$ comme des barycentres des extrémités. Pour le segment $[P_0P_1]$, on a les points $M_0$ décrits par $$\overrightarrow{OM_0(t)}=(1-t)\overrightarrow{OP_0}+t\overrightarrow{OP_1}.$$ Pour le segment $[P_1P_2]$, on a les points $M_1$ décrits par $$\overrightarrow{OM_1(t)}=(1-t)\overrightarrow{OP_1}+t\overrightarrow{OP_2}.$$
  • Étape 2 : La courbe de Bézier est donnée par les points $M(t)$ qui sont les barycentres de $M_0(t)$ affecté du coefficient $1-t$ et $M_1(t)$ affecté du coefficient $t$. Autrement dit, \begin{eqnarray} \overrightarrow{OM(t)}&=&(1-t)\overrightarrow{OM_0(t)}+t\overrightarrow{OM_1(t)}\\ &=&(1-t)^2\overrightarrow{OP_0}+2t(1-t)\overrightarrow{OP_1}+t^2\overrightarrow{OP_2}. \end{eqnarray}

L'applet suivante vous permet de visualiser la courbe obtenue en faisant varier $t$.

Bien sûr, ce que l'on a fait avec 3 points, on peut aussi le faire avec 4 points $P_0$, $P_1$, $P_2$ et $P_3$, mais il faut procéder en trois étapes.

  • Étape 1 : On décrit les trois segments $[P_0P_1]$, $[P_1P_2]$, $[P_2P_3]$ par \begin{eqnarray*} \overrightarrow{OM_0^{(1)}(t)}&=&(1-t)\overrightarrow{OP_0}+t\overrightarrow{OP_1}\\ \overrightarrow{OM_1^{(1)}(t)}&=&(1-t)\overrightarrow{OP_1}+t\overrightarrow{OP_2}\\ \overrightarrow{OM_2^{(1)}(t)}&=&(1-t)\overrightarrow{OP_2}+t\overrightarrow{OP_3}\\ \end{eqnarray*}
  • Étape 2 : On itère et on construit les barycentres de $M_0^{(1)}$ et de $M_1^{(1)}$, puis de $M_1^{(1)}$ et de $M_2^{(1)}$. Ainsi, on construit deux courbes, l'une allant de $P_0$ à $P_2$, l'autre allant de $P_1$ à $P_3$ : \begin{eqnarray*} \overrightarrow{OM_0^{(2)}(t)}&=&(1-t)\overrightarrow{OM_0^{(1)}(t)}+t\overrightarrow{OM_1^{(1)}(t)}\\ \overrightarrow{OM_1^{(2)}(t)}&=&(1-t)\overrightarrow{OM_1^{(1)}(t)}+t\overrightarrow{OM_2^{(1)}(t)} \end{eqnarray*}
  • Étape 3 : On itère et on construit les barycentres de $M_0^{(2)}$ et de $M_1^{(2)}$. On obtient alors la courbe de Bézier décrite par les 4 points de contrôle $P_0$, $P_1$, $P_2$ et $P_3$.

Un petit calcul montre que $$\overrightarrow{OM(t)}=(1-t)^3\overrightarrow{OP_0}+3t(1-t)^2\overrightarrow{OP_1}+3t^2(1-t)\overrightarrow{OP_2}+t^3\overrightarrow{OP_2}.$$ Bien sûr, ce que l'on a fait pour 3 ou 4 points se généralise à $n\geq 3$ points, et on devine assez clairement la formule!

Courbes de Bézier

Dans la suite, on notera, pour $n\geq 0$ et $0\leq k\leq n$, le polynôme de Bernstein $$B_k^n(t)=\binom nk t^k(1-t)^{n-k}.$$

Définition : Soient $P_0,\dots,P_n$ des points d'un plan affine $\mathcal P$. On appelle courbe de Bézier de points de contrôle $P_0,\dots,P_n$ la courbe paramétrée définie, pour $t\in [0,1]$, par $$M(t)=\textrm{Bar}\big( (P_0,B_0^n(t)), (P_1,B_1^n(t)),\dots, (P_n,B_n^n(t) ) \big).$$

Autrement dit, pour tout $t\in [0,1]$, $M(t)$ est l'unique point de $\mathcal P$ tel que $$\forall A\in\mathcal P,\ \overrightarrow{AM}(t)=\sum_{k=0}^n B_k^n(t)\overrightarrow{AP_k}.$$ La courbe de Bézier a les propriétés suivantes :

  • elle est contenue dans l'enveloppe convexe des points $P_0,\dots,P_n$.
  • elle a pour extrémité les points $P_0$ et $P_n$.
  • le vecteur tangent à la courbe en $P_0$ est $\overrightarrow{P_0P_1}$, le vecteur tangent en $P_1$ est $\overrightarrow{P_{n-1}P_n}$.
C'est au sein du bureau d'étude de Renault que l'ingénieur français Pierre Bézier a proposé le modèle des courbes de Bézier pour concevoir différents éléments d'une voiture. Mis en place à partir de 1962, ce modèle a été à la base du logiciel UNISURF, développé chez Renault. Les premières communications scientifiques sur les courbes de Bézier n'ont été faites qu'en 1982, elles sont désormais très utilisées, notamment en informatique dans les logiciels de traitement d'images ou bien dans les polices de caractères.
Consulter aussi
Recherche alphabétique
Recherche thématique