Visualisation de surfaces dcrites analytiquement Visualisation de la

  • Slides: 11
Download presentation
Visualisation de surfaces décrites analytiquement

Visualisation de surfaces décrites analytiquement

Visualisation de la fonction y = F(x, z) PRINCIPE DE BASE On fixe une

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 X = Xmax - Y=0 X = Xmax 2 Y=0

Visualisation de la fonction y = F(x, z) On affiche la section de surface

Visualisation de la fonction y = F(x, z) On affiche la section de surface correspondant à 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) 2 3 1 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. 3

Visualisation de la fonction y = F(x, z) B) Distinction entre les algorithmes -

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. 4

Comparaison entre le segment courant et la crête supérieure Soit (a, b) - (c,

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) 5

Comparaison entre le segment courant et la crête supérieure point d’intersection (e, f) entre

Comparaison entre le segment courant et la crête supérieure point d’intersection (e, f) entre les 2 segments (a, b) (u , v ) j+1 (e, f) 3 cas : (a, pa) (e, f) = (uj+1, vj+1) (e, f) = (c, d) (e, f) (c, d) (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) 6

Comparaison entre le segment courant et la crête supérieure c > uj+1 (c, d)

Comparaison entre le segment courant et la crête supérieure c > uj+1 (c, d) (uj+1, vj+1) (a, b) (a, pa) (uj, vj) pa = b pa > b uj > a 7

Algorithme de Wright 1 crête 1 vecteur dont la longueur dépend de la résolution

Algorithme de Wright 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……. Segment de droite V : visible N : non visible 8

Algorithme de Butland BUT : Réduire les exigences en mémoire des algorithmes précédents. PROCÉDÉ

Algorithme de Butland 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 z Pour chaque bande i = 0, 1, 2, …, m-1 déterminez les parties visibles des segments (xi, g(xi, zj)) - (xi+1, g(xi+1, zj)) (xi, g(xi, zj-1)) - (xi+1, g(xi+1, zj)) j Bande où g(x, z) = F(x, z) cos x - z sin x 9 x : un angle de rotation autour de l’axe des x

B) Algorithme de Butland Vue en coin On considère la même grille de points.

B) Algorithme de Butland Vue en coin On considère la même grille de points. x 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 10

Comparaison des algorithmes L’algorithme de Williamson est très lent; il peut être remplacé par

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 3 D. 11