1) Soient 4 points $P_0$, $P_1$, $P_2$ et $P_3$ du plan. On veut construire deux courbes $C_0$ et $C_1$.
$C_0$ a pour représentation $\overrightarrow{OM_0}(t) = R_0(t).\overrightarrow{OP_0} + R_1(t).\overrightarrow{OP_1} + R_2(t).\overrightarrow{OP_2}$.
$C_1$ a pour représentation $\overrightarrow{OM_1}(t) = R_0(t).\overrightarrow{OP_1} + R_1(t).\overrightarrow{OP_2} + R_2(t).\overrightarrow{OP_3}$.
Avec $R_0$, $R_1$ et $R_2$ des polynômes de degré $2$ et $t$ un paramètre dans $[0,1]$.
On veut que les courbes vérifies les contraintes suivantes :
Condition 1 : les courbes $C_0$ et $C_1$ sont indépendantes du repère choisi. Cela revient à dire que $M_0$ est le barycentre du système pondéré $(P_0,R_0)$, $(P_1,R_1)$ et $(P_2,R_2)$ et $M_1$ est le barycentre du système pondéré $(P_1,R_0)$, $(P_2,R_1)$ et $(P_3,R_2)$.
En particulier, cela impose la condition $R_0(t) + R_1(t) + R_2(t) = 1$.
Condition 2 : les courbes $C_0$ et $C_1$ se raccordent. Cela veut dire que $\overrightarrow{OM_0}(1) = \overrightarrow{OM_1}(0)$.
On montre que cela est équivalent aux relations $R_0(1) = 0$, $R_1(1) = R_0(0)$, $R_2(1) = R_1(0)$ et $R_2(1) = 0$.
Condition 3 : les courbes $C_0$ et $C_1$ ont même tangente au point de raccordement. Cela veut dire que
$\overrightarrow{OM_0}'(1) = \overrightarrow{OM_1}'(0)$.
On montre que cela est équivalent aux relations $R_0'(1) = 0$, $R_1'(1) = R_0'(0)$, $R_2'(1) = R_1'(0)$ et $R_2'(1) = 0$.
Les polynômes $R_0$, $R_1$ et $R_2$ sont de degré $2$ donc ils s'écrivent
$\left\{
\begin{array}{lll}
R_0(t) & = & a_0t^2 + b_0t + c_0\\
R_1(t) & = & a_1t^2 + b_1t + c_1\\
R_2(t) & = & a_2t^2 + b_2t + c_2\\
\end{array}
\right.$
Les conditions 1, 2 et 3 mènent à un système de 9 équations à 9 inconnues. En résolvant ce système, on obtient des polynômes :
$\displaystyle{R_0(t) = \frac{t^2}{2} -t + \frac{1}{2}, R_1(t) = -t^2 +t + \frac{1}{2}, R_2(t) = \frac{t^2}{2}}$.
Définition: la réunion des courbes $C_0$ et $C_1$ s'appelle la courbe B-spline associée aux 4 points de contrôle $P_0$, $P_1$, $P_2$ et $P_3$.
Les 3 polynômes $R_0$, $R_1$ et $R_3$ s'appellent les polynômes de Riesenfeld du second degré.
2) Exemple. Considérons les 4 points $P_0(1,2)$, $P_1(2,0)$, $P_2(3,4)$ et $P_3(4,1)$.
$C_0$ a alors pour représentation paramétrique
$\displaystyle{\overrightarrow{OM_0}(t) = R_0(t).\overrightarrow{OP_0} + R_1(t).\overrightarrow{OP_1} + R_2(t).\overrightarrow{OP_2}= \left(\frac{t^2}{2} -t + \frac{1}{2}\right)
\left(
\begin{array}{c}
1\\
2
\end{array}
\right)
+
\left(-t^2 +t + \frac{1}{2}\right)
\left(
\begin{array}{c}
2\\
0
\end{array}
\right)
+
\left(\frac{t^2}{2}\right)
\left(
\begin{array}{c}
3\\
4
\end{array}
\right)
}$.
On a donc les équations paramétriques :
$C_0:\left\{
\begin{array}{lll}
x(t) & = & t+3/2\\
y(t) & = & 3t^2-2t+1
\end{array}
\right.$
$C_1$ a alors pour représentation paramétrique
$\displaystyle{\overrightarrow{OM_1}(t) = R_0(t).\overrightarrow{OP_1} + R_1(t).\overrightarrow{OP_2} + R_2(t).\overrightarrow{OP_3}= \left(\frac{t^2}{2} -t + \frac{1}{2}\right)
\left(
\begin{array}{c}
2\\
0
\end{array}
\right)
+
\left(-t^2 +t + \frac{1}{2}\right)
\left(
\begin{array}{c}
3\\
4
\end{array}
\right)
+
\left(\frac{t^2}{2}\right)
\left(
\begin{array}{c}
4\\
1
\end{array}
\right)
}$.
On a donc les équations paramétriques :
$C_0:\left\{
\begin{array}{lll}
x(t) & = & t+5/2\\
y(t) & = & -7/2 t^2+4t+2
\end{array}
\right.$
3) Différences entre courbe B-spline et courbe de Bézier.
Lorsqu'on modifie un point de contrôle d'une courbe de Bézier, toute la courbe est modifiée Lorsqu'on déplace un point de contrôle d'une courbe B-spline, seule une partie de la courbe est modifiée. On dit que la méthode B-spline est locale alors que la méthode de Bézier est globale.
4) Généralisation : fonction B-splines.
a) Vecteur nœud.
Définition : on appelle vecteur-nœud une suite d'entiers naturels $(t_0,t_1,\ldots,t_k)$ tels que :
$t_0=0$ et soit $t_{i+1} = t_i+1$ soit $t_{i+1}=t_i$.
Le nombre $t_i$ s'appelle un nœud.
Exemples :
$(0,1,2,3,4)$ est un vecteur-nœud alors que $(0,1,1,3,4)$ n'est pas un vecteur-nœud car $t_3 =t_2+2$.
Définition des fonctions B-splines : soit $(t_0,t_1,\ldots,t_k)$ un vecteur-nœud donné. Les fonctions B-splines de degré $m$ associés à ce vecteur-nœud sont définies sur ${\Bbb R}$ par les formules suivantes :
$N_{(i,0)}(t) = 1$ si $t_i \le t < t_{i+1}$ et $0$ sinon.
Puis pour $m=1,2,3, \ldots$, $\displaystyle{N_{i,m}(t) = \frac{t-t_i}{t_{i+m}-t_i}N_{i,m-1}(t) + \frac{t_{i+m+1}-t}{t_{i+m+1}-t_{i+1}}N_{i+1,m-1}(t)}$.
Par convention, si un des dénominateurs est nul alors on annule le terme correspondant.
Exemples : soit le nœud $(0,1,2,3)$. On a donc $t_0=0$, $t_1=1$, $t_2=2$ et $t_3=3$.
Prenons $m=0$ et déterminons les $3$ fonctions splines de degré $m=0$.
$N_{0,0}(t) = 1$ si $0 \le t <1$ et $0$ sinon.
1
$N_{1,0}(t) = 1$ si $1 \le t <2$ et $0$ sinon.
2
$N_{2,0}(t) = 1$ si $2 \le t <3$ et $0$ sinon.
3
Il n'y a pas de $N_{3,0}$, $N_{4,0}$, $\ldots$ (car $t_4$, $t_5$, etc n'existent pas).
Prenons $m=1$ et déterminons les $2$ fonctions splines de degré $m=1$.
$\displaystyle{N_{0,1}(t) = \frac{t-t_0}{t_1-t_0}N_{0,0}(t) + \frac{t_{2}-t}{t_2-t_1}N_{1,0}(t) =
t N_{0,0}(t) + (2-t)N_{1,0}(t)}$.
$\displaystyle{N_{1,1}(t) = \frac{t-t_1}{t_2-t_1}N_{1,0}(t) + \frac{t_{3}-t}{t_3-t_2}N_{2,0}(t) =
(t-1) N_{1,0}(t) + 3-tN_{2,0}(t)}$.
Il n'est pas possible de calculer $N_{2,1}$ car l'expression de $N_{2,1}$ comporte $N_{3,0}$ et le nœud $t_4$ qui n'existent pas. C'est pour cela qu'il n'y a que deux fonctions B-spline de degré $1$.
Pour $m=2$, il n'y a qu'une seule fonction B-spline de degré $2$.
On trouve $\displaystyle{N_{(0,2)}(t) = \frac{t}{2}N_{0,1}(t) + \frac{3-t}{2}N_{1,1}(t)}$.
Résumons dans un tableau selon les valeurs de $t$ les expressions des fonctions B-splines
Le graphe des fonctions B-splines est :
Définition d'une fonction B-spline : la courbe B-spline associé à $n+1$-points de contrôle $P_0$, $P_1$, $\ldots $, $P_n$ est définie par
$\displaystyle{\overrightarrow{OM}(t) = \sum_{i=0}^{n}N_{i,m}(t)\overrightarrow{OP_i}}$.
Remarque : les fonctions $N_{i,m}$ dépendent du choix d'un vecteur-nœud. Pour calculer $N_{i,m}$, il faut un vecteur-nœud de longueur au moins $i+m+2$ et pour une courbe B-spline il faut un vecteur-nœud de longueur au moins égal Nombre de Points + degré + 1.
Exemple: on considère le vecteur-nœud : $(0,0,0,1,2,3,3,3)$ et on considère $5$ points de contrôle $P_{0}(1,0)$, $P_{1}(4,2)$, $P_{2}(2,4)$, $P_{3}(0,4)$ et $P_{4}(-4,4)$.
Les fonctions B-splines de degré $2$ sont :
La courbe B-spline associée à ce vecteur-nœud et ces points de contrôle est
$\displaystyle{\overrightarrow{OM}(t) = \sum_{i=0}^{4}N_{i,2}(t)\overrightarrow{OP_i}}$.
Après calcul, on trouve que
- sur $]-\infty,0]$ et sur $[3,+\infty[$ la coure B-spline est nulle
- sur $[0,1]$, on a les équations paramétriques :
$\left\{
\begin{array}{lll}
x(t) & = & -4t^2+6t+1\\
y(t) & = & -t^2+4t
\end{array}
\right.$
- sur $[0,1]$, on a les équations paramétriques :
$\left\{
\begin{array}{lll}
x(t) & = & -2t+5\\
y(t) & = & -t^2+4t
\end{array}
\right.$
- sur $[2,3]$, on a les équations paramétriques :
$\left\{
\begin{array}{lll}
x(t) & = & -3t^2+10t-7\\
y(t) & = & 4
\end{array}
\right.$
On obtient la courbe :