$$\newcommand{\mtn}{\mathbb{N}}\newcommand{\mtns}{\mathbb{N}^*}\newcommand{\mtz}{\mathbb{Z}}\newcommand{\mtr}{\mathbb{R}}\newcommand{\mtk}{\mathbb{K}}\newcommand{\mtq}{\mathbb{Q}}\newcommand{\mtc}{\mathbb{C}}\newcommand{\mch}{\mathcal{H}}\newcommand{\mcp}{\mathcal{P}}\newcommand{\mcb}{\mathcal{B}}\newcommand{\mcl}{\mathcal{L}} \newcommand{\mcm}{\mathcal{M}}\newcommand{\mcc}{\mathcal{C}} \newcommand{\mcmn}{\mathcal{M}}\newcommand{\mcmnr}{\mathcal{M}_n(\mtr)} \newcommand{\mcmnk}{\mathcal{M}_n(\mtk)}\newcommand{\mcsn}{\mathcal{S}_n} \newcommand{\mcs}{\mathcal{S}}\newcommand{\mcd}{\mathcal{D}} \newcommand{\mcsns}{\mathcal{S}_n^{++}}\newcommand{\glnk}{GL_n(\mtk)} \newcommand{\mnr}{\mathcal{M}_n(\mtr)}\DeclareMathOperator{\ch}{ch} \DeclareMathOperator{\sh}{sh}\DeclareMathOperator{\th}{th} \DeclareMathOperator{\vect}{vect}\DeclareMathOperator{\card}{card} \DeclareMathOperator{\comat}{comat}\DeclareMathOperator{\imv}{Im} \DeclareMathOperator{\rang}{rg}\DeclareMathOperator{\Fr}{Fr} \DeclareMathOperator{\diam}{diam}\DeclareMathOperator{\supp}{supp} \newcommand{\veps}{\varepsilon}\newcommand{\mcu}{\mathcal{U}} \newcommand{\mcun}{\mcu_n}\newcommand{\dis}{\displaystyle} \newcommand{\croouv}{[\![}\newcommand{\crofer}{]\!]} \newcommand{\rab}{\mathcal{R}(a,b)}\newcommand{\pss}[2]{\langle #1,#2\rangle} $$
Bibm@th

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.

B-splines uniformes

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.

B-splines

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$.
Consulter aussi
Recherche alphabétique
Recherche thématique