座標変換のメモ その1 回転行列

理論関係

回転行列など座標変換はCADを扱う上では日常茶飯事ですね。とはいえ、全部、暗記する気は全く起きない!ということでメモしようと思います。

回転の順番

回転の順番はZ軸回り,Y軸回り,X軸回りとします。この順番によっては回転後の結果は変わることがあるので注意して下さい。

ちなみに、Z-Y-Xの順番での回転をロール・ピッチ・ヨー角 と呼んだり,Z-Y-Xオイラー角と呼んだりします。

オイラー角といった場合はZ-Y-ZやZ-X-Zの順で回転させるものもあるのですがロール・ピッチ・ロール角というのは聞いたことありませんね。

ここで重要なのは、3回の回転変換があって、回転軸はそれぞれ回転後の座標軸を中心に回転させることです。

つまり

この梁をZ軸(緑)で回して…
こうなる。回転角はαとします。
回転後のY軸(青色)で回して、
最後にX軸(赤色)を軸に回す。

こんな感じです。(伝わるだろうか・・・)

回転行列の計算式

まずは2次元の回転から見ていきましょう。
Z軸回りに { \alpha }回転させたときの座標系のある点 \{p\}  の回転前の座標X,Yから見た成分を \{p_x, p_y\} , 回転後の座標系X’,Y’からみた成分を\{p_x',p_y'\}とします。

三角関数の関係より

(1)   \begin{equation*}    \begin{Bmatrix}p_x \\ p_y\end{Bmatrix} = \begin{bmatrix}\cos\alpha & -\sin\alpha\\\sin\alpha & \cos\alpha \end{bmatrix}\begin{Bmatrix}p_{x'} \\ p_{y'} \end{Bmatrix} \end{equation*}

が得られます。この関係をほかの回転軸に対しても計算すれば

(2)   \begin{equation*} \begin{bmatrix} R \end{bmatrix} =\begin{bmatrix}\cos\alpha & - \sin\alpha & 0 \\ \sin\alpha & \cos\alpha & 0 \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix}\cos\beta & 0 & \sin\beta \\ 0 & 1 & 0 \\ -\sin\beta & 0 & \cos\beta \end{bmatrix} \begin{bmatrix}1 & 0 & 0 \\ 0 & \cos\gamma & -\sin\gamma \\ 0 & \sin\gamma & \cos\gamma \end{bmatrix} \end{equation*}


となり,次式が得られます。

(3)   \begin{equation*}  \begin{bmatrix} R \end{bmatrix} = \begin{bmatrix}\cos\alpha\cos\beta & \cos\alpha\sin\beta\sin\gamma - \sin\alpha\cos\gamma & \cos\alpha\sin\beta\cos\gamma+\sin\alpha\sin\gamma \\ \sin\alpha\cos\beta & \sin\alpha\sin\beta\sin\gamma + \cos\alpha\cos\gamma & \sin\alpha\sin\beta\cos\gamma-\cos\alpha\sin\gamma \\ -\sin\beta & \cos\beta\sin\gamma & \cos\beta\cos\gamma\end{bmatrix}\end{equation*}

ここで { \alpha } はZ軸周りの回転角,{ \beta }はY軸周りの回転角,{ \gamma }はX軸周りの回転角です。(回転後の座標軸周り回転角です)

ちなみに、この式の計算は以下の式により求められます。

座標変換とは「視点を変える」ということ。

上記の回転行列は,最初の座標系から回転させた順に回転行列をかけた結果になります。 ここで回転前の座標系を\Sigma_{o} と表記し,回転後の座標系を\Sigma_{a}として,回転行列を次のように表記します。 つまり次のような式は、回転後の座標系 \Sigma_{a} で計測された点 \{p_a\}をつかって回転前の座標系 \Sigma_{o} から見た座標 \{p_o\}  を計算している。ということになります。行列の添え字,o,aはこの関係を明示的に表すために使います。

(4)   \begin{equation*}    \begin{Bmatrix}p_o\end{Bmatrix} = \begin{bmatrix} ^{o}R_{a}\end{bmatrix}\begin{Bmatrix}p_a\end{Bmatrix}\end{equation*}

回転行列の逆行列

ここで, 座標系\Sigma_{o}から 座標系 \Sigma_{a}に変換するには前から逆行列をかければよいですね。

(5)   \begin{equation*}  \begin{bmatrix}^{o}R_{a}\end{bmatrix}^{-1} \begin{Bmatrix}p_o\end{Bmatrix} = \begin{bmatrix} I\end{bmatrix}\begin{Bmatrix}p_a\end{Bmatrix}\end{equation*}

とても便利なことに回転行列の逆行列は転置行列と等しいことがよく知られています。なので

(6)   \begin{equation*} \begin{bmatrix}^{o}R_{a}\end{bmatrix}^{-1} = \begin{bmatrix} ^{o}R_{a}\end{bmatrix}^{T} =  \begin{bmatrix} ^{a}R_{o}\end{bmatrix} \end{equation*}

となります。

コメント

タイトルとURLをコピーしました