WYKŁAD TRANSFORMACJE -D PROCEDURA WIZUALIZACJI -D Plan wkładu: Transforaje eleentarne w przestrzeni -D Składanie transforaji Ogólna proedura wizualizaji w -D Obinanie w oknie prostokątn tn 1. Transforaje -D Transforaje eleentarne przesunięie, ziana skali, obrót t wokół środka układu współrz rzędnh. Przesunięie ( translation ) : + t + t t t (,, ) (, ) 1
Ziana skali ( saling ) : s. s 1.5 (, ) (,, ) s s Obrót t wokół środka układu współrz rzędnh (rotation): φ 3 (,, ) φ (, ) osf sinf osf + sinf
(,, ) rsin(φ + α) φ (, ) rsinα α ros(φ + α) rosα r os( a + f ) r osa osf r sina sinf r sin( a + f ) r sina osf r osa sinf r osa, r sina osf sinf osf + sinf Inn sposób b zapisu transforaji eleentarnh - współrzędne jednorodne ( hoogeneous oordinates ) August Ferdnand Möbius ( 179-1 ) współrz rzędne przed transforają (, ) (,,1 ) [ 1] (, ) 1 (,, 1) z współrz rzędne po transforaji [ 1] (, ) (,,1 ) 3
Związek poiędz określoni wżej wektorai ożna zapisać w postai Przesunięie: [ 1] [ 1] 11 1 31 3 13 3 33 Równanie zastępuje równanier + t + t [ 1] [ 1] 1 t 1 t 1 Transforaję przesunięia opisuje wię aierz przesunięia Ziana skali: T( t,t 1 ) t 1 t 1 Równanie zastępuje równanier s s [ 1] [ 1] s s 1
Transforaję skalowania opisuje teraz aierz S( s,s s ) Obrót t wokół środka układu współrz rzędnh: s 1 Równanie osf sinf osf + sinf zastępuje równanier [ 1] [ 1] osf sinf sinf osf 1 Obrót t opisuje w konsekwenji aierz Wniosek: osf R( f ) sinf sinf osf 1 Po wprowadzeniu współrz rzędnh jednorodnh wszstkie trz transforaje eleentarne opisane został w ten sa sposób. Współrz rzędne punktu po wkonaniu transforaji ożna wznazć nożą żą, wektor opisują współrz rzędne punktu przed transforają,, przez odpowiednią aierz. [ 1] [ 1] M gdzie M T, S lub R 5
(, ). Składanie transforaji Przkładowe zadanie: Obrói ić obiekt wokół punktu (, ) o kąt k φ, poniejszają go dwukrotnie. φ (, ) Opisać określon loną wżej transforaję prz poo wzoru. Poszukiwana transforaja zostanie wznazona w kilku krokah. Krok 1 Przesunięie obiektu tak, ab punktu (, ) znalaz w punkie (, ). znalazł się p [ 1] [ 1] p p p T(, ) (, ) t - t -
Krok obiekt z paraetrai skalowania s 1/, Przeskalować obiekt z paraetrai skalowania s 1/. s 1/ s 1/ p p T(, ) S( s,s ) Krok 3 Obrói ić obiekt wokół środka układu współrz rzędnh o kąt k φ. φ p p T(, ) S( s,s ) R( f ) 7
Krok Przesunięie obiektu tak, ab punkt (, ) znalaz punkie (, ). (, ) znalazł się w p p T(, ) S( s,s ) R( f )T(, ) Transforaja została a znaleziona. Jej aierz oże e zostać wlizona po ponożeniu ztereh aierz transforaji eleentarnh. M T (, ) Ss (, s ) R ( φ ) T (, ) d d Transforaja ogólniejsza M T(, ) S( s,s ) R( f )T( d, d ) Można pokazać, że M 11 1 31 3 1 Oblizanie nowh współrz rzędnh punktu; dodawania ziennoprzeinkowe, nożenia ziennoprzeinkowe.
Inne transforaje (przkład): Nie wszstkie transforaje ogą bć wrażone jako złożenia z trzeh, zdefiniowanh uprzednio transforaji eleentarnh. Często stosuje się,, dla przkładu: Odbiie ( refletion ) : (, ) (, ) [ 1] [ 1] 1 1 1 Śinanie ( shear ) : SH (, ) (, 1) (, ) (, 1) [ 1] [ 1] 1 SH 1 1 9
3. Ogólna proedura wizualizaji -D Okno obserwatora (Window) Okno urządzenia (Viewport) wa va win vin win wa vin va Układ współrz rzędnh obserwatora (World Coordinates) Układ współrz rzędnh urzadzenia (Devie Coordinates) Algort wizualizaji -D 1. Zdefiniować obiekt w układzie współrz rzędnh obserwatora.. W układzie współrz rzędnh obserwatora określi lić okno obserwatora 3. W układzie współrz rzędnh urządzenia określi lić okno urządzenia.. Zodfikować opis obiektu usuwają te eleent, które znajdują się poza okne obserwatora (obinanie). 5. Przetransforować opis obiektu z wnętrza okna obserwatora do wnętrza okna urządzenia, stosują transforaję p v p w T( w in, w in )S( s,s )T( v in, v in ) prz z
s v a w a v in w in s v a w a v in w in. Narsować obraz obiektu na ekranie. Obinanie (lipping) Okno obserwatora (Window) Okno urządzenia (Viewport) Obinanie odinka - algort Cohena i Sutherlanda Założenie: W przestrzeni obserwatora dan jest zbiór r odinków. Każd odinek opisan jest przez punkt pozątkow i końow. P wa P 1 win win wa Przkładow układ odinków w przestrzeni obserwatora 11
Kodowanie obszarów w przestrzeni obserwatora: 1 Okno obserwatora 1 1 1 bit, bit3, bit, bit1 bit1 1 - na lewo od okna obserwatora, bit 1 - na prawo od okna obserwatora, bit3 1 - w dółd od okna obserwatora, bit 1 - w góręg od okna obserwatora. a 1 - w in a - w a Krok 1 Dla każdego punktu końowego odinka oblizć różnie współrz rzędnh punktu końowego i grani okna obserwatora. Krok a a a a 1 w in w a 3 w in w a Zakodować wszstkie punkt końowe odinków według reguł: jeżeli eli α i > to biti 1 jeżeli eli α i to biti
Krok 3 Sprawdzić kod par punktów końowh dla wszstkih odinków. Jeżeli: eli: 1. kod P 1 kod P - odinek leż ałkowiie wewnątrz okna obserwatora.. biti dla P 1 biti dla P 1 - odinek leż ałkowiie na zewnątrz okna obserwatora. pozostawić odinki leżą żąe wewnątrz okna, usunąć odinki leżą żąe na zewnątrz okna, jeśli wzerpano w ten sposób b wszstkie odinki zakońz zć algort, w przeiwn przpadku wkonać krok. P wa P 1 win win wa Krok Efekt działania ania algortu po wkonaniu kroku 3 Dla pozostałh odinków, którh punkt końowe leżą na lewo, lub na prawo od grani okna oblizć nowe współrz rzędne th punktów według wzorów: w: 13
win dla punkt wa dla punkt dla punktów leżą żąh na lewo od okna, dla punktów leżą żąh na prawo okna, gdzie k + ( k ), - nowe wsp k, k nowe współrzędne punktu końowego, - poprzednie współrz rzędne punktu. Zakodować nowe punkt końowe według reguł opisanej w kroku. Powtórz rzć krok 3. P wa P 1 win win wa Efekt po wkonaniu pierwszego przebiegu kroku 3 Dla pozostałh odinków, którh punkt końowe leżą pod, lub ponad graniai okna oblizć nowe współrz rzędne th punktów według wzorów: w: win dla punkt wa dla punkt dla punktów leżą żąh poniżej okna, dla punktów leżą żąh powżej okna,
gdzie, - nowe wsp k, k k + ( k ) / nowe współrzędne punktu końowego, - poprzednie współrz rzędne punktu. Zakodować nowe punkt końowe według reguł opisanej w kroku. Powtórz rzć krok 3. P wa P 1 win win wa Końow efekt działania ania algortu obinania 15