OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS Olivier Drion, Amapi 7 Ateliers graphiques. Eyrolles, 2003.
OBJETS ÉLÉMENTAIRES TRIANGLE Considérons les principales classes de surfaces ou volumes simples utilisées en modélisation géométrique et en infographie. TRIANGLE Il est défini par ses 3 sommets p1, p2, p3. L'équation du plan qui coïncide avec ce triangle est: [(p2 - p1) x (p3 - p1)] * (P - p1) = 0. où P est un point quelconque du plan. L'aire du triangle est égale à ||(p2 - p1) x (p3 - p1)|| / 2. S(u, v) = u p1 + (1 – u) {p2 v + (1 – v) p3}, u, v [0, 1]. p2 v + (1 – v) p3 p2 S(u, v) p3 p1 Espace normalisé
CERCLE Il est défini par son centre C, son rayon R et le vecteur normal N au plan du cercle. Hypothèse : le cercle est centré à l'origine. L'équation du plan du cercle est: N . P = 0 où P est un point quelconque du plan. On recherche donc l'intersection de ce plan avec la sphère de centre 0 et de rayon r dont l'équation est: x2 + y2 + z2 = r2 . On obtient donc: (N = (n1, n2, n3) , P = (x, y, z)) (n12 + n22 ) y2 + (n12 + n32 )z2 + 2 n2 n3 y z = n12 r2 où n1 0 Hypothèse : le cercle est différent de l'origine. Effectuer une translation de C des points satisfaisant l'équation précédente.
POLYGONES Un polygone est une figure fermée formée d'une suite de points appelés "sommets " reliés par des segments appelés "arêtes". Les sommets sont distincts et les arêtes ne se croisent pas. L'ensemble des sommets font partie d'un même plan. Un polygone est défini à partir de ses sommets P0, P1, P2, ..., PN-1.
POLYGONES CONVEXES POLYGONES MONOTONES Un polygone où chaque paire de points à l'intérieur du polygone implique que le segment de droite les reliant se trouve aussi complètement à l'intérieur du polygone. oui non POLYGONES MONOTONES Un polygone possédant 2 sommets extrêmes dans une direction donnée, reliés par 2 chaînes monotones dans cette direction. La direction x est choisie.
POLYGONES EN SPIRALE POLYGONES EN ÉTOILE Un polygone dont le contour contient uniquement une sous-chaîne concave. POLYGONES EN ÉTOILE Un polygone possédant un sommet visible de tous les autres sommets.
POLYGONES - Comment vérifier que nous sommes en présence d’un polygone ? - Déterminer si un polygone est convexe, monotone, en spirale ou en étoile ? - Vérifier si un point appartient ou non à un polygone ? - Calculer l’intersection entre 2 polygones, entre une droite et un polygone, entre un plan et un polygone, etc. POLYÈDRES Une figure fermée bornée où chaque face est un polygone. typedef Liste Polyedre; (* liste de polygones 3D *) Le type liste représente une liste doublement chaînée.
SURFACES DE RÉVOLUTION Appliquer une rotation à une courbe autour d'un axe quelconque dans l'espace 3D : soient la courbe génératrice C(u), u [0,1], l'axe de rotation d, la transformation TZ faisant coïncider l'axe de rotation à l'axe des z, la transformation inverse T-1Z, la transformation Tq de rotation d'un angle q autour de l'axe des z, on obtient : S(u, q) = T-1Z Tq TZ C(u), u [0, 1], q [0, 2]. La courbe génératrice C(u) est quelconque; nous pouvons utiliser une spline cubique, une courbe de Bézier ou une courbe B-Spline par exemple. C(u) | | d Ex. C(u) est un segment de droite
SURFACES DE RÉVOLUTION Ex. C(u) est un segment de droite C(u) | | d C(u) et d sont coplanaires.
SURFACES DE BALAYAGE Déplacement d'une droite, d'un polygone ou d'une courbe quelconque le long d'une courbe dans l'espace à 3 dimensions. Surfaces cylindriques Déplacement d'une droite de direction d constante (génératrice) s’appuyant sur une courbe fixe C(u) (directrice) C(u) + l d, u [0,1], l . Surfaces coniques Déplacement d'une courbe (génératrice) s’appuyant sur une courbe fixe C(u) (directrice) tout en passant par un point fixe P. Cas particulier : la génératrice est une droite P + l (C(u) - P), u [0,1], l [0,1]. Surfaces conoïdes Déplacement d'une droite (génératrice) s’appuyant sur une courbe fixe C(u), u [0,1], et une droite fixe D: : a + l d, l tout en restant | | à un plan dont la normale est N. C(u) + a{a + l d - C(u)}, u [0,1], a [0,1]. où l = [C(u) * N - a * N] / (d * N).
SURFACES DÉCRITES À PARTIR D’UNE APPROXIMATION PAR MORCEAUX Jusqu'à maintenant, nous avons considéré des surfaces qui peuvent être décrites analytiquement. Dans bien des applications, une description analytique est absente. Nous n'avons qu'à penser à la représentation d'une automobile ou d'un paquebot. Maillage triangulaire Ex.: Un objet pourrait être représenté par un ensemble de facettes triangulaires. Soient {Pi} une suite de points 3D appartenant à l'objet, alors on peut regrouper cette suite de points en triplets afin de constituer une "bonne" approximation de la surface. Chaque triplet permet de définir une facette triangulaire. La surface d'un triangle dont les sommets sont P1, P2 et P3 est: T(u,v) = u {v P1 + (1-v) P2} + (1 - u) P3 u, v [0,1].
SURFACES BILINÉAIRES Une surface bilinéaire est construite à partir des 4 sommets du carré unité dans l'espace paramétrique c'est-à-dire, P(0,0), P(0,1), P(1,0) et P(1,1). Chaque point sur la surface est obtenu par interpolation linéaire entre 2 points sur des frontières opposées: S(u, v) = (1-u) (1-v) P(0,0) +(1-u)v P(0,1) + u(1-v) P(1,0) + u v P(1,1), u, v [0,1]. Sous forme matricielle, on obtient : S(u, v) = [ 1 – u u ] P(0,0) P(0,1) 1 – v P(1,0) P(1,1) v Tiré de D. F. Rogers & J. A. Adams, Mathematical Elements for Computer Graphics. McGraw-Hill, 1990, p. 417.
SURFACES BILINÉAIRES On peut construire une surface complexe par l’assemblage d’un grand nombre de surfaces bilinéaires, mais la continuité entre les surfaces bilinéaires est d’ordre 0. Si les 4 sommets sont dans un même plan, la surface en question est un quadrilatère. P(0,0) P(1,0)
SURFACES GUIDÉES Elle est obtenue par interpolation linéaire de 2 courbes quelconques P(v) et Q(v): S(u, v) = (1-u) P(v) + u Q(v), u, v [0,1]. Nous pouvons remarquer que S(0,v) = P(v) et S(1,v) = Q(v). De plus, nous avons: S(0,0) = P(0), S(1,1) = Q(1), S(0,1) = P(1) et S(1,0) = Q(0), les extrémités des 2 courbes. Famille de segments de droite Famille de segments de droite P(v) S(u,1) P(v) Q(v) Q(v)
SURFACES DE COONS LINÉAIRES En considérant les 4 courbes frontières P(u,0), P(u,1), P(0,v) et P(1,v), on peut imaginer simplement la somme de 2 surfaces guidées: S(u, v) = (1-v) P(u,0) + v P(u,1) + (1-u) P(0,v) + u P(1,v). Après examen, on se rend compte que: S(0,0) = 2 P(0,0), S(0,v) = (1-v) P(0,0) + v P(0,1) + P(0,v). Ceci est dû à la duplication des 4 sommets P(0,0), P(0,1), P(1,0) et P(1,1). Pour corriger cet état de fait, nous considérons plutôt: S(u,v) = (1-v) P(u,0) + v P(u,1) + (1-u) P(0,v) + u P(1,v) - P(0,0)(1-u)(1-v) - P(0,1)(1-u)v -P(1,0)u(1-v) -P(1,1) u v, u, v [0,1] où S(0,0) = P(0,0), S(0,1) = P(0,1), etc. S(0,v) = P(0,v), S(u,0) = P(u,0), etc.
SURFACES DE COONS LINÉAIRES P(1,1) P(1,v) P(u,1) P(0,1) P(1,0) P(0,v) P(u,0) u P(0,0) v
SURFACES DE COONS LINÉAIRES Cas particulier : P(1, v) = Q, v [0,1] S(u,v) = (1-v) P(u,0) + v P(u,1) + (1-u) P(0,v) - P(0,0)(1-u)(1-v) - P(0,1)(1-u)v, u, v [0,1] P(1,0) = P(1,1) P(u,1) P(0,1) P(u,0) P(0,v) u v P(0,0)