回転行列
\begin{align}
\boldsymbol{R}_{x}(\boldsymbol{η}) =
\begin{pmatrix}
1 & 0 & 0\\ 0 & \cos \phi & – \sin \phi \\
0 & \sin \phi & \cos \phi
\end{pmatrix}
\end{align}
\begin{align}
\textbf{R}_{y}(\boldsymbol{η}) =
\begin{pmatrix}
\cos \theta & 0 & \sin \theta \\
0 & 1 & 0\\
-\sin \theta & 0 & \cos \theta
\end{pmatrix}
\end{align}
\begin{align}
\textbf{R}_{z}(\boldsymbol{η}) =
\begin{pmatrix}
\cos \psi & -\sin \psi & 0 \\
\sin \psi & \cos \psi & 0 \\
0 & 0 & 1
\end{pmatrix}
\end{align}
を定義してオイラー角が複数あることを調べる。MATLABで次のような関数を実装し、
function [Rx,Ry,Rz] = symRot(eta2)
phi=eta2(1);
theta=eta2(2);
psi=eta2(3);
Rx=[...
1 0 0;...
0 cos(phi) -sin(phi);...
0 sin(phi) cos(phi);...
];
Ry=[...
cos(theta) 0 sin(theta);...
0 1 0;...
-sin(theta) 0 cos(theta);...
];
Rz=[...
cos(psi) -sin(psi) 0;...
sin(psi) cos(psi) 0;...
0 0 1;...
];
end
シンボリック演算の機能を利用して
syms phi theta psi
[Rx,Ry,Rz]=symRot([phi theta psi])
とすると各回転行列が得られる。
例えばオイラー角の一つ
\begin{align}
\boldsymbol{R}_I^B (\boldsymbol{η}) =\boldsymbol{R}_z (\boldsymbol{η}) \boldsymbol{R}_y (\boldsymbol{η}) \boldsymbol{R}_x(\boldsymbol{η})
\end{align}
を計算すれば
\begin{align}
\boldsymbol{R}_I^B(\boldsymbol{η}) =
\begin{pmatrix}
\boldsymbol{C}_\psi \boldsymbol{C}_\theta & \boldsymbol{C}_\psi \boldsymbol{S}_\phi \boldsymbol{S}_\theta – \boldsymbol{C}_\phi \boldsymbol{S}_\psi & \boldsymbol{S}_\phi \boldsymbol{S}_\psi + \boldsymbol{C}_\phi \boldsymbol{C}_\psi \boldsymbol{S}_\theta\\
\boldsymbol{C}_\theta \boldsymbol{S}_\psi & \boldsymbol{C}_\phi \boldsymbol{C}_\psi + \boldsymbol{S}_\phi \boldsymbol{S}_\psi \boldsymbol{S}_\theta & \boldsymbol{C}_\phi \boldsymbol{S}_\psi \boldsymbol{S}_\theta – \boldsymbol{C}_\psi \boldsymbol{S}_\phi \\
-\boldsymbol{S}_\theta & \boldsymbol{C}_\theta \boldsymbol{S}_\phi & \boldsymbol{C}_\phi \boldsymbol{C}_\theta
\end{pmatrix}
\end{align}
を得る。
これを使えば掛ける順を変えれば回転行列の形が変化することを確認できる。
コメント