WYKAAD 8 8. Transformacje 3-D 8.1. Transformacje w przestrzeni 3-D 8.1.1. Transformacje elementarne " przesunięcie, " zmiana skali, " obroty wokół poszczegóInych osi układu. Układ współrzędnych y x z Współrzędne jednorodne (x, y, z) x y z 1 [ ] (x2 , y2 , z2 ) x2 y2 z2 1 [ ] m11 m12 m13 m14 �ł łł �ł śł x2 y 2 z2 1 = x y z 1 [ ] [ ]�ł m21 m22 m23 m24 śł �ł m31 m32 m33 m34 śł �ł m41 m42 m43 m44 śł �ł �ł Przesunięcie 1 0 0 0 �ł łł �ł 0 1 0 0śł śł x2 y 2 z2 1 = x y z 1 [ ] [ ]�ł 0 0 1 0śł �ł �ł tx ty tz 1śł �ł �ł x2 y2 z2 1 = x y z 1 �"T t ty tz [ ] [ ] ( ) x Zmiana skali sx 0 0 0 �ł łł �ł śł x2 y2 z2 1 = x y z 1 [ ] [ ]�ł 0 sy 0 0śł �ł 0 0 sz 0śł �ł 0 0 0 1śł �ł �ł x2 y2 z 2 1 = x y z 1 �" S sx sy sz [ ] [ ] ( ) Obrót wokół osi z cosŚ sinŚ 00 Ś Ś �ł łł �ł śł Ś Ś 00 śł x2 y2 z2 1 = x y z 1 [ ] [ ]�ł - sinŚ cosŚ �ł 0010 śł �ł śł 0001 �ł �ł x2 y2 z 2 1 = x y z 1 �" Rz Ś Ś [ ] [ ] ( ) Obrót wokół osi x 1000 �ł łł �ł śł sinŚ 0 śł x 2 y 2 z2 1 = x y z 1 [ ] [ ]�ł 0 - cosŚ cosŚ sinŚ �ł 00 śł �ł śł 0001 �ł �ł x2 y2 z2 1 = x y z 1 �" Rx Ś Ś [ ] [ ] ( ) Obrót wokół osi y cosŚ 0 - sinŚ 0 �ł łł �ł śł 0100 śł x 2 y 2 z2 1 = x y z 1 [ ] [ ]�ł sinŚ cosŚ �ł 00 śł �ł śł 0001 �ł �ł x2 y2 z2 1 = x y z 1 �" Ry Ś Ś [ ] [ ] ( ) 8.1.2. Składanie przekształceń Obrót punktu (obiektu) o kąt Ś wokół dowolnie zadanej osi Ś Sformułowanie zadania: y Ś x2 y2 z2 ( ) x x x1 y1 z1 ( ) z Dane: " opis osi obrotu x1 y1 z1 , x2 y2 z2 , ( ) ( ) " opis obiektu (np. siatka wieloboków), " kąt obrotu Ś Ś Należy wyznaczyć macierz transformacji realizującej obrót obiektu o kąt Ś . Ś Rachunek wektorowy (przypomnienie): wektor - v = x y z [ ] długość wektora - v = x2 + y2 + z2 Operacje rachunku wektorowego: v1 = x1 y1 z1 , v2 = x2 y2 z2 [ ] [ ] 1. Suma wektorów v1 + v2 = x1 + x2 y1 + y2 z1 + z2 [ ] 2. Iloczyn skalarny Definicja 1 v1 �" v2 = x1x2 + y1y2 + z1z2 Definicja 2 v1 �" v2 = v1 v2 cosĆ v2 Ć v1 3. Iloczyn wektorowy Definicja 1 ux uy uz �ł łł v1 � v2 = det�ł x1 y1 z1 śł �ł śł �ł x2 y2 z2 śł �ł �ł y u y u x x u z z Definicja 2 v1 � v2 = u �" v1 v2 sinĆ v1x v2 v2 u Ć v1 Reprezentacja osi obrotu: y Ś x2 y2 z2 ( ) x x u x1 y1 z1 ( ) z Oś obrotu opisana będzie przez wektor u zaczepiony w punkcie x1 y1 z1 i zadany następująco: ( ) u = a b c [ ] gdzie x2 - x1 y2 - y1 z2 - z1 a = , b = , c = v v v v = x2 - x1 + y2 - y1 + z2 - z1 ( )2 ( )2 ( )2 Jest oczywiste, że u = 1. Kroki procedury obrotu obiektu wokół osi: 1. Przesunięcie osi i obiektu, tak aby oś przechodziła przez środek układu współrzędnych. 2. Obrócenie osi i obiektu, tak aby oś stała się współIiniowa z jedną z osi układu współrzędnych (np.z osią z). - położenie osi na płaszczyznie (x-z), - obrót wokół osi y Ś 3. Obrót obiektu wokół osi z o kąt Ś . 4. Transformacja odwrotna do wykonanej w kroku 2. 5. Transformacja odwrotna do wykonanej w kroku 1. Krok 1: Przesunięcie osi i obiektu, tak aby oś przechodziła przez środek układu współrzędnych. y Ś u x x z Dokonano przesunięcia opisanego przez macierz 1 0 0 0 �ł łł �ł 01 0 0śł �ł śł T x1, - y1, - z1 = (- ) �ł 00 1 0śł �ł - x1 - y1 - z1 1śł �ł �ł Początek wektora u został przesunięty z punktu x1 y1 z1 ( ) do punktu 0 0 0 . ( ) Krok 2: Obrócenie osi i obiektu, tak aby oś stała się współliniowa z osią z. Położenie osi obrotu na płaszczyznie (x-z). y u2 u b x ą uz c a z u = a b c - wektor reprezentujący oś obrotu [ ] u2 = 0 b c - rzut wektora u na płaszczyznę (x-z) [ ] uz = 0 0 1 - wersor osi z [ ] Położenie osi obrotu na płaszczyznie (x-z) jest równoważne obrotowi wektora u2 o kąt ą . Jak wyznaczyć ą , lub siną i cosą ? Z definicji iloczynu skalarnego u2 �" uz = 0�" 0 + b �" 0 + c �"1 = c (def.1) u2 �" uz = c u2 �" uz = u2 �" uz �" cosą (def.2) u2 = b2 + c2 = d , uz = 1 u2 �" uz = d �" cosą stąd c cosą = d Z definicji iloczynu wektorowego ux uy uz �ł łł śł u2 � uz = det�ł 0 b c = ux �" b (def.1) �ł śł �ł 0 0 1 śł �ł �ł u2 � uz = ux u2 �" uz �" siną = ux �" d �" siną (def.2) stąd b siną = d Ostatecznie, położenie osi obrotu na płaszczyznie (x-z) można wykonać przez obrót wokół osi x o kąt ą . Dokonano obrotu opisanego przez macierz �ł łł 1000 �ł śł c b 00 �ł śł d d Rx = (ą ) �ł śł b c 0 - 0 �ł śł d d �ł śł 0001 �ł śł �ł �ł Położenie osi obrotu na osi z y � x uz u2 2 u2 d a z u2 2 = a 0 d - położony ( w poprzednim kroku ) na [ ] płaszczyznie (x-z) wektor u, u2 = 0 0 d - położony ( w poprzednim kroku ) na osi z [ ] wektor u, uz = 0 0 1 - wersor osi z. [ ] Jak wyznaczyć � , lub sin� i cos� ? Z definicji iloczynu skalarnego u2 2 �" uz = a�" 0 + 0�" 0 + d �"1 = d (def.1) u2 �" uz = d u2 2 �"uz = u2 2 �" uz �" cos� (def.2) 2 2 u2 2 = a2 + d = a2 + b2 + c2 = a2 + b2 + c2 = 1 ( ) uz = 1 u2 �" uz = d �" cosą stąd cos � = d Z definicji iloczynu wektorowego ux uy uz �ł łł śł u2 2 � uz = det�ł a 0 d = uy �" a (def.1) (- ) �ł śł �ł 0 0 1 śł �ł �ł u2 2 � uz = uy u2 2 �" uz �" sin� = uy �" sin� (def.2) stąd sin� = - a Położenie osi obrotu na osi z można wykonać przez obrót wokół osi y o kąt � . Dokonano obrotu opisanego przez macierz d 0 a 0 �ł łł �ł śł 0 1 0 0 �ł śł Ry � = ( ) �ł - a 0 d 0 śł �ł śł 0 0 0 1 �ł �ł Transformacje w pozostałych krokach procedury obrotu obiektu wokół osi okreśIone są przez następujące macierze: Ś Krok 3. Obrót obiektu wokół osi z o kąt Ś . cosŚ sinŚ 00 Ś Ś �ł łł �ł śł - sinŚ cosŚ 00 Ś Ś �ł śł Rz Ś = Ś ( ) �ł 0010 śł �ł śł 0001 �ł �ł Krok 4. Transformacja odwrotna do wykonanej w kroku 2 - - Ry 1 � �" Rx 1 ( ) (ą ) Krok 5. Transformacja odwrotna do wykonanej w kroku 1 - 1 T (- x1, - y1, - z1 ) Macierz reaIizująca transformację obrotu obiektu wokół zadanej osi przyjmuje ostatecznie postać R Ś = T - x1, - y1, - z1 �" Rx ą �" Ry � �" Rz Ś �" Ś Ś ( ) ( ) ( ) ( ) ( ) - - - 1 �" Ry 1 � �" Rx 1 ą �"T - x1, - y1, - z1 ( ) ( ) ( ) Przykład Dane: Oś obrotu: Prosta przechodząca przez punkty 1 1 �ł �ł x1 y1 z1 = , 0, , ( ) �ł �ł �ł łł 2 2 3 �ł x2 y2 z2 = , 11�ł . , ( ) �ł �ł �ł łł 4 Obiekt: 1 Sfera o promieniu r = 8 3 3 �ł �ł i środku w punkcie x0 y0 z0 = , 1, . ( ) �ł �ł �ł łł 2 2 NaIeży wykonać 7 obrotów obiektu wokół osi o kąt Ś będący wieIokrotnością kąta 450. Rzut obiektu na płaszczyznę (x-y) przed dokonaniem obrotów pokazuje rysunek. Po dokonaniu obrotów pojawia się 7 nowych obiektów. Rzut obiektów na płaszczyznę (x-z) wygIąda tak, natomiast ich obraz perspektywiczny (bez osi) następująco.