OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS CHAPITRE IV OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS
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 w constante (génératrice) s’appuyant sur une courbe fixe C(u) (directrice) C(u) + l w, u [0,1], l . w N(u, l) = d C(u) x w d u C(u)
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 coniques Déplacement d'une droite (génératrice) s’appuyant sur une courbe fixe C(u) (directrice) tout en passant par un point fixe P. S(u, l) = P + l (C(u) - P), u [0,1], l [0,1]. N(u, l) = l d C(u) x (C(u) - P) d u C(u) P
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 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). D C(u) Le plan est | | à a + l d - C(u) (a + l d - C(u)) N N * (a + l d - C(u)) = 0 l = [C(u) * N - a * N] / (d * N).
SURFACES BILINÉAIRES Une surface bilinéaire est construite à partir de 4 sommets P, Q, R et W. 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 +(1-u)v Q + u(1-v) R + u v W, u, v [0,1]. N(u, v) = S(u, v) x S(u, v) u v où S(u, v) = v (W – Q) + (1 – v) (R – P), u S(u, v) = u (W – R) + (1 – u) (Q – P). v Si les 4 sommets sont dans un même plan, la surface en question est un quadrilatère.
SURFACES BILINÉAIRES S(u, v) = (1-u) (1-v) P +(1-u)v Q + u(1-v) R + u v W, u, v [0,1]. On peut subdiviser S en 4 sous-surfaces bilinéaires avec les sommets suivants : I : P, S(0, ½), S(½, 0) et S(½, ½). II : S(0, ½), Q, S(½, ½) et S(½, 1). III : S(½, 0), S(½, ½), R et S(1, ½). IV : S(½, ½), S(½, 1), S(1, ½) et W. Cette subdivision est exacte. Considérons par exemple la sous-surface I notée A(u, v): A(u, v) = (1-u) (1-v) P +(1-u)v S(0, ½) + u(1-v) S(½, 0) + u v S(½, ½), = (1-u) (1-v) P + (1-u)v {½ P + ½Q} + u(1-v) {½ P + ½ R} + u v {¼ P + ¼ Q + ¼ R + ¼ W} = {(1-u) (1-v) + ½ (1-u)v + ½ (1-v)u + ¼ u v } P + {½ (1-u)v + ¼ u v} Q + {½ u(1-v) + ¼ u v} R + {¼ u v} W = {1 - ½ v - ½ u + ¼ u v } P + {½ v - ¼ u v} Q + {½ u - ¼ u v} R + {¼ u v} W = S(½ u , ½ v)
SURFACES GUIDÉES Elle est obtenue par interpolation linéaire de 2 courbes 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.
SURFACES DE COONS LINÉAIRES En considérant les 4 courbes frontières C1(u), C2(u), C3(v) et C4(v), on peut imaginer simplement la somme de 2 surfaces guidées: S(u, v) = (1-v) C1(u) + v C2(u) + (1-u) C3(v) + u C4(v) u, v [0,1]. où C1(0) C3(0), C3(1) C2(0), C2(1) C4(1) et C1(1) C4(0). Après examen, on voit que : S(0, 0) = 2 C1(0), S(0, 1) = 2 C2(0), S(1, 0) = 2 C4(0), S(1, 1) = 2 C4(1), S(0, v) = (1-v) C1(0) + v C2(0) + C3(v) S(1, v) = (1-v) C1(1) + v C2(1) + C4(v) S(u, 0) = C1(u) + (1-u) C3(0) + u C4(0) S(u, 1) = C2(u) + (1-u) C3(1) + u C4(1). C2(u) C4(v) C3(v) C1(u) Ceci est dû à la duplication des 4 sommets.
SURFACES DE COONS LINÉAIRES Pour corriger cet état de fait, nous considérons plutôt: S(u,v) = (1-v) C1(u) + v C2(u) + (1-u) C3(v) + u C4(v) - C1(0) (1-u)(1-v) – C2(0)(1-u)v -C4(0) u(1-v) – C4(1) u v, u, v [0,1] où S(0, 0) = C1(0), S(0, 1) = C2(0), S(1, 0) = C4(0), S(1, 1) = C4(1), S(0, v) = C3(v), S(1, v) = C4(v), S(u, 0) = C1(u), S(u, 1) = C2(u).
SURFACES DE COONS LINÉAIRES
Maillage polygonal Jusqu’à maintenant, nous avons considéré des surfaces qui peuvent être décrites analytiquement. Dans bien des applications, une description analytique est absente. Pensons à la représentation d’une automobile ou d’un paquebot. La surface d’un objet peut alors être représentée approximativement par un ensemble de polygones. Même si nous possédons des surfaces décrites analytiquement comme par ex., des surfaces paramétriques, il est facile de construire un maillage triangulaire approximant chaque surface à partir des points suivants de la surface : {S(u, v) | u = 0, , 2, …, 1; v = 0, , 2, …, 1} et cela facilite l’application des algorithmes d’affichage.
Maillage polygonal Calcul de la normale en chacun des sommets des facettes d’un maillage triangulaire. TROIS FAÇONS DIFFÉRENTES : la normale en chacun des sommets d’une facette triangulaire est la même et correspond à la normale au plan du triangle. la normale en un sommet d’une facette triangulaire est la moyenne des normales des plans des triangles ayant ce sommet en commun. la normale en un sommet d’une facette triangulaire est la normale à la surface en ce point.
Exercice # 1 Fonction booléenne qui retourne TRUE si un point P appartient à un polygone. FALSE autrement. On peut supposer que le polygone est dans le plan X°Y. Construisons une demi-droite issue de P qui intercepte le polygone sans intercepter ces sommets. Calculer m # d’intersections entre cette demi-droite et les arêtes du polygone. Si m est impaire alors retourne TRUE sinon retourne FALSE. P m = 4.
Exercice # 2 Fonction booléenne qui retourne TRUE si un polygone est convexe. FALSE autrement. Soient P0, P1, P2, …, Pn-1 les sommets d’un polygone, testez le signe de la coordonnée en z du vecteur : (Pi - Pi-1) x (Pi+1 - Pi), i = 1, 2, …, n avec Pn P0 et Pn+1 P1. Si le signe est le même pour tout i = 1, 2, …, n alors retourner TRUE sinon retourner FALSE. Note : Le polygone est dans le plan X°Y; la coordonnée en z des sommets est nulle.
Exercice # 3 Considérons un plan dont le vecteur normal est N et la distance de l’origine au plan est d, et un triangle 3D non dégénéré dont les sommets sont resp. Q, R et S. L’intersection de ces 2 objets donne lieu à plusieurs situations. Dans chacune d’elles, indiquez comment nous pouvons identifier les surfaces résultantes et comment nous pouvons déterminer quelle situation s’applique. L’équation du plan est : N* P + d = 0. 1er cas : Surface résultante Triangle QRS Condition : N * Q + d = 0, N * R + d = 0, N * S + d = 0. 2ième cas : Surface résultante aucune Condition : N * Q + d < 0, N * R + d < 0, N * S + d < 0 ou encore N * Q + d > 0, N * R + d > 0, N * S + d > 0.
Exercice # 3 (suite) 3ième cas : Surface résultante 1 point Si la surface résultante est un point alors il s’agit d’un des 3 sommets du triangle disons Q. Conditions : N * Q + d = 0, (N * R + d < 0, N * S + d < 0) ou (N * R + d > 0, N* S + d > 0). Des conditions semblables peuvent être fournies lorsque le point résultant est R ou S. 4ième cas : Surface résultante 1 segment de droite (i) La surface résultante est une arête du triangle, disons QR. Condition : N * Q + d = 0, N * R + d = 0, N * S + d 0. Des conditions semblables peuvent être fournies lorsque la surface résultante est RS ou QS. R Q
Exercice # 3 (suite) La surface résultante est un segment de droite dont l’une des extrémités est un sommet du triangle, disons Q. Condition : N * Q + d = 0, (N * R + d <0, N * S + d > 0) ou (N * R + d >0, N* S + d < 0). Pour trouver l’autre extrémité du segment résultant, il s’agit de calculer [0, 1] tel que R + (S - R) fait partie du plan N * P + d = 0. Une démarche semblable peut être effectuée lorsque le sommet du triangle appartenant au plan est R ou S. R Q S
Exercice # 3 (fin) (iii) la surface résultante est un segment de droite : aucun des sommets du triangle ne fait partie du plan et il existe au moins un sommet du triangle de chaque côté du plan (supposons que R et S sont de part et d’autre du plan). Condition : N * Q + d 0, N * R + d 0, N * S + d 0 l’un des 3 termes est négatif et l’un des trois termes est positif. Pour calculer l’intersection entre chaque arête du triangle (dont les extrémités sont de part et d’autre du plan) et le plan, on peut procéder comme en (ii). R Q S