AccueilđŸ‡«đŸ‡·Chercher

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).

Exemple de construction de courbe de BĂ©zier.

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.

animation

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 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

Animation du tracĂ© d’une courbe de BĂ©zier, avec t variant dans [0,1].
Courbe de Bézier utilisée dans Inkscape.
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 :
    • Dans le logiciel libre JPicEdt il y a un outil pour crĂ©er et Ă©diter des chaines de courbes de BĂ©zier d'ordre 3.
    • Dans le logiciel libre Inkscape.
  • 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

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.