回転行列
\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で次のような関数を実装し、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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 |
シンボリック演算の機能を利用して
1 2 3 | 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}
を得る。
これを使えば掛ける順を変えれば回転行列の形が変化することを確認できる。
コメント