Construction de Casteljau · poids de Bernstein

Courbe de Bézier

Une courbe de Bézier naît en prenant la même fraction t sur chaque côté d’un polygone, puis sur chaque côté du nouveau polygone, plus court, jusqu’à ce qu’il ne reste qu’un point. Quand t va de 0 à 1, ce point dessine la courbe.

Les courbes de Bézier dans cette visualisation

Une courbe de Bézier de degré n est définie par n + 1 points de contrôle P0,…,PnP_0, \dots, P_n : deux points donnent un segment, trois une courbe quadratique, quatre la courbe cubique des logiciels de dessin. Son point B(t)B(t), en rouge sur l’image, s’obtient en prenant, à chaque étape, la fraction t de chaque côté du polygone de contrôle. Ici, tu peux déplacer les points, faire varier t de 0 à 1 et voir les segments de la construction laisser des fils qui dessinent le contour de la courbe.

Construction montre les polygones de chaque niveau pour la valeur actuelle de t, chacun avec un côté de moins que le précédent. Balayer fait passer t de 0 à 1 et laisse des fils de construction à intervalles égaux de t, colorés selon t. La courbe elle-même est le trait fin.

Écrite sous forme de calcul, la construction est une succession de moyennes pondérées, l’algorithme de Casteljau :

Pi0=Pi,Pik(t)=(1−t) Pik−1(t)+t Pi+1k−1(t),B(t)=P0n(t).P_i^0 = P_i, \qquad P_i^k(t) = (1 - t)\,P_i^{k-1}(t) + t\,P_{i+1}^{k-1}(t), \qquad B(t) = P_0^n(t) .

En développant les étapes successives, chaque point de contrôle reçoit une somme de produits de n facteurs, chaque facteur étant 1 − t ou t. Pour PiP_i, chaque produit contient exactement i facteurs t, et il y a (ni)\binom{n}{i} produits de ce type, donc

B(t)=∑i=0nbi,n(t) Pi,bi,n(t)=(ni)ti(1−t)n−i.B(t) = \sum_{i=0}^{n} b_{i,n}(t)\, P_i, \qquad b_{i,n}(t) = \binom{n}{i} t^{i} (1 - t)^{n-i} .

Ces poids sont les polynômes de Bernstein, représentés dans le petit graphique. Pour 0≤t≤10 \le t \le 1, ils sont tous positifs ou nuls et leur somme vaut 1 : B(t)B(t) est donc une moyenne pondérée des points, et la courbe ne sort jamais de leur enveloppe convexe. Déplacer un point PiP_i d’un vecteur Δ déplace chaque point de la courbe de bi,n(t) Δb_{i,n}(t)\,\Delta, avec le plus grand déplacement près de t=i/nt = i/n. Cette partie de la courbe n’est pas toujours celle qui est la plus proche du point de contrôle.

À t = 0, chaque niveau commence en P0P_0, donc B(0)=P0B(0) = P_0 ; de même, B(1)=PnB(1) = P_n. La courbe passe par ses deux extrémités et généralement pas par les autres points. Le dernier niveau de la construction est un unique segment qui, sauf s’il se réduit à un point, se trouve sur la tangente à la courbe :

B′(t)=n(P1n−1(t)−P0n−1(t)),B′(0)=n (P1−P0),B′(1)=n (Pn−Pn−1).B'(t) = n \bigl(P_1^{n-1}(t) - P_0^{n-1}(t)\bigr), \qquad B'(0) = n\,(P_1 - P_0), \qquad B'(1) = n\,(P_n - P_{n-1}) .

La courbe quitte donc P0P_0 en direction de P1P_1 et arrive en PnP_n depuis la direction de Pn−1P_{n-1}, sauf si les deux points de l’extrémité concernée sont confondus. C’est pourquoi les logiciels de dessin représentent les points intermédiaires d’une cubique comme des poignées qui partent de ses extrémités.

Chaque fil du dernier niveau qui ne se réduit pas à un point est tangent à la courbe au point qu’il porte. Un fil du niveau inférieur est tangent de la même façon à la courbe définie par un plus petit nombre de points voisins. Chaque famille de fils dessine ainsi sa propre courbe, et les courbes de degré inférieur apparaissent à l’intérieur du polygone. Dessiner un contour ne signifie pas envelopper d’un seul côté : à une inflexion, la courbe traverse sa propre tangente, et les fils se trouvent des deux côtés. Lorsque ses trois points de contrôle ne sont pas alignés, les fils d’une quadratique correspondent à un tableau de fils tendus entre deux rangées droites de clous, et la courbe qu’ils dessinent est une parabole.

La construction à t = s coupe aussi la courbe en deux. Les premiers points de ses niveaux sont les points de contrôle du morceau de 0 à s, et les derniers ceux du morceau de s à 1 : Découper montre ces deux groupes. En coupant encore et encore en deux, les polygones des morceaux se rapprochent de la courbe. Élever le degré procède dans l’autre sens : un point de contrôle de plus, la même courbe et un polygone plus proche d’elle. En revanche, ajouter un point en appuyant sur l’image change la courbe.

Paul de Casteljau a mis au point la construction chez Citroën en 1959. Chez Renault, Pierre Bézier a obtenu indépendamment les mêmes courbes et les a publiées dans les années 1960.

Points à observer

  • Des pas égaux de t ne correspondent pas forcément à des distances égales le long de la courbe.
  • La zone la plus colorée n’est pas la courbe. C’est l’endroit où les fils se superposent le plus, qui peut se trouver légèrement à côté de la courbe.

À découvrir aussi