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