B-spline
# B-spline

En mathématiques, une B-spline est une combinaison linéaire de splines positives à support compact minimal. Les B-splines sont la généralisation des courbes de Bézier, elles peuvent être à leur tour généralisées par les NURBS.

## Définition

Étant donné m+1 nœuds $t_i$ dans [0, 1] avec $0\leq t_{0}\leq t_{1}\leq \ldots \leq t_{m}\leq 1$ une courbe spline de degré $n$ est une courbe paramétrique $\mathbf {S} \,:\,[0,1]\to \mathbb {R} ^{d}$ composée de fonctions B-splines de degré n $\mathbf {S} (t)=\sum _{i=0}^{m-n-1}b_{i,n}(t).\mathbf {P} _{i}\,,\,t\in [t_{n},t_{m-n}]$, où les $P_i$ forment un polygone appelé polygone de contrôle ; le nombre de points de contrôle composant ce polygone est égal à m-n.

Les m-n fonctions B-splines de degré n sont définies par récurrence sur le degré inférieur : $b_{j,0}(t):=\left\{{\begin{matrix}1&\mathrm {si} \quad t_{j}\leqslant t<t_{j+1}\\0&\mathrm {sinon} \end{matrix}}\right.$ $b_{j,n}(t):={\frac {t-t_{j}}{t_{j+n}-t_{j}}}b_{j,n-1}(t)+{\frac {t_{j+n+1}-t}{t_{j+n+1}-t_{j+1}}}b_{j+1,n-1}(t).$

Quand les nœuds sont équidistants, c’est-à-dire quand ils sont en progression arithmétique, les B-splines sont dites « uniformes » : c'est le cas des courbes de Bézier qui sont des B-splines uniformes, dont les nœuds $t_i$ (pour i entre 0 et m) forment une suite arithmétique de 0 à 1 avec un pas constant 1/m, et où le degré n de la courbe de Bézier ne peut être supérieur à m.

Par extension, lorsque deux nœuds successifs $t_{j}$ et $t_{j+1}$ sont confondus, on pose ${\frac {0}{0}}=0$ : cela a pour effet de définir une discontinuité de la tangente, pour le point de la courbe paramétré par une valeur de t, donc d'y créer un sommet d'angle non plat ; toutefois il est souvent plus simple de définir ce « B-spline étendu » comme l'union de deux B-splines définis avec des nœuds distincts, ces splines étant simplement joints par ce sommet commun, sans introduire de difficulté dans l'évaluation paramétrique ci-dessus des B-splines pour certaines valeurs du paramètre t. Mais cela permet de considérer alors tout polygone simple comme un B-spline étendu.

## Propriétés

La forme des fonctions de base est déterminée par la position des nœuds.

La courbe est à l'intérieur de l'enveloppe convexe des points de contrôle.

Une B-spline de degré n $b_{i,n}(t)$ est non nulle dans l'intervalle $[t_i,$ $t_{i+n+1}[$ : $b_{i,n}(t)=\left\{{\begin{matrix}>0&\mathrm {si} \quad t_{i}\leqslant t<t_{i+n+1}\\0&\mathrm {sinon} \end{matrix}}\right.$

En d'autres termes, déplacer un point de contrôle ne modifie que localement l'allure de la courbe.

## B-splines en une dimension

Les B-splines peuvent être utilisées comme fonctions de base dans la théorie de l'approximation. La B-spline de degré n est donnée par : $\forall x\in \mathbb {R} ,\ \beta ^{n}(x)=\sum _{k=0}^{n+1}(-1)^{k}{\frac {(n+1)}{(n+1-k)!k!}}\left(x-k+{\frac {n+1}{2}}\right)_{+}^{n}$, où (y)+ est une version étendue de la fonction partie positive : $(x)_{+}^{n}={\begin{cases}0&{\text{ si }}x<0\\{\tfrac {1}{2}}&{\text{ si }}x=0{\text{ et }}n=0\\1&{\text{ si }}x>0{\text{ et }}n=0\\x^{n}&{\text{ si }}x\geqslant 0{\text{ et }}n\geqslant 1\end{cases}}$

On reconnaît notamment la spline de degré 0 comme la fonction porte.

Ces fonctions ne sont pas interpolantes, mais leur régularité élevée sur un support compact en font des candidats intéressants dans l'approximation de fonctions.

