5.2. Składanie obrotów
Macierz R1,0 opisuje obrót między
układami współrzędnych O x0 y0 z0 i O
x1 y1 z1. Jeżeli zostanie dołożony trzeci
układ współrzędnych O x2 y2 z2 powiązany
z układami O x0 y0 z0 i O x1
y1 z1 przez obroty, to w takim przypadku
punkt P może być reprezentowany na trzy sposoby przez wektory r0,
r1, r2 w trzech układach
współrzędnych. Związki pomiędzy tymi reprezentacjami punktu przedstawiono
następująco:
(5.15)
(5.16)
(5.17)
Macierze R1,0 i R2,0
reprezentują obroty względem osi układu O x0 y0 z0,
natomiast R2,1 reprezentuje obrót względem układu O x1
y1 z1. Podstawiając wzór (5.17) do równania (5.15)
otrzymano:
(5.18)
Po
porównaniu równań (5.16) i (5.18) otrzymano równość:
(5.19)
Powyższe równanie jest prawem składania dla obrotów.
Innymi słowy aby przekształcić współrzędne punktu P z jego reprezentacji
r2 w układzie O x2 y2 z2
na reprezentację r0 w układzie O x0
y0 z0, można ją najpierw przekształcić na jego
reprezentację r1 w układzie O x1 y1
z1, używając macierzy R2,1, a następnie
przekształcić r1 na r0 używając macierzy R1,0.
Równanie
(5.18) można interpretować następująco. Założono, iż na początku wszystkie trzy
układy pokrywają się. W pierwszej fazie obracany jest układ O x1
y1 z1 względem układu O x0 y0
z0 zgodnie z przekształceniem R1,0. W fazie
drugiej przy pokrywających się układach O x1 y1 z1
i O x2 y2 z2, następuje obrót układu O
x2 y2 z2 względem układach O x1
y1 z1 zgodnie z przekształceniem R2,1.
W każdym przypadku układ, względem którego odbywa się obrót, nazywa się układem
bieżącym.
|
Przykład
5.6
|

|
|
|
Wyznaczyć
macierz reprezentującą obrót układu O x1 y1 z1
wraz z wektorem r o kąt f=90° wokół bieżącej osi y z następnym obrotem układu O
x2 y2 z2 związanego z wektorem r o kąt q=90°
wokół bieżącej osi z, wiedząc iż na początku wszystkie układy były
zorientowane tak jak zostało to przedstawione na rys.5.12, a współrzędne
wektora względem układu O x2 y2 z2 są
następujące r2=[2,1,0].
|
|
|
Rys.5.12
Początkowa orientacja układów
|
|
Rozwiązanie:
Aby
rozwiązać przedstawione zadanie należy dokonać złożenia ruchów, tak więc
macierz R powstaje z wymnożenia macierzy obrotu względem osi y z macierzą
obrotu względem osi z. Na rys.5.13 i rys.5.14 przedstawiono poszczególne etapy
obrotów.


|

|

|
|
Rys.5.13
Obrót układu względem osi y
|
Rys.5.14
Obrót układu względem osi z
|

Wyznaczona macierz R2,0 transformuje
układ O x2 y2 z2 do układu O x0
y0 z0, tak więc współrzędne wektora r2
względem układu O x0 y0 z0 są
następujące:

Poniżej w tabeli 5.6 przedstawiono
kod przygotowany w programie MapleTM.
|
>
|
restart;
|
|
>
|
with(linalg):
|
|
>
|
r[2]:=(vector(3,[2,1,0]));
|
|
>
|
phi:=evalf(convert(90*degrees,radians));
|
|
>
|
theta:=evalf(convert(90*degrees,radians));
|
|
>
|
R[y,phi]:=matrix(3,3,[cos(phi),0,sin(phi),
0,1,0,
-sin(phi),0,cos(phi)]);
|
|
>
|
R[z,theta]:=matrix(3,3,[cos(theta),-sin(theta),0,
sin(theta),cos(theta),0,0,0,1]);
|
|
>
|
R[2,0]:=multiply(R[y,phi],R[z,theta]);
|
|
>
|
r[0]:=multiply(R[2,0],r[2]);
|
Tabela 5.6 Zapis funkcji w
programie MapleTM dla przykładu 5.6.
|
Przykład
5.7
|

|
|
|
Wyznaczyć
macierz reprezentującą obrót układu O x1 y1 z1
wraz z wektorem r o kąt q=90° wokół bieżącej osi z z następnym obrotem układu O
x2 y2 z2 związanego z wektorem r o kąt f=90°
wokół bieżącej osi y, wiedząc iż na początku wszystkie układy były
zorientowane tak jak zostało to przedstawione na rys.5.15, a współrzędne
wektora względem układu O x2 y2 z2 są
następujące r2=[2,1,0].
|
|
|
Rys.5.15
Początkowa orientacja układów
|
|
Rozwiązanie:
W tym
przykładzie zaistniała sytuacja odwrotna do tej z przykładu 5.6 należy dokonać
złożenia ruchów w następującej kolejności, należy wymnożyć macierz obrotu
względem osi z z macierzą obrotu względem osi y. Na rys.5.16 i rys.5.17
przedstawiono poszczególne etapy obrotów.
|

|

|
|
Rys.5.16
Obrót układu względem osi z
|
Rys.5.17
Obrót układu względem osi y
|


Wyznaczona macierz R2,0 transformuje
układ O x2 y2 z2 do układu O x0
y0 z0, tak więc współrzędne wektora r2
względem układu O x0 y0 z0 są
następujące:

Poniżej w tabeli 5.7 przedstawiono
kod przygotowany w programie MapleTM.
|
>
|
restart;
|
|
>
|
with(linalg):
|
|
>
|
r[2]:=(vector(3,[2,1,0]));
|
|
>
|
theta:=evalf(convert(90*degrees,radians));
|
|
>
|
phi:=evalf(convert(90*degrees,radians));
|
|
>
|
R[z,theta]:=matrix(3,3,[cos(theta),-sin(theta),
0,sin(theta),cos(theta),0,0,0,1]);
|
|
>
|
R[y,phi]:=matrix(3,3,[cos(phi),0,sin(phi),0,1,0,
-sin(phi),0,cos(phi)]);
|
|
>
|
R[2,0]:=multiply(R[z,theta],R[y,phi]);
|
|
>
|
r[0]:=multiply(R[2,0],r[2]);
|
Tabela 5.7 Zapis funkcji w
programie MapleTM dla przykładu 5.7.
Jak widać na przykładzie 5.6 i 5.7 bardzo istotna jest
kolejność mnożenia macierzy, obrót w przeciwieństwie do położenia nie jest
wielkością wektorową i nie podlega prawu dodawania wektorów, wynika z tego, iż składanie
obrotów na ogół nie jest przemienne.
|
Przykład
5.8
|

|
|
|
Wyznaczyć
macierz reprezentującą obrót układu O x1 y1 z1
wraz z wektorem r o kąt f=90° wokół ustalonej osi y0 z
następnym obrotem układu O x2 y2 z2
związanego z wektorem r o kąt q=90° wokół ustalonej osi z0,
wiedząc iż na początku wszystkie układy były zorientowane tak jak zostało to
przedstawione na rys.5.15, a współrzędne wektora względem układu O x2
y2 z2 są następujące r2=[2,1,0].
|
|
|
Rys.5.18
Początkowa orientacja układów
|
|
Rozwiązanie:
W tym przypadku układ O x0 y0 z0
jest układem ustalonym tak więc wcześniej określone prawo
składania nie jest prawdziwe, natomiast właściwym prawem składania jest
mnożenie kolejnych macierzy obrotów w kolejności odwrotnej do podanej wzorem
(5.19). Należy zauważyć, że same obroty nie są wykonywane w odwrotnej
kolejności, a raczej są one wykonywane wokół układu ustalonego niż bieżącego. Na
rys.5.19 i rys.5.20 przedstawiono poszczególne etapy obrotów.
|

|

|
|
Rys.5.19 Obrót układu względem osi y0
|
Rys.5.20
Obrót układu względem osi z0
|
W pierwszej fazie osie ustalone i
bieżące są te same, czyli O x0 y0 z0 co
umożliwia zapisanie przekształcenia w postaci:

W drugiej
fazie następuje obrót wokół ustalonego układu O x0 y0
z0, a nie bieżącego układu O x1 y1 z1
dlatego nie można stwierdzić, czy zachodzi zależność:

W takim
wypadku należy cofnąć poprzedni obrót, a następnie wykonać obrót wokół osi z0
i na koniec przywrócić wyjściowe przekształcenie, czyli:

Podstawiając
do równania opisującego wektor r w układzie O x0 y0 z0
zależność przedstawioną powyżej i reprezentującą wektor r w układzie O x1
y1 z1 otrzymano:

Dla
danego układu ustalonego O x0 y0 z0,
układu bieżącego O x1 y1 z1 i macierzy
obrotu R1,0 wiążącej te układy, jeżeli trzeci układ O x2
y2 z2 jest otrzymany przez obrót R2,1
wykonany względem układu bieżącego, to aby otrzymać obrót R2,0
należy pomnożyć prawostronnie macierz R1,0 z R2,1:

Natomiast,
gdy drugi obrót ma być wykonany względem układu ustalonego, należy dokonać
mnożenia lewostronnie macierzy R1,0 z R2,1
w wyniku takiej operacji otrzymano:

Macierz R2,0
reprezentuje zawsze przekształcenie między układami O x0 y0
z0 i O x2 y2 z2.

Wyznaczona macierz R2,0 transformuje
układ O x2 y2 z2 do układu O x0
y0 z0, tak więc współrzędne wektora r2
względem układu O x0 y0 z0 są
następujące:

Poniżej w tabeli 5.8 przedstawiono
kod przygotowany w programie MapleTM.
|
>
|
restart;
|
|
>
|
with(linalg):
|
|
>
|
r[2]:=(vector(3,[2,1,0]));
|
|
>
|
phi:=evalf(convert(90*degrees,radians));
|
|
>
|
theta:=evalf(convert(90*degrees,radians));
|
|
>
|
R[y,phi]:=matrix(3,3,[cos(phi),0,sin(phi),
0,1,0,
-sin(phi),0,cos(phi)]);
|
|
>
|
R[z,theta]:=matrix(3,3,[cos(theta),-sin(theta),0,
sin(theta),cos(theta),0,0,0,1]);
|
|
>
|
R[2,0]:=multiply(R[z,theta],R[y,phi]);
|
|
>
|
r[0]:=multiply(R[2,0],r[2]);
|
Tabela 5.8 Zapis funkcji w
programie MapleTM dla przykładu 5.8.
|