WYK8


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.


Wyszukiwarka