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.