Courbe de BĂ©zier
Les courbes de Bézier sont des courbes polynomiales paramétriques développées pour concevoir des piÚces de carrosserie d'automobiles. Elles ont été conçues par Paul de Casteljau en 1959 pour Citroën et, indépendamment, par Pierre Bézier en 1962 pour Renault (les travaux de Paul de Casteljau étant confidentiels, c'est le nom de Bézier qui est passé à la postérité). Elles ont de nombreuses applications dans la synthÚse d'images et le rendu de polices de caractÚres. Elles ont donné naissance à de nombreux autres objets mathématiques.
Il existait avant Bézier des courbes d'ajustement nommées splines, mais dont le défaut était de changer d'aspect lors d'une rotation de repÚre, ce qui les rendait inutilisables en CAO. Bézier partit d'une approche géométrique fondée sur la linéarité de l'espace euclidien et la théorie, déjà existante, du barycentre : si la définition est purement géométrique, aucun repÚre n'intervient puisque la construction en est indépendante, ce qui n'était pas le cas pour les splines (les splines conformes aux principes de Bézier seront par la suite nommées B-splines).
Théorie générale
La courbe de BĂ©zier pour les n+1 points de contrĂŽle (P0, ..., Pn), est l'ensemble des points dĂ©finis par la reprĂ©sentation paramĂ©trique , pour t â [0 ; 1] et oĂč les Bn
i sont les polynĂŽmes de Bernstein.
La suite des points P0, ..., Pn forme le « polygone de contrÎle de Bézier ».
- Exemples
- Pour n = 2, les polynÎmes de Bernstein sont définis par :
Puis on ajoute les n+1 points de contrĂŽle pour chaque coefficient du polynĂŽme :
avec t â [0 ; 1]. C'est donc la courbe de BĂ©zier de degrĂ© 2.
- Pour n = 3 on a :
Puis on ajoute les n+1 points de contrĂŽle pour chaque coefficient du polynĂŽme et on obtient,
avec t â [0 ; 1]. C'est donc la courbe de BĂ©zier de degrĂ© 3.
- Remarque
- Puisque les polynÎmes de Bernstein forment une partition de l'unité, on a . La somme des coefficients est donc non nulle pour tout t, donc tous les points P(t) de la courbe sont correctement définis.
Propriétés
- La courbe est à l'intérieur de l'enveloppe convexe des points de contrÎle.
- La courbe commence par le point P0 et se termine par le point Pn, mais ne passe pas a priori par les autres points de contrÎle qui déterminent cependant l'allure générale de la courbe.
- est le vecteur tangent Ă la courbe en P0 et au point Pn.
- Une courbe de Bézier est infiniment dérivable (de classe ).
- La courbe de Bézier est un segment si et seulement si les points de contrÎle sont alignés.
- Chaque restriction d'une courbe de BĂ©zier est aussi une courbe de BĂ©zier.
- Un arc de cercle ne peut pas ĂȘtre dĂ©crit par une courbe de BĂ©zier, quel que soit son degrĂ©.
- Une courbe de Bézier d'ordre 2 est un fragment de parabole si les points qui la définissent ne sont pas alignés.
- Le contrĂŽle de la courbe est global : modifier un point de contrĂŽle modifie toute la courbe, et non pas un voisinage du point de contrĂŽle.
- Pour effectuer une transformation affine de la courbe, il suffit d'effectuer la transformation sur tous les points de contrĂŽle.
Courbes de BĂ©zier cubiques
Quatre points P0, P1, P2 et P3 définissent une courbe de Bézier cubique. La courbe se trace en partant du point P0, en se dirigeant vers P1 et en arrivant au point P3 selon la direction P2-P3. En général, la courbe ne passe ni par P1 ni par P2 : ces points ne donnent qu'une information de direction. La distance entre P0 et P1 détermine la vitesse du déplacement dans la direction de P1 avant de tourner vers P3.
D'aprÚs ce qui précÚde, la forme paramétrique de la courbe s'écrit comme une combinaison affine des points de contrÎle
pour 0 †t †1.
On voit ici clairement la propriĂ©tĂ© de partition de l'unitĂ© des polynĂŽmes de BernsteinâŻ: d'aprĂšs la formule du binĂŽme de Newton Ă l'ordre 3,
La somme des coefficients associés aux points de contrÎle vaut bien 1.
Les courbes de Bézier sont intéressantes pour le traitement des images pour deux raisons principales :
- Les points peuvent ĂȘtre rapidement calculĂ©s en utilisant une procĂ©dure rĂ©cursive qui utilise la division par deux et les opĂ©rations de base en Ă©vitant toutes les opĂ©rations de l'arithmĂ©tique des nombres rĂ©els flottants.
ou de maniĂšre Ă©quivalente
- ,
- ,
Attention : contrairement Ă l'usage en mathĂ©matique, sont ici des points (plus rigoureusement des vecteurs) et non les composantes d'un vecteur. Par ailleurs, dans la deuxiĂšme formulation, il faut faire les opĂ©rations indiquĂ©es dans l'ordre, de haut en bas, de gauche Ă droite et en rĂ©pĂ©tant les opĂ©rations mĂȘme si elles apparaissent plusieurs fois identiquement, cela avec les nouvelles valeurs dues aux opĂ©rations prĂ©cĂ©dentes (mathĂ©matiquement, cela revient Ă dĂ©composer la matrice 4Ă4 comme un produit de 6 matrices 4Ă4 avec deux 1, deux Âœ et des 0 partout ailleurs).
Plus précisément, on peut décomposer la courbe P(t) en deux courbes PL et PR dont les points de contrÎles sont respectivement (L1, L2, L3, L4) et (R1, R2, R3, R4) avec
et
Lors de cet appel rĂ©cursif pour tracer P(t), Ă©tant donnĂ© que la courbe de BĂ©zier passe par le premier et le dernier point de contrĂŽle, la position des extrĂ©mitĂ©s de chaque morceau (L1, L4=R1 et R4) est connue. Lorsque l'on implĂ©mente un tel tracĂ©, le critĂšre d'arrĂȘt de la rĂ©currence peut ĂȘtre liĂ© Ă la distance entre la sous-courbe Ă tracer et le segment [L1, L4] par exemple.
Note : l'arithmétique des nombres réels flottants étant disponible directement sur les processeurs modernes, elle est devenue bien plus rapide que l'allocation de mémoire nécessaire pour une récursion. De plus, une méthode qui fournit les pixels de la courbe à tracer sans aller de proche en proche ne permet pas d'antialiasing. La récursion n'est donc plus la bonne méthode pour tracer les courbes de Bézier ; on utilisera avantageusement la méthode qui parcourt les pixels de proche en proche en calculant à chaque pas un « défaut de tangente » utilisable pour l'antialiasing.
Le calcul d'un point d'une courbe de Bézier peut également s'effectuer en utilisant la méthode de Horner en calculant préalablement les coefficients vectoriels ai du polynÎme :
Exemples
- Courbe de Bézier linéaire (de degré 1)
- Les points de contrÎle P0 et P1 définissent la courbe de Bézier donnée par l'équation :
- Il s'agit donc du segment [P0, P1].
- Courbe de Bézier quadratique (de degré 2)
- Une courbe de Bézier quadratique est la courbe B(t) définie par les points de contrÎle P0, P1 et P2.
- Ces courbes quadratiques sont encore trÚs utilisées aujourd'hui (par exemple dans les définitions de glyphes des polices de caractÚres au format TrueType, et les polices OpenType dans leur variété compatible TrueType).
- Toutefois, si elles permettent d'assurer la continuitĂ© en tangence de deux courbes raccordĂ©es, elles ne permettent pas (en gĂ©nĂ©ral) de conserver la continuitĂ© de la courbure aux points d'interconnexion. Pour pallier cet inconvĂ©nient, il est alors nĂ©cessaire d'augmenter le nombre d'arcs interconnectĂ©s afin de rĂ©duire les ruptures de courbure entre chacun d'eux, ce qui en limite l'intĂ©rĂȘt et peut conduire Ă une complexification de la conception des courbes (avec davantage de sommets et de points de contrĂŽles Ă positionner).
- Courbe de Bézier cubique (de degré 3)
- Une courbe de Bézier cubique est la courbe B(t) définie par les points de contrÎle P0, P1, P2 et P3. Sa forme paramétrique est :
- Ce sont les courbes de Bézier les plus utilisées en conception graphique (car elles permettent d'assurer non seulement la continuité en tangence de deux courbes raccordées, mais aussi celle de leur courbure, tout en évitant d'avoir à positionner de nombreux sommets et points de contrÎle).
- Elles sont utilisĂ©es par exemple dans le langage PostScript et la dĂ©finition des glyphes des polices de caractĂšres de « type 1 », ainsi que dans les polices OpenType dans leur variĂ©tĂ© CFF (Compact Font Format) qui reprend les mĂȘmes dĂ©finitions de sommets et points de contrĂŽle.
- Courbe de BĂ©zier cubique approximant un arc de cercle
- Pour dessiner une courbe de BĂ©zier approximant l'arc de 90° d'un cercle de rayon r, il faut disposer 4 points dĂ©finis par 2 segments perpendiculaires aux axes X et Y passant par le centre du cercle. La longueur de chaque segment doit ĂȘtre rk avec (voir Courbe de BĂ©zier composite (en)).
- Courbe de BĂ©zier cubique approximant un arc de cercle
- Courbe de Bézier de degré supérieur à 3
- Elles sont rarement utilisées. On préfÚre se ramener à l'utilisation de courbes cubiques que l'on raccorde afin de conserver le bénéfice de la continuité de courbure. Pour cela, il faut et il suffit que le dernier point d'une courbe soit le premier d'une autre. On obtient ainsi une courbe continue.
- Par exemple, pour une courbe dĂ©finie par les points A, B, C, D, E, F et G, on utilise les courbes cubiques dĂ©finies par A, B, C, et D, et par D, E, F, et G et la continuitĂ© est ainsi assurĂ©e. Pour avoir une courbe C1 en D, il faut que [C, D] = [D, E], et si en plus on veut qu'elle soit C2 en D, alors [B, D] = [D, F], et de mĂȘme pour les dĂ©rivĂ©es successives. Toutefois, cette transformation fait perdre la continuitĂ© C3 en D (et la seule façon d'y pallier est d'insĂ©rer des points de contrĂŽle supplĂ©mentaires (afin d'augmenter le nombre d'arcs cubiques pour obtenir une meilleure approximation et au moins assurer la continuitĂ© C3 dans les points initiaux, mais pas autour des points de contrĂŽle ajoutĂ©s).
- LâintĂ©rĂȘt des courbes de BĂ©zier de degrĂ© 4 ou plus est toutefois plus limitĂ© aujourd'hui du fait de lâavancĂ©e et de l'intĂ©gration du support des B-splines non uniformes dans les bibliothĂšques graphiques modernes, et notamment des NURBS, Ă coefficients rationnels, Ă©quivalentes Ă des B-splines non uniformes (mais Ă poids entiers en progression non nĂ©cessairement arithmĂ©tique, comme c'est le cas des courbes de BĂ©zier), ces B-splines Ă©tant cependant calculĂ©es d'abord dans un espace projectif Ă coordonnĂ©es homogĂšnes, et qui permettent de conserver l'ensemble des avantages de B-splines de degrĂ© 3 ou supĂ©rieur, y compris dans le cas des courbes coniques (non linĂ©aires) qui sont impossibles Ă reprĂ©senter exactement avec des courbes de BĂ©zier autrement qu'avec une approximation par un grand nombre de sommets et de points de contrĂŽle.
Applications
- SynthĂšse d'images
- Les courbes de Bézier composent l'outil de la base du dessin vectoriel qui repose sur la transcription mathématique des objets. Le format Scalable Vector Graphics (SVG) permet de tracer des courbes de Bézier quadratique et cubique[1]. Les courbes de Bézier cubiques sont également utilisées par les logiciels de dessin vectoriel suivants :
- Les courbes de Bézier cubiques, les plus utilisées, se retrouvent en graphisme et dans de multiples systÚmes de synthÚse d'images, tels que PostScript, Metafont et GIMP, pour dessiner des courbes « lisses » joignant des points ou des polygones de Bézier.
- Les courbes de Bézier apparaissent dans les navigateurs compatibles HTML5 dans l'élément canvas.
- Les courbes de BĂ©zier apparaissent Ă©galement dans des logiciels de rendu 3D tels que Blender.
- Dans le logiciel de dessin matriciel, Paint, il est possible de créer des courbes de Bézier d'ordre 3 avec l'outil « Courbe ». Cela se fait en traçant un trait de P0 à P3 puis en cliquant successivement aux lieux de P1 et P2.
Animation
- Certaines courbes de BĂ©zier cubiques peuvent ĂȘtre utilisĂ©es pour dĂ©finir lâavancement dâune animation ou transition CSS3 en fonction du temps. Les extrĂ©mitĂ©s de la courbe sont prĂ©dĂ©finies en (0 ; 0) et (1 ; 1), et les abscisses des deux points de contrĂŽle restants doivent ĂȘtre comprises entre 0 et 1.
- Rendus de polices de caractĂšres
- Les textes sont également définis par des courbes de Bézier dans le cadre des fonctions de PAO comme la mise en page complexe, la gestion de bloc de texte, les habillages.
- Les polices de caractĂšres TrueType utilisent des courbes de BĂ©zier quadratiques plus simples.
Gravure musicale
- En gravure musicale, les traits de legato sont traditionnellement représentés par des courbes de Bézier cubiques. Cette méthode permet de reproduire tant les courbes classiques que celles, plus rare, présentant des points d'inflexion.
Courbe de BĂ©zier rationnelle
Pour décrire trÚs exactement des courbes comme les cercles (bien qu'en pratique les approximations par les courbes de Bézier soient suffisantes), il faut des degrés de liberté supplémentaires.
L'idée est d'ajouter des poids aux points de contrÎle (ce sont les ). Le dénominateur n'est là que pour normaliser la somme des poids supplémentaires, afin que la courbe soit définie comme une combinaison convexe des points de contrÎle.
Une courbe de Bézier rationnelle prend la forme générale suivante :
Bibliographie
- Courbes et Surfaces, Pierre BĂ©zier, HermĂšs, 1986
- ModĂšles de BĂ©zier, des B-splines et des NURBS, G Demengel, JP Pouget, Ăditions Ellipses (Approche pĂ©dagogique pour dĂ©voiler la boĂźte noire de ces modĂšles utilisĂ©s en CAO pour la modĂ©lisation des courbes et des surfaces.)
- Annexe G du livre de Yannis Haralambous, Fontes & codages : Glyphes et caractĂšres Ă lâĂšre du numĂ©rique, O'Reilly, , 990 p. (ISBN 978-2-84177-273-5)font: the Program, Addison-Wesley 1986, pp. 123-131. Excellente discussion sur les dĂ©tails de l'implĂ©mentation; disponible gratuitement comme partie intĂ©grante de la distribution de TeX.
Notes et références
Voir aussi
Articles connexes
- Spline et B-spline, autres courbes paramétriques. Les NURBS en sont une généralisation.
- Surface de Bézier, généralisation aux surfaces (c'est la forme la plus utile en CAO) .
- Algorithme de De Casteljau, permet d'afficher les courbes de BĂ©zier.
- ThéorÚme d'universalité de Kempe
- Unisurf
Liens externes
- Courbes et surfaces de Bézier avec implémentation Sur le site nonifier.ovh.org
- Cours de mathématique de BTS sur les courbes de Bézier, lycée Aymar de Saint Seine sur le site http://lyceeenligne.free.fr.
- (en) Living Math Bezier applet Sur le site sunsite.ubc.ca
- (en) Bezier Curves drawer using C/Opengl Sur le site jppanaget.com
- (en) Bitmap/BĂ©zier curves/Cubic et (en) Bitmap/BĂ©zier curves/Quadratic sur le site rosettacode.org
- (fr) Logiciel de dessin LECYGN Logiciel utilisant les courbes de Bézier comme bases de dessin et comme supports pour des textes avec mises en forme paramétrables : euraldic.com.
- (fr) Application interactive illustrant la construction d'une courbe de BĂ©zier
- (en) How to Generate LaTeX Picture Environments Using the GaPFilL Method La constante de l'arc de cercle utilisée par Herbert Möller