Courbes et fonctions B-splines
Les courbes B-splines sont des familles de courbes à paramètres très utilisées dans les logiciels de conception assistée par ordinateur. Elles sont définies en raccordant des morceaux de courbes polynômiales de sorte que le raccord soit suffisamment régulier.
Soit un ensemble de $n+m$ points $P_0,P_1,\dots,P_{n+m-1}$ du plan. On souhaite construire une courbe composée de $n$ morceaux $C_k$, pour $k$ allant de $0$ à $n-1$, chaque courbe étant décrite par le point $M_k(t)$, $t\in [0,1]$ définie par une relation vectorielle du type $$\overrightarrow{OM_k(t)}=\sum_{i=0}^{i=m}R_m^i(t)\overrightarrow{OP_{k+i}}$$ et vérifiant les trois conditions suivantes :
- les fonctions $R_m^i$, $i=0,\dots,m$, sont des polynômes de degré au plus $m$;
- l'extrémité de l'arc $C_k$ coïncide avec l'origine de l'arc $C_{k+1}$, et le raccord est $m-1$ fois dérivable;
- la condition de normalisation $\sum_{i=0}^m R_i(t)=1$ doit être vérifiée quelque soit $t\in [0,1].$
On montre qu'il existe une unique famille de polynômes vérifiant cette condition, les polynômes de Riesenfeld :
Soit $m\geq 1$. Les polynômes de Riesenfeld de degré $m$ sont les polynômes $$R_m^i(t)=(m+1)\sum_{k=0}^{m-i}(-1)^k \frac{(t+m-i-k)^m}{k!(m-k+1)!},\ i=0,\dots,m.$$
La courbe définie précédemment est alors appellée courbe B-spline uniforme associée aux points $P_0,\dots,P_{n+m-1}$.
Soient $P_0,P_1,\dots,P_{n+m-1}$ des points du plan. On appelle courbe B-spline uniforme de polygone de contrôle $P_0,P_1,\dots,P_{n+m-1}$ la réunion des $n$ courbes suivantes : $$\overrightarrow{OM_k(t)}=\sum_{i=0}^{i=m}R_m^i(t)\overrightarrow{OP_{k+i}}$$ avec $t\in [0,1]$ et $k\in {0,\dots,n-1}$.
Voici un exemple de courbe B-spline uniforme de degré 2 avec 4 points de contrôle :
Comme on peut le voir sur cet exemple, la courbe B-spline ne passe pas nécessairement par les points de contrôle. En revanche, elle est située dans l'enveloppe convexe des points de contrôle.
Les courbes B-splines généralisent les courbes B-splines uniformes car elles permettent un meilleur contrôle de certaines propriétés (passage par certains points, dérivées,…), le prix à payer étant d'introduire un paramètre supplémentaire.
On appelle vecteur noeud toute suite finie de réels $(t_0,\dots,t_k)$ tels que $t_i\leq t_{i+1}$.
Étant donné un vecteur noeud $(t_0,\dots,t_k)$, on appelle fonctions B-splines associées à ce vecteur noeud les fonctions $N_m^i$, pour $0\leq m\leq k-1$ et $0\leq i\leq k-m-1$ définies par les formules de récurrence :
- $N_0^i(t)=1$ si $t\in [t_i,t_{i+1}[$, et $N_0^i(t)=0$ sinon;
- pour $m\geq 1$, $$N_m^i(t)=\frac{t-t_i}{t_{i+m}-t_i}N_{m-1}^i(t)+\frac{t_{i+m+1}-t}{t_{i+m+1}-t_{i+1}}N_{m-1}^{i-1}(t).$$
Dans la définition précédente, on utilise la convention, en cas de noeud multiple (ie $t_i=t_{i+1}$), qu'un quotient dont le dénominateur est nul est lui-même nul.
Étant donné un vecteur noeud $(t_0,\dots,t_k)$ et des points de contrôle $P_0,\dots,P_n$, la courbe B-spline de degré $m$, avec $m+n+1=k$ associée est la courbe définie par $$\overrightarrow{ON(t)}=\sum_{i=0}^n N_m^i(t)\overrightarrow{OP_i}.$$
Exemples :
- Si $t_i=i$ pour chaque $i$, alors on retrouve la définition des courbes B-splines uniformes;
- La courbe de Bézier associée à $n+1$ points de contrôle est la courbe B-Spline de degré $n$ avec comme nœuds les points $t_0 = t_1 = \dots = t_n = 0$ et $t_{n+1} = t_{n+2} = \dots= t_{2n+1} = 1$.