TD Courbes et Surfaces

Donner un modèle d'une surface de révolution construite à partir des courbes de
l'exercice 2. On considèrera les points donnés dans le plan xOy , et que l'axe ...

Part of the document


TD Courbes et Surfaces
1. Courbes de Hermite et de Bezier a) Soient les points P0 = (1,1), P1 = (2,3), P2 = (4,3) et P3 = (3,1).
Donner l'équation de la courbe de Bezier approximant ces points
b) Donner l'équation de la courbe interpolant deux points extrémités P0
et P3 et de vecteurs T0 =(1,2) et T3 = (-1,2) tangents en ces deux
points.
c) A-t-on la même courbe. Quelle condition aurait-il fallu ? 2. Splines de Catmull-Rom Ces courbes interpolent les n points de contrôle P1, ..., Pn. La tangente
en chaque point Pi est donnée par s.(Pi+1 - Pi-1).pour i =2,...n-1. On
ajoute 2 points de contrôle supplémentaires (non interpolés) pour fixer les
tangentes aux extrémités.
Ecrire l'algorithme qui calcule et affiche la courbe d'interpolation.
3. Surface de révolution Donner un modèle d'une surface de révolution construite à partir des
courbes de l'exercice 2. On considèrera les points donnés dans le plan xOy
, et que l'axe de la surface de révolution est Oy
Correction
1. Hermite et Bezier
On a les points P0 = (1,1), P1 = (2,3), P2 = (4,3) et P3 = (3,1).
Par définition des Bezier cubiques :
[pic] On trouve donc deux équations en x(t) et y(t) :
[pic] Même chose avec Hermite :
[pic]
ce qui donne en x(t) et y(t)
[pic] Ce n'est pas la même courbe : il aurait fallu T0=3(P1-P0) et T3 = 3(P3-P2)
2. Catmull-Rom Matriciellement
[pic]
On crée les points fantômes P0 et Pn+1 pour orienter les tangentes aux
extrémités. Algorithme :
Voir C++ et OpenGL 3. Révolution ! Il suffit de reprendre les coordonnées en x et y de chaque courbe et
d'opérer la rotation autour de y
X = x(u) sin(v), Y = y(u), Z = x(u) cos(v) avec u dans [0,1] et v dans
[0,2*PI] On trace les faces comme pour les sphères, tores et autres rhomboèdres...
Voir C++ et OpenGL
Solution 1. Hermite La courbe s'exprime sous la forme d'un polynôme de degré n. Quel est le
degré ? On a 4 contraintes (2 points extrêmes et 2 tangentes). On va
pouvoir trouver les 4 coefficients d'un polynôme de degré 3.: H(u) =
au3+bu2+cu+d. Puisque H(u) = au3+bu2+cu+d, H'(u) = 3au2+2bu+c
P0 = H(0) = d
P3 = H(1) = a+b+c+d
T0 = H'(0) = c
T3 = H'(1) = 3a+2b+c
On résoud en a,b,c,d :
a = 2P0-2P3+T0+T3
b=-3P0+3P3-2T0-T3
c=T0
d=P0 ou bien matriciellement :
[pic]
Cette dernière matrice est la matrice de Hermite (cubique). Les points de Bezier P0 , P1, P2, P3 correspondants :
évident pour les extrémités : P0 = P0 et P3= P3
les vecteurs tangents sont donnés par : T0 = 3 (P1- P0) et T3 = 3 (P3- P2).
Autrement dit
[pic]. On calcule alors la courbe de Bezier (polynômes de Bernstein, forme
matricielle,...). Ou bien on écrit la matrice de passage de Bezier à Hermite:
[pic]
et donc on peut exprimer la courbe sous la forme [pic]
ce qui est bien la matrice de Bezier. On aurait pu calculer la courbe par la méthode de de Casteljau : puisqu'on
a les points de Bezier, il suffit d'appliquer l'algorithme récursif (cf
cours). 2. Bezier - Bspline a)C'est une Bezier cubique. On a donc
[pic] b) C'est une B-Spline cubique (=> ordre k = 4)
dont le vecteur nodal [pic] donc n=3 => 4 points de contrôle et
(n-k+2) = 1 morceau de courbe
On trace ce morceau sur [uk-1,un+1] = [u3,u4] = [0,1]. On remarque que seule la fonction de base B3,1 est non nulle.
On en déduit que seules B2,2 et B3,2 sont non nulles (d'après la formule de
récurrence rappelée ci-dessous)
[pic].
Idem pour les étapes de récurrence suivantes. De plus, le facteur qui multiplie les fonctions de base B.,i-1 pour
construire la fonction de base B.,i sont toujours u et 1-u ( car le
dénominateur vaut toujours 1-0 = 1 et le numérateur est toujours u-0 ou 1-
u). (cf dessin ci_dessous) [pic]
On en déduit les fonctions de base :B0,4 = (1-u)3, B1,4 = 3u(1-u)2, B2,4 =
3u2(1-u) et B3,4 = u3
Ce sont les fonctions de base de Bezier (ou Bernstein). Les deux courbes
sont donc identiques c)B-Spline cubique uniforme : on prend la forme matricielle pour calculer
les 7-4+2 = 5 morceaux de courbe.
[pic]
ce qui donne pour le premier morceau
[pic]
et ainsi de suite pour les autres morceaux. On constate que cette courbe
est différente des 2 autres. 3. Catmull-Rom
Chaque morceau est déterminé par 2 points à interpoler et deux tangentes :
on retrouve la formulation de Hermite.
On a les points à interpoler Pi et Pi+1 et les tangentes définies par Pi-1
jusqu'à Pi+2. Puisque CR(u) = au3+bu2+cu+d, CR'(u) = 3au2+2bu+c
Pi = CR(0) = d
Pi+1 = CR(1) = a+b+c+d
s(Pi+1-Pi-1) = CR'(0) = c
s(Pi+2-Pi) = CR'(1) = 3a+2b+c
On résoud en a,b,c,d : Matriciellement :
[pic]
Cette dernière matrice est la matrice de Catmull-Rom (cubique). La courbe
est donc :
[pic] 4. Surfaces de révolution
Il suffit de reprendre les coordonnées en x et y de chaque courbe et
d'opérer la rotation autour de y
X = x(u) sin(v), Y = y(u), Z = x(u) cos(v) avec u dans [0,1] et v dans
[0,2*PI] On trace les faces comme pour les sphères, tores et autres rhomboèdres...
-----------------------
B3,1 B3,2 B2,2 B1,3 B2,3 B3,3 B0,4 B1,4 B2,4 B3,4 0 0 0 0 1 1
1 1 u u 1-u