Académique Documents
Professionnel Documents
Culture Documents
Paramétrique / Implicite
Courbes Paramétriques (Splines)
Surfaces Paramétriques
Subdivision
Paramétrique Implicite
F>0
F=0
u
F<0
x u =r.cos u
{ y u= r.sinu
2 2
F x , y = x y −r
2
Représentations d'une courbe (2D)
Explicite : y = y(x)
y=mx+b y=x2
doit être une fonction (x->y) : limitation importante
Paramétrique : (x,y)=x(u),y(u))
(x,y) = (cos u, sin u)
+ facile à spécifier
- variable additionelle cachée u : le paramètre
Implicite : f(x,y) = 0
x2+y2-r2=0
+ y peut être une fonction multivaluée de x
- difficile à spécifier, modifier, contrôler
courbes 3
Représentations des courbes et surfaces (3D)
• Représentation Paramétrique
• Courbes : x = f(t), y = g(t), z = h(t)
• Surfaces : x = f(u,v), y = g(u,v), z = h(u,v)
• Courbe Cubique :
• x= axt3 + bxt2 + cxt + dx
• y = ayt3 + byt2 + cyt + dy
• z = azt3 + bzt2 + czt + dz
courbes 4
x t = x 0 R.cos 2 . t
{ y t = y 0 R.sin 2 . t
z t = z 0 p.t
Helicoide :
u∈ℝ , v ∈ℝ
x= v.cos u
Hélice passant par (x0,y0,z0), rayon R, pas p {y= v.sinu
z=u
Représentation des Surfaces
Surface Paramétrique – (x(u,v),y(u,v),z(u,v))
Ex : plan, sphère, cylindre, tore, surface bicubique, surface de balayage
Les fonctions paramétriques permettent de se déplacer sur la surface en faisant varier u et v
(ex en boucles imbriquée)
Pratique pour maillages polygonaux, etc
Terrible pour les intersections (rayon/surface), intériorité, appartenance, etc
Surface Implicite F(x,y,z)=0
Ex : plan, sphère, cylindre, tore, blobs
Terrible pour la visualisation
Pratique pour les intersections, le morphing
Surface de Subdivision
Définie par un maillage de contrôle et une subdivision récursive
Pratique pour la conception interactive
Visualisation des Courbes Paramétriques
●
Evaluation des fonctions x(t), y(t), z(t)
●
Par échantillnage de l’espace des paramètres
●
Paramétrisation d'une courbe: nombre de solutions
infini
●
Paramètre = vitesse de parcours de la courbe
●
avec vitesse (non-) constante,
●
(dis-)continue,
●
par longueur d'arc,...
Courbes Paramétriques : résumé
●
Pourquoi des polynomiales par morceaux,
pourquoi des cubiques ?
●
Principales courbes :
●
Splines de Hermite , splines de Bezier , splines
de Catmull-Rom ,splines naturelles cubiques ,
B-Splines, NURBS
Et extension aux surfaces
Construction de Courbes
Représenter <> construire
Buts pour construire des courbes :
Courbe lisse, “élastique”
Utilise des points de contrôle => et coordonées barycentriques
Comme les architectes de marine :
Poids ou joints pour maintenir une latte flexible (spline)
la latte passe par les joints et a une forme “lisse”
Mathématiquement ?
2 types de courbes
Interpolation Approximation
ex : 2 n
Q (t )=[ x (t ) , y (t ) , z (t )]=Q 0 + Q 1 t +Q 2 t + ...+Q n t
Q (t )=Q 0 +Q 1 t
combinaison barycentrique BC de E3 : point de E3 /
n
{ BC =∑ α i Pi
∑
n
i =0
i=0
α i =1
combinaison convexe BC /
i ≥0 ∀ i
Coordonnées Barycentriques
p=u a v b w c
area p , b , c area a , p , c area a , b , p
uv w =1 u= v= w=
area a , b , c area a , b , c area a , b , c
b
∣ ∣
ax bx cc
1
area a , b , c = ay by cy
2
1 1 1
pa
pc
p w
v :
c u +
u
:
w a
théorème de Ceva :
ratio a , pc , b .ratio b , pa , c. ratio c , p b , a=1
Enveloppe convexe
Données :
n + 1 points (avec xi distincts 2 à 2). x 0 , y 0 , x 1 , y 1 .... x n , y n
Polynomes de Lagrange
n
x− x j x− x 0 x − x j −1 x− x j 1 x− x n
L j x = ∏ x j − xi
=
x j− x 0
...
x j − x j −1 x j − x j1
...
x j−x n
i= 0, i≠ j
n
Lx = ∑ yj Ljx Est l'unique polynome de degré n vérifiant L x i = yi ∀i
j=0
Polynomes par morceaux
Spline : plusieurs morceaux combinés
combinaison« correcte »
Position et Position,
Position tangence
continuité alignement
des tangentes et continuité
- de la courbure
Polynomes linéaires par morceaux
Interpolation Linéaire
p0
p1
Montrer le segment
dans BI2
p t =1− t p0 t p 1
2 fonctions de base
−1
1
t
p ( t) = ( t 1) (1
1
0 ) ( )
p0
p1
= ∑
i=O
1
B i ( t) p i 0 1
Courbe de Bézier Lien entre
polynomes de Bernstein,
développement du binome,
et loi binomiale
P10
0
1 −2 1 P0
P t =
2
t t 1 −2 2 0 P1
0
1 0 0 P02
P 00 B20 t P00
t 2 −2t 1
P t =
2
−2t 2t
t2
P1
P2
0
0
= 2
B1 t
2
B2 t
P1
P2
0
0
0
P0
0
P2
n
P t = ∑ Bni t P0i Polynomes de Bernstein
i =O
Degré n=2
Courbe de Bézier Lien entre
polynômes de Bernstein,
développement du binome
et loi binomiale
P10 t = 1−t P 00 t P01
1 0 0
P1 t = 1− t P 1 tP 2
P10
B1 1 B0 1
t
0 1
Montrer la courbe
dans BI2 + Propriétés :
Repère entre vecteurs canoniques Enveloppe convexe,
Et point de contrôle Symétrie,
Valeur aux bords
Courbe de Bézier
P10 P10
2 t
P0 1 t
1 t P1 2 t
P0 1 t
P1
P0 1 t
P0
0
P0 0
0
P0
P2 0
P2
Subdivision des courbes de Bézier
0
−1 3 −3 1 P0
( )( )
0
3 2 3 −6 3 0 P1
P( t ) = ( t t t 1)
−3 3 0 0 P 02
1 0 0 0 0
P3
T 0 3 T 0
(1−t )3 P0 B 0 (t ) P0
P( t ) =
( 3 t (1−t ) 2
3 t 2 (1− t )
t
3 ) ( ) ( )( )
P1
0
P 02
P3
0
=
3
B 1 (t )
B 32 (t )
3
B 3 (t )
P1
0
P 02
P3
0
Fonctions de mélange de Bézier
B3
0 t
B33(t)
B13 t
B3
2 t
Courbe de Bézier
De Casteljau
r r −1 r −1
Pi (t )=(1− t ) P i (t )+ tP i +1 (t )
{ r =1 ,... , n
0
Pi (t )= P i
i =0 , ... , n−r t ∈[ 0,1]
P10
2 t
P0 1 t
1 t P1
P0
Faire le De Casteljau récussif
Montrer que toutes courbes polynomiales
Peut être décomposée 0
P0
en 2 courbes du meme type. 0
P2
=> on peut appliquer De Casteljau
Polynomes de Bernstein
●
Courbe de Bezier :
n
C (t ) = ∑ B ni (t) P i
i =0
n
où les B (t ) sont les polynomes de Bernstein de degré n
i
et les P i les points de contrôl
●
Polynomes de Bersnstein
n (1 −t)n−i t i
n
Bi ( t) = ()
i
i n!
avec n
i() = C n =
i ! ( n−i ) !
Propriétés des Polynomes de Bernstein
n n −1 n−1
{ ∑ B ni t = 1
i=0
∧ Bin t ≥ 0 ∀ t ∈ [ 0,1]
B n 0= P 0 ∧ B n 1= P n
Invariance Affine
soit f x= A . x b une transformation affine
n
n
f Bn t =∑ Bi t f Pi
i= 0
Propriétés des Polynomes de Bernstein
Symétrie
n 0
n n n n
B t = B
i n −i 1−t ∑B i t Pi =∑ B n−i 1−t Pi ∀ t ∈ [ 0,1]
i =0 i =n
Forme Générale
d k Bn t n!
n−k k
k
d t
=
n− k !
∑
i =0
k
Pi B
n−1
i t
k
with Pi =
k −1
Pi 1−
k−1
j =0
P i= ∑ k −1
j
k− j
P i j
Courbe de Bézier
Courbe de Bézier
Courbe de Bézier par morceaux
Expliquer raccord C1
Et introduction B-spline uniforme
D'autres cubiques....
Hermite
CatmullRom
Hermite
a
p( t )= [ t 3
t 2
t 1]
[ ]
b
c
d
Calcul des Splines de Hermite
4 contraintes : positions et tangentes aux extremités
de [0,1]
p (0 )= p0
p ( 1)= p1
dp
| t =0 = ∇ p0
dt
dp
| = ∇ p1
dt t =1
• Résoudre en a, b, c, d:
a=2 p 0−2 p 1 + ∇ p 0 + ∇ p1 b=−3 p 0 +3 P1−2 ∇ p 0 −∇ p1 c= p 0 d= p0
Splines de Hermite :
forme matricielle
p0
[ ][
p1 0 0 0 1 a
dp0
dt
dp1
dt
= 1
0
3
1
0
2
1
1
1
1
0
0 ][ ]
b
c
d
Vecteur de Contrôle Base coefficients spline
[ ][
a
b =
c
d
2 −2
−3
0
1
3
0
0
1
1
0
1
−2 −1
0
0
] []
p1
dp0
dt
dp1
dt
Coefficients
- Spline Base Vecteur de Contrôle
Equation des Splines de Hermite Cubiques
p0
2 −2 1 1
[]p1 T
[ ]
2 t 3 −3 t 2 +1 P1
[ p ]= [ t 3 t 2 t 1 ] −3
0
1
3 −2
0
0
1
0
−1
0
0
dp0
dt
dp1
dt
p( t )=
( −2 t 3 +3 t 2
3
3
t −t
2
t − 2 t +t
2 )( ) p2
∇ p1
∇ p2
3 2 T
2 t −3 t +1 P0
p( t )=
( 3
3
3
−2 t +3 t
t −t
2
t −2 t +t
2
2
)( ) p1
∇ p0
∇ p1
4 fonctions de base
t
1 0 0 0 P0 p(0)= P0
[ dp 0 dp 1
p0 p 1 dt dt =
Vecteur de
] [ 0
−3
0
0
3
0
Bézier
0
0
−3
1
0
3 ][ ]
P1
P2
P3
p(1)=P3
p'(0)=3(P1-P0)
p'(1)=3(P3-P2)
Vecteur de
Contrôle de vers Contrôle de
Hermite Hermite Bézier
Bézier : forme matricielle
2 −2 1 1 1 0 0 0 P0
[ P ( t ) ] =[ t
3
t
2
t 1]
[ −3
0
1
3
0
0
−2
1
0
−1
0
0 ][ 0
−3
0
0
3
0
0
0
−3
1
0
3 ][ ]
P1
P2
P3
[ ][ ]
P0
2
p ( t )= 3t ( 1−t ) P1
2
3t ( 1−t ) P2
t
3 P3
- 25
Composition de Splines de Hermite
Spline de Hermite composée
●
Chaque morceau est une cubique de Hermite
●
Spécifier la position et la tangente à chaque joint
●
Les morceaux interpolent les positions et les tangentes
●
Continuité C1
A partir d'une liste de positions et tangentes, construire une cubique
par morceaux qui passe à chaque point
Ces points sont les joints ou points nodaux
Splines de Catmull-Rom
Avec Hermite ou Bézier, difficile de composer des courbes assurant la continuité C1 ou G1
Catmull-Rom : splines cubiques d'interpolation C1 continues
Données :
● (n+1) points de contrôle P0,...,Pn
● Tangentes à chaque Pi : s (Pi+1 – Pi-1) i=2..n-1
●
« fantômes » aux extrémités
● Splines de Hermite “en série”. Chaque morceau est déterminé par 4 points
Matrice de Catmull-Rom
−s 2−s s−2 s P0
[] [ ][ ]
a
b 2s s−3 3−2s −s P1
=
c −s 0 s 0 P2
d 0 1 0 0 P3
−1 3 −3 1 P i −3
Pi ( t ) = [ 3
t t
2
t 1]
1
6
[ 3
−3
1
−6
0
4
3
3
1
0
0
0 ][ ]
P i −2
P i −1
Pi
B-Splines Non Uniformes
Séquence non uniforme
Différentes fonctions de base pour
chaque intervalle nodal (morceau de courbe)
joint Contrôle local
possible réduction de la continuité
Vecteur nodal
Fonctions de Base
Courbes B-Spline : exemples
j =m
j= m i=0
t −t i
N i ,1 = N i ,0
t i+ 1−t i
t i +2 −t
+
t i +2 −t i +1
N i +1,0
ti ti 1 ti 2 ti 3 ti 4
t−ti t−ti
N i ,2 = N i ,0
t i +2 −t i t i +1− t i N i ,3 ( t )
+
{t −t i t i +2 − t
t i + 2− t i t i +2 − t i +1
+
t i +3 −t t − t i+ 1
t i +3 −t i+ 1 t i +2 −t i +1 } N i +1,0
t i+ 3−t t i+3 −t
+ N i +2,0
t i+ 3−t i +1 t i+3 −t i +2
Courbes B-splines Démo blender
Ordre k = 3 Ordre k = 4
Ordre k = 2
B-Splines : nb morceaux
B(u)
u
u0 uk-1 um+1 um+k
Exemple ici :
k=3 N =[ n−1+ k−( k−1)]−[ 0 +( k −1)]
n=7
n-k+1=7
=[ n ]−[ k −1]
=n−k + 1
Continuité
Paramétrique : Ck Géométrique : Gk
P(u) continue jusqu'à la kème P continue indépendament
dérivée de u jusqu'à la ke dérivée
Valeur, pente, 2e dérivée,... Position, tangent,
Important pour les courbure,...
animations (paramètre CAGD,...
=temps)
u
Ou encore
P10
P ( u , v)= [ u 1]
[ −1
1
1
0 ][ P 0,0
P 1,0
P 0,1
P 1,1 ][ −1
1
1
0 ][ ]
v
1
= [u 1] M BP MB v
T
1 []
Produit Tensoriel
m
P (u)=∑ P i B m
m
i
(u)
i =0
n
Pi (v )= ∑ P i , j Bnj (v )
j =0
m n
m n
P u , v = ∑ ∑ Pi , j Bi u B j v
i= 0 j =0
Surfaces Bicubiques
Surfaces à l'aide de fonctions bicubiques
x(u,v),y(u,v),z(u,v) polynômes bicubiques en u et v
16 termes pour combiner les puissances de u et v
Matriciellement u= [ u 3 u 2 u 1 ] v= [ v 3 v 2 v 1 ]
s ( u,v ) = u A v T ou encore s ( u,v ) = u M P M T v T
avec M matrice de base et P matrice de points de contrôle
(produit tensoriel)
Produit Tensoriel
[ ][ ]
1 1
P 0,0 P 0,1 1−v
P u , v =[ 1−u u] 1 1
P u , v =∑ ∑ Pi , j Bi u B j v
P1,0 P 1,1 v i= 0 j =0
De Casteljau
P03
[ ][
r −1, r −1 r−1, r−1
Pi , j Pi , j 1
r ,r
Pi , j =[ 1− u u]
P
r −1, r −1
i1, j P
r−1, r−1
i 1, j1
1− v
v ]
v r =1,... , n i , j= 0, ... , n− r
P00
P33
P0033
u
v
P2011
u
P30
Surfaces de Bézier
m n
S u , v =∑ ∑ Pi , j Bm
i u B n
j v u , v ∈[ 0,1] 2
i=0 j =0
Bm
i ( u) et Bnj ( v)
Fonctions de base de Bézier
v
u
Surfaces de Bézier
Surfaces B-splines (NUBS)
m n
S u , v =∑ ∑ Pi , j N ki u N lj v u , v ∈[u 0, um k ] x [ v 0, v n l ]
i= 0 j =0
Pi , j avec i ∈{0, m } et j ∈{0, n}
U ={ui / 0i m k ∧ u 0⋯u i⋯um k }
V ={v j / 0 jnl ∧ v 0 ⋯ v j ⋯ v nl }
k l
N i u et N j v : fonctions de base
isoparamétriques
v
Surfaces B-Splines (NUBS)
v
vn+l
vn+
1
vl-
1
v0
u
u0 uk-1 um+1 um+k
Isoparametric curves
v
q=(qu,qv)
C(t)=(1-t)p+tq
p=(pu,pv)
u
83
Vecteur Normal & Torsion
Vecteur Normal
∂ s u , v ∧ ∂ s u , v
∂u ∂v
n u , v =
∂ s u , v ∧ ∂ s u , v
∂u∥ ∂v ∥
Vecteur Torsion
∂ 2 s u , v
∂u∂v
t u , v =
∂ 2 s u , v
∥ ∂u∂v ∥ 84
NURBS
●
Idée : utiliser les coordonnées homogènes
●
Plus ”vastes” que les B-Splines non uniformes : permettent
aussi une représentation exacte des surfaces coniques
(dont les cônes à base circulaire ou elliptique, la sphère et
les ellipsoïdes avec un axe focal d'orientation quelconque,
les paraboloïdes et hyperboloïdes, mais aussi les facettes
planes…)
●
Conservent leurs propriétés via certaines transformations
non isométriques comme les projections, y compris la
perspective 85
NURBS
m
∑ w i Bi ,k ( t ) Pi
i =0
C (t )=
●
Courbes : m
∑ w i Bi , k (t )
i =0
m n
∑ ∑ wi , j Bi , k (u ) B j ,l ( v ) Pi , j
i =0 j =0
●
Surfaces : S (u , v )= m n
∑ ∑ wi , j B i , k (u ) B j , l ( v )
i= 0 j =0
86
NURBS : effet de la variation de w1 (poids de P1)
87
Carreaux de Coons
Idée : remplir entre courbes
C2(u)
D1(v)
C1(u) D2(v)
Degré qcq
u ∈ [umin,umax], v ∈ [vmin,vmax] 88
Carreaux de Coons
Idée : remplir entre courbes
C2(u)
D1(v)
C1(u) D2(v)
Degré qcq
u ∈ [umin,umax], v ∈ [vmin,vmax] 89
Surfaces Réglées
Surface qui interpole c1(u) et c2(u)
u ∈ [umin,umax], ex : [0,1].
trouver x(u,v) / x(u,0) = c1(u) ∧ x(u,1) = c2(u).
Solution la + simple : interpolation linéaire
x u , v =1− v c 1 u v c 2 u
x u , v =1− v x u ,0v x u ,1
90
Carreaux de Coons
2 surfaces réglées
r c (u , v)=(1 − v) c1 ( u)+v c 2 ( u)=(1− v) x ( u ,0)+v x (u ,1)
r d (u , v)=( 1−u ) d 1 (v )+u d 2 (v )=(1− u) x (0 , v )+u x (1 , v )
rc interpole c1(u) et c2(u) mais ne reproduit pas d1(v) ni d2(v)
(idem pour rd)
x (u , v)= [ 1−u u]
[ x (0 , v)
x (1 , v)] [
x (u , v)= f 1 (u) f 2 ( u) ] [ x (0 , v )
x (1 , v ) ]
+ [ x (u ,0) x ( u ,1) ][ ] 1− v
v
+ [ x (u ,0) x ( u ,1) ]
[ g 1 (v)
g 2 ( v) ]
[ ][
− 1− u
u
x ( 0,0)
x (1,0)
x (0,1 )
x (1,1) ][ 1− v
v ] −
[ f 1 (u)
f 2 ( u) ][ x (0,0)
x (1,0)
x ( 0,1)
x (1,1) ][ g1 ( v)
g2 (v ) ]
92
Coons Patches
Inconvénient
3 3 2
H 2 (t )= t −t
H 3 (t )=− 2 t 3+ 3 t 2
Derivée ”transverse” (suivant v) le long de u=0 :
3
[
x u (0 , v )= x u ( 0,0)
= ”rubans tangents ”
x u(
1,v
)
)
( 0,v
xu
v
u
95
Carreaux de Coons Bicubique
[ 3
h cd u , v = H u
0
3
H u
1
3
H u
2
2
x uv ( i , j )= ∂ x ( i , j )= ddl ( à choisir )
∂u∂ v
Vecteurs twist à choisir aux quatre coins du patche 96