Courbes B-splines
2) Si le vecteur T a une multiplicité k à chaque extrémité
(
)
( ,
1
t N P t
C i jk
k i j
∑
j +−
=
=
169
Propriétés des courbes B-splines
Liens avec les courbes de Bézier (1/2) 1) Si k=n+1
2) Si le vecteur T a une multiplicité k à chaque extrémité
• Le degré est n
• Il y a un intervalle paramétrique de définition [tn,tn+1] Les (n+1) fonctions B-splines sont les (n+1) polynômes de Bernstein de degré n sur l'intervalle : la courbe B-spline est une courbe de Bézier
• Les courbes de Bézier sont un cas particulier des courbes B-splines
Modélisation Géométrique 171
Propriétés des courbes B-splines
Liens avec les courbes de Bézier (2/2)
• Exemple :
la courbe peut être vue comme une courbe de Bézier ou
une Bspline d'ordre 5 et de vecteur T 0, 0, 0, 0, 0, 1, 1, 1, 1, 1
• Sur chaque intervalle paramétrique [ti,ti+1] – la courbe B-spline est un polynôme de degré k-1
– c'est une courbe de Bézier (on sait calculer les points de contrôle) – le raccordement entre les différents arcs de Bézier est automatique
P0
P4
171
Propriétés des courbes B-splines
Multiplicité dans les points de contrôle
• Si un point apparaît plusieurs fois (Pi-l = … =Pi) – son poids devient Ni-l,k(t) + … + Ni,k(t)
– la courbe est tirée vers ce point
• Si un point apparaît (k-1) fois (Pi-k+1 = … =Pi-1) – comme
– et finalement C(ti) = Pi-1
– et rupture de tangente en ti: deux demi-tangentes portées par [Pi-k Pi-k+1] et [Pi-1 Pi] : un point de cassure – « attention » au vecteur de nœuds en cas d'ajout de points
) (
)
( ,
1 jk i
i k i
j j
i P N t
t
C ∑
+
−
=
=
Modélisation Géométrique 173
Dérivée d'une courbe B-spline
• Avec la formule de dérivation :
• On peut montrer que la dérivée p-ème d'une courbe B-spline d'ordre k est une courbe B-B-spline d'ordre (k-p)
– pour tÎ[ti,ti+1] (ti< ti+1)
Attention, les formules ci-dessus, sont indicées par le vecteur de nœuds de la courbe initiale, pas par les vecteur de nœuds des dérivées successives
173
Dérivée d'une courbe B-spline
• Conditions d'extrémités par les points extrêmes
– sous réserve de multiplicité k aux extrémités de T
– permet de gérer les raccordements pour les courbes non périodiques – on retrouve les propriétés des courbes de Bézier
))
Modélisation Géométrique 175
Affichage d'une courbe B-spline
• Choix du nombre de points à afficher n_affich
• Obtention du pas de balayage de l'intervalle paramétrique – pas = (tn+1-tk-1)/n_affich
• Balayage de l'intervalle paramétrique – tk-1, tk-1+pas, …, tlast
– Attention la dernière valeur paramétrique tlast doit vérifier :
• tlast ≤ tn+1 ou mieux tlast= tn+1
• Pour chaque t, calcul d'un point de la courbe
• Affichage de la suite des points
)
Calcul d'un point d'une courbe B-spline
• Calcul d'un point C(t) d'une courbe
• Si sur un nœud ti
Modélisation Géométrique 177
Calcul d'un point d'une courbe B-spline
• Algorithme de De Boor-Cox (« équivalent de De Casteljau »)
–En o(k2)
• Algorithme de De Boor
– Calcul des k fonctions ≠0 en t puis pondération avec les points – En o(k2)
Calcul d'un point d'une courbe B-spline
!"
Modélisation Géométrique 179
Calcul d'un point d'une courbe B-spline
• Une alternative fréquemment rencontrée – sur [ti, ti+1],
– C(t) est formé de k fonctions de base polynomiales de degré k-1 – chaque fonction est définie par k coefficients dans la base canonique Þ le polynôme C(t) peut s'exprimer sous forme matricielle dans la
base canonique
• En posant u=t-ti (u sur [0,1]):
• k= 4 :
• Peut convenir pour les petits degrés – INSTABLE numérique : à éviter
[
][ ]Autres calculs sur une courbe B-spline
• Elévation de degré
– remplacer la B-spline d'ordre k par une B-spline d'ordre k+1 – transformation exacte : formules (un peu délicat)
• Insertion de noeuds
– remplacer T par t avec : T Ì t
– plongement dans un E.V de dimension supérieure : opération exacte – nouveau vecteur de nœuds, nouveaux points de contrôle
– 1 nœud supplémentaire = 1 point de contrôle en plus
• peut permettre un contrôle encore plus local
• séparation d'une courbe en 2 avec un nœud de multiplicité k
– algorithmes de Boehm, Oslo 1 et 2, Oslo 1 et 2 améliorés
• Suppression de noeuds
Modélisation Géométrique 181
• Quand le nombre de points de contrôle augmente – la courbe tend à se confondre avec le polygone (assez vite)
• C'est le polygone qui se rapproche de la courbe (la courbe ne change pas)
– insertion de nœuds « régulière » dans le vecteur de nœuds
• chaque intervalle divisé récursivement au milieu par exemple
– augmentation régulière et rapide du nombre de points de contrôle – technique rapide d'affichage
• Si une courbe est définie par beaucoup de points – elle est proche de son polygone (en général)
– on peut facilement diminuer le nombre de points sans modifier réellement la courbe
Propriété de convergence
k=4 k=4
181
Raccordement de deux courbes
• Même principe que pour les courbes de Bézier – il faut gérer la variation d'ordre
– il faut gérer les écarts respectifs dans le vecteur de nœuds
• Cas des nœuds multiples aux extrémités
• Raccordement C0:
• Raccordement C1 :
– même ordre, vecteur de nœuds « uniforme » – Sinon
• Raccordement C2 :
Modélisation Géométrique 183
Fermeture d'une courbe B-spline
• Fermeture C0d'une courbe B-spline
– premier point de contrôle = dernier point de contrôle
• Fermeture C1 (ou G1)
1) même technique que pour Bézier : alignement de P0, P1, P6
k=4 P0= P7
P0= P7
183
Fermeture d'une courbe B-spline
• Fermeture C1 (ou G1)
2.a) ajout de 2 nœuds Þ2 points de plus : : P'1, P'6
2.b) alignement de P0, P'1, P'6
k=4 P0= P7
P'1
P'6
P0= P7
P'1
P'6
Modélisation Géométrique 185
B-spline périodique
• Intérêt
– permet de gérer une courbe fermée sans problème de raccordement – évite de jouer sur les points de contrôle extrêmes
– impossible pour une courbe de Bézier (modèle global)
• on rajoute k points de contrôle à la fin égaux aux k premiers – rajoute k intervalles paramétriques à la fin
– on rajoute k nœuds conduisant aux même fonctions de base que sur le premier intervalle
– C([tk-1,tk]) = C([tn+k,tn+k+1])
– on s'intéresse à la courbe sur [tk-1,tn+k] (n de la courbe initiale)
• La courbe est fermée, périodique raccordée Ck-2
• pas de multiplicités aux extrémités de T – vecteur de nœuds uniforme « en général » 185
B-spline périodique
• La courbe est fermée, périodique raccordée Ck-2
P0= P7
P0= P7
P1= P8
P2= P9
P3= P10
k=4 t0=0
t1=1 t2=2 t3
...
t10=10 t11=11
t12=12 t13=13
t14=14
Modélisation Géométrique 187
Les contours actifs
Contours actifs ou Snakes (Kass 1987)
• Une courbe B-spline fermée (voire ouverte)
• Des points de mesure à approcher par une courbe
– Gradient max dans une image, données expérimentales, …
• On peut aussi jouer sur a
On cherche les positions des points de contrôle Pjminimisant une énergie E
E= aE1+ (1-a) E2 (0 ≤ a≤ 1) E1est une énergie mesurant la distance aux données, par exemple : E1=∑C(ti)−Qi 2
E2est une énergie de régularité (courbure ou tension), par exemple :
(tià déterminer)
E2=
∫
⎛⎝⎜dds2C2⎞⎠⎟2
ds
187
Conclusions sur les B-splines
• Modèle opérationnel « actuellement »
– « faussement » remplacé par les B-splines rationnelles – beaucoup plus souple que Bézier
• contrôle local
• degré
• vecteur de nœuds
• Les inconvénients
– complexité algorithmique un peu plus importante
– des paramètres supplémentaires de contrôle difficile à maîtriser
• ordre : OK
• vecteur de nœuds : ? (pb. de la paramétrisation d'une courbe)
Chaque arc élémentaire de spline est une courbe de Bézier – manipulation des deux notions (ex : calcul d'intersection)
Modélisation Géométrique 189
Conclusions sur les B-splines
• De B-splines à Bézier en un dessin
k=2 k=4
k=5
k=8 k=10 (Bézier)
189