• Aucun résultat trouvé

Si le vecteur T a une multiplicité k à chaque extrémité

Dans le document Modélisation géométrique (Page 85-95)

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

Surfaces sous forme produit

Dans le document Modélisation géométrique (Page 85-95)

Documents relatifs