Visualisation de surfaces décrites analytiquement
Visualisation de la fonction y = F(x, z) PRINCIPE DE BASE On fixe une coordonnée, par exemple X = Xmax, correspondant à la coordonnée X la plus proche de l’observateur. On introduit la notion de crête supérieure et inférieure pour déterminer les parties visibles à chaque étape; initialement, ces 2 crêtes correspondent à la section de surface y = F(xmax, z). y z X = Xmax - Y = 0 X = Xmax Y = 0 x
Visualisation de la fonction y = F(x, z) On affiche la section de surface correspondant à X = Xmax. X Xmax. X Xmax - ( > 0 fixé) À l’aide des crêtes supérieure et inférieure courantes, on génère les parties visibles de la section y = F(X, z); puis, on les affiche. Mise à jour des crêtes. Si X Xmin alors réitérez. Note : A) Chaque section est décomposée en sous-sections. Les parties visibles d’une sous-section sont celles au-dessus de la crête supérieure ou au-dessous de la crête inférieure. 2 3 1
Visualisation de la fonction y = F(x, z) B) Distinction entre les algorithmes - mode de représentation des 2 lignes de crête; - processus de mise à jour des crêtes. Algorithme de Williamson 1 crête : une suite de segments de droite (ui, vi) - (ui+1, vi+1), i=1, 2, …, N ui < ui+1 Chaque sous-section d’une section de surface y = F(x, z) est un segment de droite. Le processus de mise à jour des crêtes et de calcul des parties visibles se ramène à la comparaison d’une sous-section d’une section de surface avec chaque crête.
Comparaison entre le segment courant et la crête supérieure Soit (a, b) - (c, d) où a < c, le segment courant, Déterminer le segment dont les extrémités (uj, vj) et (uj+1, vj+1) sont telles que uj a < uj+1. uj < a Posons pa = ordonnée du point d’intersection entre la droite verticale u = a et le segment (uj, vj) - (uj+1, vj+1). pa < b (a, b) (uj+1, vj+1) (a, pa) (uj, vj)
Comparaison entre le segment courant et la crête supérieure point d’intersection (e, f) entre les 2 segments (a, b) (uj+1, vj+1) (e, f) 3 cas : (e, f) = (uj+1, vj+1) (e, f) = (c, d) (e, f) (c, d) (a, pa) (uj, vj) point d’intersection (e, f) entre les 2 segments c uj+1 (a, b) (uj+1, vj+1) (c, d) (a, pa) (uj, vj)
Comparaison entre le segment courant et la crête supérieure (c, d) c > uj+1 (a, b) (uj+1, vj+1) (a, pa) (uj, vj) pa = b pa > b uj > a
Algorithme de Wright PARTIES VISIBLES 1 crête 1 vecteur dont la longueur dépend de la résolution d’une machine « virtuelle » fixée par l’utilisateur. Chaque élément contient la hauteur maximale (minimale) atteinte pour l’abscisse correspondante. Chaque sous-section d’une section de surface est un segment de droite discrétisé en considérant sa projection sur la crête. PARTIES VISIBLES Une liste de points Coûteux en mémoire Dépendance avec la machine Voici les caractéristiques de la liste de points : ……….NNVVVVVNNNNNNVVVVVVVNN……. V : visible N : non visible Segment de droite
Algorithme de Butland x z BUT : Réduire les exigences en mémoire des algorithmes précédents. PROCÉDÉ : On visualise la surface par bandes d’égales largeurs Réduction de la dimension des crêtes Mise à jour des crêtes simplifiée RESTRICTION : Projection en parallèle orthographique 2 vues possibles : A) Vue de côté (direction de projection plan X°Y) Soit la grille de points (xi, zj, F(xi,zj)), i = 0, 1, 2, …, m; j = 0, 1, 2, …, n x Pour chaque bande i = 0, 1, 2, …, m-1 déterminez les parties visibles des segments z (xi, g(xi,zj)) - (xi+1, g(xi+1,zj)) (xi, g(xi,zj-1)) - (xi+1, g(xi+1,zj)) j où g(x, z) = F(x, z) cos x - z sin x Bande x : un angle de rotation autour de l’axe des x
Algorithme de Butland x z B) Vue en coin On considère la même grille de points. x z pos_z pos_x On effectue une rotation autour de l’axe des y d’un angle : = arctg pos_x / pos_z afin que l’observateur soit situé dans le même axe que les bandes. De plus, la rotation se fait par rapport au centre de la grille afin de ne pas déplacer la surface. On peut aussi effectuer une rotation autour de l’axe des x. Le calcul des parties visibles se fait aussi bande par bande. Bande
Comparaison des algorithmes L’algorithme de Williamson est très lent; il peut être remplacé par celui de Wright. L’algorithme de Butland est très rapide mais contraignant. Ce sont 3 modes d’affichage en « fil de fer ». Pour pallier à cet inconvénient, on peut approximer la surface par un ensemble de triangles à l’aide de la grille de points : (xi, zj, F(xi,zj)), i = 0, 1, 2, …, m; j = 0, 1, 2, …, n Il s’agit ensuite d’opter pour un algorithme d’élimination des parties cachées dans le cas d’une scène de triangles 3D.