Visualisation de surfaces décrites analytiquement

publicité
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
X = Xmax - 
Y=0
X = Xmax
2
Y=0
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)
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
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, 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 les 2 segments
(a, b) (u , v )
j+1 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)
(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 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É :
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
Algorithme de Butland
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
10
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.
11
Téléchargement