回転行列による実ベクトルの回転(2次元・3次元)

回転行列 (rotation matrix) は,ユークリッド空間上のベクトルとの積を取ることにより,そのベクトルを回転させる演算子(作用素)として働きます.このことを,2次元回転行列および3次元回転行列に関して,三角関数の加法定理を用いて証明します.また,回転行列の転置行列,逆行列,行列式などの性質とその意味を説明します.

【スマホでの数式表示について】

当サイトをスマートフォンなど画面幅が狭いデバイスで閲覧すると,数式が画面幅に収まりきらず,正確に表示されない場合があります.その際は画面を回転させ横長表示にするか,ブラウザの表示設定を「PCサイト」にした上でご利用ください.

2次元回転行列

2次元回転行列とは

2次元回転行列
2次元直交座標上の実ベクトル {\bf r} = (x,y) \in {\mathbb R}^2 を,原点の周りで角度 \alpha だけ回転させる演算子(operator) R(\alpha) は,次の 2\times 2 行列で表すことができる:

(1)   \begin{equation*} R(\alpha) = \left( \begin{array}{cc} \cos \alpha & - \sin \alpha\\ \sin \alpha & \cos \alpha \end{array} \right) \end{equation*}

行列 R(\alpha) は,2次元ベクトルに左から作用させることにより,原点の周りでベクトルを角度 \alpha だけ回転させる.

以下に R(\alpha) によるベクトルの回転

(2)   \begin{equation*} R(\alpha):{\mathbb R}^2 \to {\mathbb R}^2:{\bf r} \mapsto {\bf r}'  \end{equation*}

の模式図を示す.

回転行列がベクトルを回転させることの証明(2次元)

2次元直交座標上の任意の実ベクトル {\bf r} = (x,y) は,適当な r \in [0, \infty) および \theta \in [0, 2\pi) を用いて

(3)   \begin{equation*} {\bf r} = \left( \begin{array}{c} x\\ y \end{array} \right) = \left( \begin{array}{c} r \cos \theta\\ r \sin \theta \end{array} \right) \end{equation*}

と書ける(ただし r=|{\bf r}|=\sqrt{x^2+y^2} ).また,このベクトル {\bf r} を原点の周りに角度 \alpha だけ回転させたベクトル {\bf r}' = (x',y') は,

(4)   \begin{equation*} {\bf r}' = \left( \begin{array}{c} x'\\ y' \end{array} \right) = \left( \begin{array}{c} r \cos (\theta + \alpha)\\ r \sin (\theta + \alpha) \end{array} \right) \end{equation*}

と書ける.

他方,ベクトル {\bf r} に,式(1)で定義される2次元回転行列 R(\alpha) を掛けると,ベクトルと行列の積,および三角関数の加法定理に注意して,

(5)   \begin{eqnarray*} && R(\alpha)\;{\bf r} \\ &=& \left( \begin{array}{cc} \cos \alpha & - \sin \alpha\\ \sin \alpha & \cos \alpha \end{array} \right) \left( \begin{array}{c} r \cos \theta\\ r \sin \theta \end{array} \right)\\ &=& \left( \begin{array}{c} r \cos \theta \cos \alpha - r \sin \theta \sin \alpha\\ r \sin \theta \cos \alpha + r \cos \theta \sin \alpha \end{array} \right)\\ &=& \left( \begin{array}{c} r \cos (\theta + \alpha)\\ r \sin (\theta + \alpha) \end{array} \right)\\ &=& {\bf r}' \end{eqnarray*}

すなわち

(6)   \begin{equation*} {\bf r}'= R(\alpha)\;{\bf r} \end{equation*}

となることがわかる.

結局,式(1)で定義される回転行列 R(\alpha) は,2次元直交座標上のベクトル {\bf r} = (x,y) を原点の周りに角度 \alpha だけ回転させる作用の,行列表現であることが示された.

2次元回転行列の積

2次元回転行列の積
2つの2次元回転行列 R(\alpha)R(\beta) の積について,次式が成り立つ.

(7)   \begin{equation*} R(\alpha)R(\beta) = R(\alpha + \beta) \end{equation*}

上式(7)は,次のことを意味する.2つの2次元回転行列の積 R(\alpha)R(\beta) は,左から作用させることで,ベクトルを角度 \beta だけ回転させた後,さらに角度 \alpha だけ回転させる.これは,双方を合わせてベクトルを角度 \alpha + \beta だけ回転させること,すなわち回転行列 R(\alpha+\beta) を作用させることに等しい.

上式(7)は,次の通りに確かめることができる:

(8)   \begin{eqnarray*} && R(\alpha)R(\beta)\\ &=& \left( \begin{array}{cc} \cos \alpha & - \sin \alpha\\ \sin \alpha & \cos \alpha \end{array} \right) \left( \begin{array}{cc} \cos \beta & - \sin \beta\\ \sin \beta & \cos \beta \end{array} \right)\\ &=& \left( \begin{array}{cc} \cos \alpha \cos \beta - \sin \alpha \sin \beta & - \sin \alpha \cos \beta - \cos \alpha \sin \beta \\ \sin \alpha \cos \beta + \cos \alpha \sin \beta & \cos \alpha \cos \beta - \sin \alpha \sin \beta \end{array} \right)\\ &=& \left( \begin{array}{cc} \cos ( \alpha + \beta ) & - \sin ( \alpha + \beta ) \\ \sin ( \alpha + \beta )  & \cos ( \alpha + \beta )  \end{array} \right)\\ &=& R(\alpha + \beta) \end{eqnarray*}

2次元回転行列の行列式

一般の 2\times 2 行列

(9)   \begin{equation*} A= \left( \begin{array}{cc} a & b \\ c & d  \end{array} \right) \end{equation*}

の行列式(determinant) |A|(あるいは \det A)は

(10)   \begin{equation*} |A|=ad-bc \end{equation*}

であるから,2次元回転行列(1)の行列式は

(11)   \begin{equation*} |R(\alpha)|=\cos^2 \alpha + \sin^2 \alpha =1 \end{equation*}

となり,回転角 \alpha の値に関わらず恒等的に 1 である.

このことは,2次元ベクトルに2次元回転行列を作用させてベクトルを回転させても,ベクトルの大きさは変わらないことを意味する.

2次元回転行列の逆行列と逆回転

2次元回転行列の逆行列と逆回転
2次元回転行列 R(\alpha) について,次式が成り立つ.

(12)   \begin{equation*} R(-\alpha)R(\alpha)=R(\alpha)R(-\alpha)=I \end{equation*}

すなわち

(13)   \begin{equation*} R(-\alpha)=R^{-1}(\alpha) \end{equation*}

が成り立つ.ただし,I は単位行列,R^{-1}(\alpha)R(\alpha) の逆行列である.

式(1)より,R(\alpha) の逆回転を表す行列 R(-\alpha) は以下のように表せる:

(14)   \begin{eqnarray*} R(-\alpha) &=& \left( \begin{array}{cc} \cos (-\alpha) & - \sin (-\alpha)\\ \sin (-\alpha) & \cos (-\alpha) \end{array} \right)\\ &=& \left( \begin{array}{cc} \cos \alpha & \sin \alpha\\ - \sin \alpha & \cos \alpha \end{array} \right) \end{eqnarray*}

式(12)は,次のことを意味する.R(-\alpha)R(\alpha) は,左から作用させることで,ベクトルを角度 \alpha だけ回転させた後,さらに角度 -\alpha だけ回転させる(すなわち元の角度分だけ逆回転させる).これは,双方を合わせてベクトルを角度 \alpha だけ回転させたのちに元に戻すこと,すなわち何もしないことに等しく,あるいは単位行列 I を作用させることに等しい.またこのことは,行列 R(-\alpha)R(\alpha) の「逆の操作」であり,逆行列 R^{-1}(\alpha) に等しいことを意味し,式(13)として表せる.

    \begin{equation*} {\bf r} \underset{R^{-1}}{\overset{R}{\rightleftharpoons}} {\bf r}' \end{equation*}

また,式(12)は,次の通りに確かめることができる.R(-\alpha)R(\alpha) について,

(15)   \begin{eqnarray*} && R(-\alpha)R(\alpha) \\ &=& \left( \begin{array}{cc} \cos (-\alpha) & - \sin (-\alpha)\\ \sin (-\alpha) & \cos (-\alpha) \end{array} \right) \left( \begin{array}{cc} \cos \alpha & - \sin \alpha\\ \sin \alpha & \cos \alpha \end{array} \right)\\ &=& \left( \begin{array}{cc} \cos (-\alpha) \cos \alpha - \sin (-\alpha) \sin \alpha & - \sin (-\alpha) \cos \alpha - \cos (-\alpha) \sin \alpha\\ \sin (-\alpha) \cos \alpha + \cos (-\alpha) \sin \alpha & \cos (-\alpha) \cos \alpha - \sin (-\alpha) \sin \alpha \end{array} \right)\\ &=& \left( \begin{array}{cc} \cos 0 & - \sin 0 \\ \sin 0  & \cos 0 \end{array} \right)\\ &=& \left( \begin{array}{cc} 1 & 0 \\ 0  & 1 \end{array} \right)\\ &=& I \end{eqnarray*}

となる.R(\alpha)R(-\alpha) についても,式(15)と同様の計算により,R(\alpha)R(-\alpha)=I を確かめることができる.

一般の正方行列 A に対して,AB = BA = I を満たすような正方行列 B は,A の逆行列といい,A^{-1} で表す.R(-\alpha) は,R(\alpha) に対して,この逆行列の定義を満たしていることから,R(\alpha) の逆行列を R^{-1}(\alpha) と書くことにすれば,式(13) を得る.

あるいは,

(16)   \begin{equation*} A= \left( \begin{array}{cc} a & b \\ c & d  \end{array} \right) \end{equation*}

を一般の 2 \times 2 可逆行列(正則行列)とすると,その逆行列は

(17)   \begin{equation*} A^{-1} = \frac{1}{ad-bc} \left( \begin{array}{cc} d & -b \\ -c & a  \end{array} \right) \end{equation*}

となるので,2次元回転行列(12)にこれを用いることにより,

(18)   \begin{eqnarray*} R^{-1}(\alpha) &=& \frac{1}{\cos^2 \alpha + \sin^2 \alpha} \left( \begin{array}{cc} \cos \alpha &  \sin \alpha\\ -\sin \alpha & \cos \alpha \end{array} \right)\\ &=& \left( \begin{array}{cc} \cos \alpha &  \sin \alpha\\ -\sin \alpha & \cos \alpha \end{array} \right)\\ &=& \left( \begin{array}{cc} \cos (-\alpha) & - \sin (-\alpha)\\ \sin (-\alpha) & \cos (-\alpha) \end{array} \right)\\ &=&R(-\alpha) \end{eqnarray*}

のようにして,式(13) を導くこともできる.

2次元回転行列は直交行列である

直交行列とは,以下によって定義される行列である.

(定義)直交行列
n \times n 実正方行列(square matrix) A について,その転置行列と逆行列が等しいとき,すなわち

(19)   \begin{equation*} ^t A = A^{-1} \end{equation*}

が成り立つとき,A直交行列(orthogonal matrix) という.

ただし,^t AA の転置行列(the transpose of a matrix A ),A^{-1}A の逆行列(inverse matrix) である.

直交行列は,行列要素が実数である正方行列(実正方行列)に対して定義される.直交行列の概念を行列要素が複素数である場合に拡張したものはユニタリー行列(unitary matrix) という.実ユニタリー行列は直交行列である.

2次元回転行列が直交行列であることは,以下のように簡単に確かめることができる.

行列の行と列を互いに入れ替えたものが転置行列である.一般の2次元正方行列 A に対して,その転置行列 ^t A

(20)   \begin{equation*} A := \left( \begin{array}{cc} a & b \\ c & d  \end{array} \right) \quad \Rightarrow \quad ^t A = \left( \begin{array}{cc} a & c \\ b & d  \end{array} \right) \end{equation*}

となる.

2次元回転行列(1)は

    \begin{equation*} R(\alpha) = \left( \begin{array}{cc} \cos \alpha & - \sin \alpha\\ \sin \alpha & \cos \alpha \end{array} \right) \end{equation*}

であるから,その転置行列は

(21)   \begin{equation*} ^t R(\alpha) = \left( \begin{array}{cc} \cos \alpha & \sin \alpha\\ -\sin \alpha & \cos \alpha \end{array} \right) \end{equation*}

となる.

これは,R(\alpha) の逆行列 R^{-1}(\alpha) に他ならない.

よって,2次元回転行列は直交行列である.

直交行列であるが2次元回転行列ではない行列

行列 R が2次元回転行列ならば,R は直交行列である.しかし逆は成り立たない.
すなわち,全ての 2\times 2 直交行列が 2次元回転行列(12) として表せるわけではない.

直交行列だが2次元回転行列(12) でない行列として,次のような例を挙げることができる.

左からの作用により2次元ベクトルを x 軸に関して鏡像反転させる行列:

(22)   \begin{equation*} \left( \begin{array}{cc} 1 & 0 \\ 0 & -1 \end{array} \right) \quad : \quad \left( \begin{array}{c} x \\ y \end{array} \right) \mapsto \left( \begin{array}{c} x \\ -y \end{array} \right) \end{equation*}

左からの作用により x 座標と y 座標を入れ替える行列(あるいは 2次元ベクトルを直線 y=x に関して鏡像反転させる行列):

(23)   \begin{equation*} \left( \begin{array}{cc} 0 & 1 \\ 1 & 0 \end{array} \right) \quad : \quad \left( \begin{array}{c} x \\ y \end{array} \right) \mapsto \left( \begin{array}{c} y \\ x \end{array} \right) \end{equation*}

3次元回転行列

3次元回転行列とは

3次元直交座標上のベクトル {\bf r} =(x,y,z) を,

x 軸; あるいは ベクトル {\bf e}_x = \left( 1,0,0 \right)
y 軸; あるいは ベクトル {\bf e}_y = \left( 0,1,0 \right)
z 軸; あるいは ベクトル {\bf e}_z = \left( 0,0,1 \right)

の周りで角度 \alpha だけ回転させる演算子 R_x(\alpha)R_y(\alpha)R_z(\alpha) は,それぞれ次の 3\times 3 行列で表すことができる:

3次元回転行列
x 軸周りでベクトルを右ねじの回転方向に回す回転行列:

(24)   \begin{equation*} R_x(\alpha) = \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos \alpha & - \sin \alpha\\ 0 & \sin \alpha & \cos \alpha \end{array} \right) \end{equation*}

y 軸周りでベクトルを右ねじの回転方向に回す回転行列:

(25)   \begin{equation*} R_y(\alpha) = \left( \begin{array}{ccc} \cos \alpha & 0 & \sin \alpha\\ 0 & 1 & 0 \\ -\sin \alpha & 0 & \cos \alpha \end{array} \right) \end{equation*}

z 軸周りでベクトルを右ねじの回転方向に回す回転行列:

(26)   \begin{equation*} R_z(\alpha) = \left( \begin{array}{ccc} \cos \alpha & - \sin \alpha & 0\\ \sin \alpha & \cos \alpha & 0\\ 0 & 0 & 1  \end{array} \right) \end{equation*}

行列 R_x(\alpha)R_y(\alpha)R_z(\alpha) は,3次元ベクトルに左から作用させることにより,それぞれ x 軸,y 軸,z 軸の周りで,ベクトルを角度 \alpha だけ回転させる.

以下に R_z(\alpha) によるベクトルの回転

(27)   \begin{equation*} R_z(\alpha):{\mathbb R}^3 \to {\mathbb R}^3:{\bf r}_1 \mapsto {\bf r}_2 \end{equation*}

の模式図を示す.

回転行列がベクトルを回転させることの証明(3次元)

3次元直交座標上の任意の実ベクトル {\bf r}_1 = (x_1,y_1,z_1) は,円柱座標系 (r,\theta, \varphi) r \in [0, \infty)\theta \in [0, 2\pi)\varphi \in [0, \pi) を用いて

(28)   \begin{equation*} {\bf r}_1 = \left( \begin{array}{c} x_1\\ y_1\\ z_1 \end{array} \right) = \left( \begin{array}{c} r \cos \theta \sin \varphi \\ r \sin \theta \sin \varphi \\ r \cos \varphi \end{array} \right) \end{equation*}

と書ける(ただし r=|{\bf r}_1|=\sqrt{x_1^2+y_1^2+z_1^2} ).また,このベクトル {\bf r}z 軸の周りで角度 \alpha だけ回転させたベクトル {\bf r}_2 = (x_2,y_2,z_2) は,

(29)   \begin{equation*} {\bf r}_2 = \left( \begin{array}{c} x_2\\ y_2\\ z_2 \end{array} \right) = \left( \begin{array}{c} r \cos (\theta + \alpha) \sin \varphi \\ r \sin (\theta + \alpha) \sin \varphi \\ r \cos \varphi \end{array} \right) \end{equation*}

と書ける.

他方,ベクトル {\bf r}_1 に,式(26)で定義される,z 軸周りの回転行列 R_z(\alpha) を掛けると,ベクトルと行列の積,および三角関数の加法定理に注意して,

(30)   \begin{eqnarray*} R_z(\alpha)\;{\bf r}_1 &=& \left( \begin{array}{ccc} \cos \alpha & - \sin \alpha & 0\\ \sin \alpha & \cos \alpha & 0 \\ 0 & 0 & 1 \end{array} \right) \left( \begin{array}{c} r \cos \theta \sin \varphi \\ r \sin \theta \sin \varphi \\ r \cos \varphi \end{array} \right)\\ &=& \left( \begin{array}{c} r \sin \varphi ( \cos \theta \cos \alpha - \sin \theta \sin \alpha)\\ r \sin \varphi ( \sin \theta \cos \alpha + \cos \theta \sin \alpha)\\ r \cos \varphi \end{array} \right)\\ &=& \left( \begin{array}{c} r \cos (\theta + \alpha) \sin \varphi \\ r \sin (\theta + \alpha) \sin \varphi \\ r \cos \varphi \end{array} \right)\\ &=& {\bf r}_2 \end{eqnarray*}

すなわち

(31)   \begin{equation*} {\bf r}_2 = R_z(\alpha)\;{\bf r}_1 \end{equation*}

となることがわかる.

結局,式(26)で定義される,z 軸周りの回転行列 R_z(\alpha) は,3次元直交座標上のベクトル {\bf r}_1 = (x_1,y_1,Z\1) を,z 軸の周りで角度 \alpha だけ回転させる作用の,行列表現であることが示された.

x 軸周りの回転行列 R_x(\alpha) および y 軸周りの回転行列 R_y(\alpha) についても,円柱座標系を適当に設定することにより,同様にベクトルの回転を確かめることができる.

5 件のコメント

  • 式(8)の途中(3番目)が間違っているかと思います。(αとβが入れ替わっているところがある)
    最初は自分を疑っていて、3時間ほど真剣に悩みましたが、
    他のサイトと比較し、おそらく自分が正しいだろう、と思うようになりました。

    細かいところで揚げ足をとるつもりではないのですが、
    「回転行列の積」で検索するとこちらのページが一番に上がりますので、
    他の人が私と同じように悩まないように、ご確認お願いします。
    私の勘違いでしたら、申し訳ありません。

    • 加藤様

      ご指摘の通り,式(8)3行目の行列の(1,2)成分および(2,1)成分の第2項にalphaとbetaの入れ違いがありました.
      正誤は下記の通りで,本文を修正しました.

      ご丁寧なご指摘,ありがとうございました!

      (誤)

          \begin{equation*} \left( \begin{array}{cc} \cos \alpha \cos \beta - \sin \alpha \sin \beta & - \sin \alpha \cos \beta - \cos \beta \sin \alpha\\ \sin \alpha \cos \beta + \cos \beta \sin \alpha & \cos \alpha \cos \beta - \sin \alpha \sin \beta \end{array} \right)\\ \end{equation*}

      (正)

          \begin{equation*} \left( \begin{array}{cc} \cos \alpha \cos \beta - \sin \alpha \sin \beta & - \sin \alpha \cos \beta - \cos \alpha \sin \beta \\ \sin \alpha \cos \beta + \cos \alpha \sin \beta & \cos \alpha \cos \beta - \sin \alpha \sin \beta \end{array} \right)\\ \end{equation*}

      • いつも,読者の皆様の検算やご指摘で,サイト内容を改善することができ,より良い情報が掲載できることをうれしく思っております.

        皆様,ありがとうございます.

        引き続き,お気づきの点がありましたら,コメント欄にお寄せください.

  • 大学を卒業してずいぶんたちます。3Dの円柱座標の計算結果をグラフにしようと思い、回転行列を探していて一番わかりやすかったのがここでした。ありがとうございました。

    • 小田様

      温かいコメント頂き,ありがとうございます.
      お役に立てましたようで何よりです!

  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です