WYK4


WYKAAD 4
4. Transformacje 2-D, wizualizacja 2-D
4.1. Transformacje w przestrzeni 2-D
4.1.1. Transformacje elementarne
" przesunięcie,
" zmiana skali,
" obrót wokół środka układu współrzędnych.
Przesunięcie ( translation ):
x2 = x + tx
y = y + ty
2
Zmiana skali ( scaling ):
x2 = x Å" sx
y = y Å" sy
2
Obrót wokół środka układu współrzędnych (rotation):
x = x cos Ć - y sin Ć
Ć
Ć
2
y2 = y cos Ć + x sin Ć
Ć
Ć
x = r cos( ą + Ć ) = r cos ą cos Ć - r sin ą sin Ć
Ä…
Ć
Ä…
Ć
Ä…
Ć
2
y = r sin( ą + Ć ) = r sin ą cos Ć - r cos ą sin Ć
Ä…
Ć
Ä…
Ć
Ä…
Ć
2
Ä…
Ä…
x = r cos Ä… , y = r sin Ä…
x = x cos Ć - y sin Ć
Ć
Ć
2
y = y cos Ć + x sin Ć
Ć
Ć
2
4.1.2. Współrzędne jednorodne
( homogeneous coordinates )
August Ferdynand Möbius ( 1790 - 1868 )
( x, y ) x y 1
[]
( x2 , y2 ) 2 2 1
x y
[]
m11 m 0
îÅ‚ Å‚Å‚
12
x2 y2 1 = x y 1 m21 m22 0śł
[] [ïÅ‚
]ïÅ‚
śł
ïÅ‚ m31 m32 1śł
ðÅ‚ ûÅ‚
Przesunięcie:
îÅ‚ - 1 0 0
Å‚Å‚
x2 y2 1 = x y 1 0 1 0śł
[] [ïÅ‚
]ïÅ‚
śł
ïÅ‚ 0 0 1śł
ðÅ‚ ûÅ‚
macierz przesunięcia
îÅ‚ 1 0 0Å‚Å‚
ïÅ‚
T(tx ,ty ) = 0 1 0śł
ïÅ‚ śł
ïÅ‚ śł
x
ðÅ‚t ty 1ûÅ‚
x2 y2 1 = x y 1 Å"T(tx ,ty )
[] [ ]
Zmiana skali:
sx 0 0
îÅ‚ Å‚Å‚
x2 y2 1 = x y 1 0 sy 0śł
[] [ïÅ‚
]ïÅ‚
śł
ïÅ‚ 0 0 1śł
ðÅ‚ ûÅ‚
macierz zmiany skali
sx 0 0
îÅ‚ Å‚Å‚
ïÅ‚
S( sx ,sy ) = 0 sy 0śł
ïÅ‚ śł
ïÅ‚ 0 0 1śł
ðÅ‚ ûÅ‚
x2 y2 1 = x y 1 Å"S( sx ,sy )
[] [ ]
Obrót wokół środka układu współrzędnych:
cosĆ sinĆ 0
îÅ‚ Å‚Å‚
x2 y2 1 = x y 1 - sinĆ cosĆ 0śł
[] [ïÅ‚
]ïÅ‚
śł
ïÅ‚ 00 1śł
ðÅ‚ ûÅ‚
macierz obrotu
cosĆ sinĆ 0
îÅ‚ Å‚Å‚
ïÅ‚
R(Ć ) = - sinĆ cosĆ 0śł
ïÅ‚ śł
ïÅ‚ 00 1śł
ðÅ‚ ûÅ‚
x2 y2 1 = x y 1 Å" R(Ć )
[] [ ]
4.1.3. Składanie transformacji
Przykład:
Obrócić obiekt wokół punktu ( xc ,yc ) pomniejszając
obiekt dwukrotnie.
1. Przesunięcie obiektu, tak aby punkt ( xc ,yc )
znaIazł się w punkcie ( 0, 0 ).
p = x y 1
[]
p2 = x2 y 2 1
[]
,
p2 = p Å"T( - xc - yc )
2. Przeskalowanie obiektu z parametrami skalowania
sx = 1 / 2, sy = 1 / 2 .
p2 = p Å"T( - xc - yc Å") S( sx ,sy )
,
3. Obrócenie obiektu wokół środka układu
współrzędnych o kąt Ć
p2 = p Å"T( - xc - yc Å") S( sx ,sy Å") R(Ć )
,
4. Przesunięcie obiektu, tak aby punkt ( 0, 0 ) znaIazł
siÄ™ w punkcie ( xc ,yc ).
p2 = p Å"T( - xc - yc Å") S( sx ,sy Å") R(Ć )T( xc ,yc )
,
Transformacja ogólna:
M = T( - xc - yc Å") S( sx ,sy Å") R(Ć )T( xd ,yd )
,
m11 m 0
îÅ‚ Å‚Å‚
12
x2 y2 1 = x y 1 m21 m22 0śł
[] [ïÅ‚
]ïÅ‚
śł
ïÅ‚ m31 m32 1śł
ðÅ‚ ûÅ‚
obIiczanie nowych współrzędnych punktu:
- 4 dodawania zmiennoprzecinkowe,
- 4 mnożenia zmiennoprzecinkowe.
4.1.4. Inne transformacje (przykłady)
Odbicie ( reflection ):
îÅ‚ - 1 0 0
Å‚Å‚
x2 y2 1 = x y 1 0 1 0śł
[] [ïÅ‚
]ïÅ‚
śł
ïÅ‚ 0 0 1śł
ðÅ‚ ûÅ‚
\cinanie ( shear ):
1 0 0
îÅ‚ Å‚Å‚
[ 2 2 ] [ ]ïÅ‚
x y 1 = x y 1
ïÅ‚SHx 1 0śł
śł
ïÅ‚ 0 0 1śł
ðÅ‚ ûÅ‚
4.2. Ogólna procedura wizualizacji 2-D
" układ współrzędnych obserwatora
( world coordinates ),
" okno obserwatora ( window ),
" układ współrzędnych urządzenia
( device coordinates ),
" okno urzÄ…dzenia (viewport ),
4.2.1. Przebieg wizualizacji 2-D
1. Zdefiniować obiekt w układzie współrzędnych
obserwatora .
2. W układzie współrzędnych obserwatora okreśIić
okno obserwatora.
3. W układzie współrzędnych urządzenia okreśIić
okno urzÄ…dzenia.
4. Zmodyfikować opis obiektu usuwając te eIementy ,
które znajdują się poza oknem obserwatora
(obcinanie).
5. Przetransformować opis obiektu z wnętrza okna
obserwtora do wnętrza okna urządzenia, stosując
transformacjÄ™
pv = pw Å"T( - xw min-, yw min )S( sx ,sy )T( xv min ,yv min )
gdzie
pv = xv yv 1
[]
pw = xw yw 1
[]
xv max - xv min
sx =
xw max - xw min
yv max - yv min
sy =
yw max - yw min
i narysować obraz obiektu.
4.2.1. Obcinanie ( clipping )
Obcinanie odcinka - algorytm Cohena i Sutherlanda
W przestrzeni obserwatora dany jest zbiór odcinków.
Każdy odcinek opisany jest przez punkt początkowy i
końcowy.
Kodowanie obszarów w przestrzeni obserwatora:
bit4, bit3, bit2, bit1
bit1 = 1 - na lewo od okna obserwatora,
bit2 = 1 - na prawo od okna obserwatora,
bit3 = 1 - w dół od okna obserwatora,
bit4 = 1 - w górę od okna obserwatora.
Krok 1
DIa każdego punktu końcowego odcinka obIiczyć
różnice współrzędnych punktu końcowego i granic
okna obserwatora
Ä… = x - xw min
Ä…
1
Ä… = xw max - x
Ä…
2
Ä… = y - yw min
Ä…
3
Ä… = yw max - y
Ä…
4
Krok 2
Zakodować wszystkie punkty końcowe odcinków
według reguły:
Ä…
jeżeIi ą < 0 to biti = 1
i
Ä…
jeżeIi ą e" 0 to biti = 0
i
Krok 3
Sprawdzić kody par punktów końcowych dIa
wszystkich odcinków.
JeżeIi:
1. kodP1 = kodP2 = 0000 - odcinek Ieży całkowicie
wewnÄ…trz okna obserwatora
2. biti dla P1 = biti dlaP2 = 1 - odcinek Ieży całkowicie
na zewnÄ…trz okna obserwatora
" pozostawić odcinki Ieżące wewnątrz okna,
" usunąć odcinki Ieżące na zewnątrz okna,
" jeśIi wyczerpano w ten sposób wszystkie odcinki
zakończyć aIgorytm,
" w przeciwnym przypadku wykonać krok 4.
Krok 4
DIa pozostałych odcinków, których punkty końcowe
Ieżą na Iewo, Iub na prawo od granicy okna obIiczyć
nowe współrzędne tych punktów według wzorów:
y = yw min dIa punktów Ieżących na Iewo,
y = yw max dIa punktów Ieżących na prawo,
x = xk + ( y - yk ) / m
gdzie
x, y - nowe współrzędne punktu końcowego,
xk ,yk - poprzednie współrzędne punktu.
Zakodować nowe punkty końcowe według reguły
opisanej w kroku 2.
Powtórzyć krok 3.
DIa pozostałych odcinków, których punkty końcowe
Ieżą pod, Iub ponad granicami okna obIiczyć nowe
współrzędne tych punktów według wzorów:
y = yw min dIa punktów Ieżących poniżej okna,
y = yw max dIa punktów Ieżących powyżej okna,
x = xk + ( y - yk ) / m
gdzie
x, y - nowe współrzędne punktu końcowego,
xk ,yk - poprzednie współrzędne punktu.
Zakodować nowe punkty końcowe według reguły
opisanej w kroku 2.
Powtórzyć krok 3.
Ostateczny efekt obcinania:


Wyszukiwarka

Podobne podstrony:
wyk4
Fot wyk4 int
Wyk4 Obserwacje GPS
isd wyk4
wyk4 MS11
wyk4 linux pipe fifo
Wyk4 BEZP i OCHR
czesc1 wyk4
WYK4 met graficzna
io wyk4
Wyk4 Grawimetria satelitarna 1 ver3
Informatyka w turystyce wyk4?zarnik
wyk4 widmo dyfrakcyjne przepisane
Wyk4 widmo dyfrakcyjne
wyk4 algor druk

więcej podobnych podstron