Exercices Alternatifs

Introduction aux courbes de Bézier

\begin{matrix}c \\ ◯ \end{matrix}2007 Frédéric Le Roux (copyleft LDL : Licence pour Documents Libres).

     Sources et figures: courbes-de-bezier/.
     Version imprimable: courbes-de-bezier.pdf

Géométrie différentielle. DEUG première année. Angle pédagogique : À quoi ça sert.

Objectifs et commentaires. Dans cet exercice, on définit les courbes de Bézier cubiques, et on étudie l’algorithme de tracé dû à Casteljau. L’introduction est extraite d’un Cours de calculus, voir http ://math.u-psud.fr/˜ leroux.

Vous êtes-vous déjà demandé comment l’ordinateur dessine les lettres que l’on voit à l’écran ? Dans les années 1980, quand les ordinateurs personnels commençaient tout juste à se répandre, l’ordinateur avait en mémoire un dessin de chacune des 26 lettres de l’alphabet (sans compter les lettres accentuées). Une lettre était stockée sous la forme d’une grille 8 × 8 dans laquelle chaque case était allumée ou éteinte (noire ou blanche, ce qui en mémoire correspond au symbole 0 ou 1). Par exemple, le “e” pouvait ressembler au dessin de gauche de la figure 1.

Fig. 1 – Zoom sur un “e” : à gauche, avec un ordinateur des années 1980 ; à droite, avec un ordinateur actuel

Cette méthode avait de nombreux inconvénients. En particulier, si l’on voulait grossir le texte à l’écran, l’ordinateur ne pouvait que grossir la grille, et on voyait apparaître les gros carrés qui définissaient la lettre, exactement comme sur le dessin ci-dessus. En comparaison, avec un ordinateur actuel, on peut zoomer “à l’infini” sans voir apparaître de gros carrés ; pourtant, l’écran lui-même est toujours une grille de pixels (ici, 1024 sur 768) : c’est donc que le “e” sur lequel on a zoomé n’est pas obtenu à partir d’une lettre de taille normale en effectuant un pur agrandissement (une homothétie !), sans quoi les carrés apparaîtraient assez vite. Il semble que les lettres ne soient plus définies au moyen d’une grille, mais à l’aide de courbes lisses, et que l’ordinateur recalcule des détails supplémentaires à chaque nouvel agrandissement. Quelles sont les courbes utilisées pour produire ces lettres, et comment sont-elles définies ?

Une recherche rapide nous apprend que ces courbes sont des courbes de Bézier. La plupart des logiciels de dessin permettent de tracer de telles courbes. On voit que ces courbes sont définies très facilement : on donne un point de départ, et une vitesse en ce point ; et un point d’arrivée, et une vitesse au point d’arrivée ; et le logiciel nous trace la courbe de Bézier correspondante. La figure 2 montre comment la lettre “e” peut être fabriquée en assemblant un certain nombre de courbes de Bézier. La géométrie se glisse parfois à des endroits inattendus...

Comment sont définies mathématiquement ces courbes de Bézier, et comment l’ordinateur les dessine ? C’est ce que nous allons apprendre dans cet exercice.

Histoire de Bézier (liocity.free.fr) Au début des années 60, les machines numériques ne savaient usiner de façon précise que des courbes simples comme des paraboles ou des ellipses. Une seconde catégorie d’objets, au contraire, offrait une forme a priori peu précise, déterminée expérimentalement. Les hélices d’avions, les coques de bateaux et les carrosseries de voitures étaient tracées à main levée, sans que l’on puisse décrire leurs formes par une formule mathématique.

Pierre Bézier, ingénieur français diplômé du Conservatoire national des arts et métiers, poursuivait, une carrière à la Régie Renault, atteignant le poste de directeur des méthodes mécaniques.

Les machines à commande numérique de cette époque offraient une programmation limitée. Il fallait les alimenter avec des nombres, ce que l’on savait faire pour des déplacements élémentaires comme des droites, des arcs de cercle, et à la rigueur des ellipses. Mais il n’était pas question de programmer des courbes quelconques, tracées à la main, faute d’une définition numérique de celles-ci. Pierre Bézier chercha donc comment traduire mathématiquement une courbe, puis une surface, dessinées à main levée. Il lui fallait concevoir un système capable de gérer des courbes gauches, c’est-à-dire de manipuler des surfaces en 3D, d’où la nécessité de définir un modèle mathématique qui ne soit pas limité à des courbes en deux dimensions. Enfin, l’ingénieur entendait inventer un système complet pour créer un objet en volume à partir d’un dessin, le tout avec une rapidité d’exécution suffisante, et compréhensible intuitivement.

Mais ses recherches n’étaient pas entièrement originales. Dès 1958, un mathématicien employé par Citroen, Paul de Casteljau, s’était attaqué au même problème. Paul de Casteljau était chargé de numériser une courbe, une fois celle-ci tracée, sans se poser la question d’une correction a posteriori. Il définissait ses courbes comme caractérisées par des pôles, d’une façon nettement moins parlante que les points de contrôle de Bézier.

L’aventure de Pierre Bézier aurait pu s’arrêter là. Mais un groupe de développeurs liés à Apple créa un langage adapté à la future imprimante laser conçue pour le Mac. Il s’agissait de trouver un moyen de définir mathématiquement une courbe, comme le tracé d’un caractère, avant de l’envoyer à l’imprimante. L’un de ces développeurs connaissait le travail du Français. Tout naturellement, il choisit les courbes de Bézier comme base du langage PostScript et fonda la société Adobe. Microsoft adopta à son tour les polices true-type à partir de Windows 3.1. Ces polices utilisent les courbes de Bézier pour définir les caractères aux formes arrondies.

I. Définition des courbes de Bézier

On se donne quatre points A_{0}, A_{1}, A_{2}, A_{3} dans le plan, et on cherche à définir une courbe paramétrée

– qui part de A_{0} et arrive en A_{3} ;

– qui est tangente en A_{0} à la droite (A_{0}A_{1}),

– qui est tangente en A_{3} à la droite (A_{2}A_{3}),

– qui est définie par des polynômes de petit degré.

Pour cela, on définit les quatre polynômes (dits polynômes de Bernstein de degré 3)

p_{0}(t) = (1 − t)^{3}, p_{1}(t) = 3t(1 − t)^{2}, p_{2}(t) = 3t^{2}(1 − t), p_{3}(t) = t^{3}.

Fig. 2 – Extrait de Caractères numériques : introduction, de Jacques André 3 Soit α la courbe paramétrée définie, pour t ∈ [0, 1], par les formules suivantes, où A_{0} = (x_{0}, y_{0}), etc..

\{ \begin{matrix}x(t) & = & x_{0}p_{0}(t) + x_{1}p_{1}(t) + x_{2}p_{2}(t) + x_{3}p_{3}(t) \\ y(t) & = & y_{0}p_{0}(t) + y_{1}p_{1}(t) + y_{2}p_{2}(t) + y_{3}p_{3}(t) \end{matrix}

Question 1. Cas particulier

On considère ici les points A_{0} = (0, 0), A_{1} = (0, 1), A_{2} = (1, 1), A_{3} = (1, 0). Dans ce cas, expliciter les formules définissant la courbe α. Étudier et dessiner la courbe.

Question 2. Cas général

On considère ici quatre points quelconques A_{0}, A_{1}, A_{2}, A_{3}.

a. Montrer que la courbe α définie plus haut répond au problème.

On l’appellera courbe de Bézier associée aux quatre points A_{0}, …, A_{3}. On pourra faire le calcul à l’aide du tableau suivant.

\begin{matrix}p_{0}(t) & p_{1}(t) & p_{2}(t) & p_{3}(t) & x(t) & y(t) \\ p_{0}(0) = & p_{1}(0) = & p_{2}(0) = & p_{3}(0) = & x(0) = & y(0) = \\ p_{0}(1) = & p_{1}(1) = & p_{2}(1) = & p_{3}(1) = & x(1) = & y(1) = \\ p′_{0}(0) = & p′_{1}(0) = & p′_{2}(0) = & p′_{3}(0) = & x′(0) = & y′(0) = \\ p′_{0}(1) = & p′_{1}(1) = & p′_{2}(1) = & p′_{3}(1) = & x′(1) = & y′(1) = \end{matrix}

b. Que vaut le vecteur α′(0) en fonction du vecteur \overrightarrow{A_{0}A_{1}} ? et α′(1) en fonction de \overrightarrow{A_{2}A_{3}} ?

Question 3.

Calculer la vitesse de α au point t = 1/2, et exprimer cette vitesse à l’aide des vecteurs \overrightarrow{A_{0}A_{3}} et \overrightarrow{A_{1}A_{2}}.

II. Tracé récursif d’une courbe de Bézier : l’algorithme de Casteljau

A_{0} = B_{0}  A_{3} = C_{3} A_{1}  A_{2} M B_{1}  B_{2}  C_{1} B_{3} = C_{0}  C_{2}

Fig. 3 – Construction de Casteljau Description géométrique de l’algorithme À partir des quatre points A_{0}, A_{1}, A_{2}, A_{3}, on construit les points B_{0}, B_{1}, B_{2}, B_{3} et C_{0}, C_{1}, C_{2}, C_{3} en prenant des milieux successifs comme sur le dessin de la figure 3 : B_{0} = A_{0} ; B_{1} est le milieu des points A_{0} et A_{1} ; B_{2} est le milieu de B_{1} et du milieu de A_{1} et A_{2} ; etc..

La remarque de Paul de Casteljau^{1} est la suivante : la courbe de Bézier α associée aux quatres points A_{0}, …, A_{3} s’obtient en concaténant^{2} la courbe de Bézier associée à B_{0}, …, B_{3} et la courbe de Bézier associée à C_{0}, …, C_{3}. Nous allons essayer de vérifier cette remarque.

Question 1.

a. Trouver les coordonnées du point B_{3} en fonction de celles des quatres points initiaux A_{0}, …, A_{3}.

b. Montrer que ce point appartient bien à l’image de la courbe α.

Question 2.

Soit β : [0, 1] → ℝ^{2} la courbe paramétrée obtenue en partant de α(0) à t = 0 et en parcourant l’image de la courbe α deux fois moins rapidement.

a. Donner une formule pour la courbe β en fonction de la courbe α. Aide : que vaut β(1) ? β(1/2) ? β(t) ?

b. En déduire β′(0) et β′(1).

c. Montrer que la courbe β vérifie bien les propriétés de la courbe de Bézier associée à B_{0}, …, B_{3} (voir l’exercice précédent) :

β(0) = B_{0}, β(1) = B_{3} β′(0) = 3.\overrightarrow{B_{0}B_{1}} β′(1) = 3.\overrightarrow{B_{2}B_{3}}.

Question 3.

(optionnelle) De même, donner une formule pour la courbe paramétrée γ : [0, 1] → ℝ^{2} qui part de α(1/2) au temps t = 0 et arrive en α(1) à t = 1 en parcourant α deux fois moins rapidement. On montrerait comme avant que γ vérifie les propriétés de la courbe de Bézier associée à C_{0}, …, C_{3}. On admet que β et γ sont bien des courbes de Bézier.^{3}

Question 4.

On considère à nouveau la courbe de Bézier associée aux quatre points A_{0} = (0, 0), A_{1} = (0, 1), A_{2} = (1, 1), A_{3} = (1, 0). En utilisant la remarque de Casteljau (et non pas la formule définissant α), déterminer les coordonnés du point α(1/2). De même, déterminer les points α(1/4) et α(3/4).

1Mathématicien, embauché à la fin des années 1950 par Citroën pour trouver une méthode permettant de définir numériquement les courbes dessinées par le bureau d’étude, afin d’assurer une transmission précise à l’atelier de fabrication. Il est le co-inventeur des courbes de Bézier et de leur application à l’automobile.

2Concaténer, c’est mettre bout-à-bout.

3Pour montrer ceci, on utiliserait le fait que si l’on se donne quatre nombres x_{0}, x′_{0}, x_{1}, x′_{1}, il existe un unique polynôme p de degré inférieur ou égal à 3 tel que p(0) = x_{0}, p′(0) = x′_{0}, p(1) = x_{1}, p′(1) = x′_{1}.

Question 5.

On choisit 4 points quelconques A′_{0}, A′_{1}, A′_{2}, A′_{3} dans le plan. On voudrait tracer la courbe de Bézier correspondante α. En utilisant la construction géométrique donnée par l’algorithme de Casteljau, placer les points α(1/2), puis α(1/4) et α(3/4), puis encore quatre autres points. Esquisser le tracé de la courbe α.