回転行列|加法定理からロドリゲスの公式、軸と角の読み方まで
平面のベクトルを原点のまわりに だけ回す操作は、次の行列を掛けることで書けます。
長さも角度も変えないので、直交行列になります。しかも行列式は で、向きを裏返しません。
3 次元では回転軸が加わり、話が少し複雑になります。順序を変えると結果が違う、という現象もここから出てきます。
<svg viewBox="0 0 460 230" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="230" y="22" font-size="11" fill="#9a9a9a" text-anchor="middle">行列の列は、基本ベクトルの行き先そのものです</text>
<circle cx="230" cy="130" r="70" fill="none" stroke="#e5e5e5" stroke-width="1"></circle>
<line x1="140" y1="130" x2="330" y2="130" stroke="#e5e5e5" stroke-width="1"></line>
<line x1="230" y1="45" x2="230" y2="215" stroke="#e5e5e5" stroke-width="1"></line>
<line x1="230" y1="130" x2="300" y2="130" stroke="#9a9a9a" stroke-width="1"></line>
<polygon points="304,130 295,126 295,134" fill="#9a9a9a"></polygon>
<text x="308" y="127" font-size="11" fill="#9a9a9a">e<tspan font-size="8" dy="3">1</tspan></text>
<line x1="230" y1="130" x2="284" y2="86" stroke="#1b81e0" stroke-width="1.5"></line>
<polygon points="288,83 278,84 283,91" fill="#1b81e0"></polygon>
<text x="292" y="80" font-size="11" fill="#1b81e0">1 列目</text>
<line x1="230" y1="130" x2="230" y2="60" stroke="#9a9a9a" stroke-width="1"></line>
<polygon points="230,56 226,65 234,65" fill="#9a9a9a"></polygon>
<text x="238" y="58" font-size="11" fill="#9a9a9a">e<tspan font-size="8" dy="3">2</tspan></text>
<line x1="230" y1="130" x2="186" y2="76" stroke="#1b81e0" stroke-width="1.5"></line>
<polygon points="183,73 187,83 192,76" fill="#1b81e0"></polygon>
<text x="140" y="70" font-size="11" fill="#1b81e0">2 列目</text>
<path d="M 275 130 A 45 45 0 0 0 262 101" fill="none" stroke="#1b81e0" stroke-width="1"></path>
<text x="286" y="112" font-size="11" fill="#1b81e0">θ</text>
<text x="230" y="222" font-size="11" fill="#9a9a9a" text-anchor="middle">長さは変わらず、直交したまま回ります</text>
</svg>2 次元の回転行列
原点のまわりに反時計回りで 回す写像は線形です。だから行列で書けます。
その行列を求めるには、基本ベクトルの行き先を見れば足ります。 は へ、 は へ移ります。
行列の列は基本ベクトルの行き先なので、この 2 本を並べたものが です。第 2 列の符号は、 を回すと左上へ向かうことから決まります。
直交行列で行列式が 1
列は長さ で互いに直交します。 と、2 列の内積が から確かめられます。
したがって が成り立ち、 は直交行列です。行列式は です。
直交行列の行列式は に限られます。 のほうが回転で、 は向きを裏返す変換にあたります。
逆回転は転置で得られる
です。逆に回せばもとに戻る、という当たり前の事実を式にしたものです。
、 を入れると、 は の転置になります。逆行列を求める計算は要りません。
例:具体的な角で回す
の行列を作ります。
に掛けると に移ります。長さは で、もとと同じです。
なら です。こちらも長さは で、行き先どうしの内積も になります。
積は角の和になる
2 回続けて回せば、角は足されます。行列の積で書けば次のとおりです。
平面の回転どうしは順序を入れ替えられます。 と が同じだからです。
例:積から加法定理が出る
左辺を成分で計算します。 成分は です。
右辺の 成分は なので、余弦の加法定理が出てきます。 成分を比べれば正弦の加法定理です。
具体的な数でも確かめられます。 を計算すると となり、 に一致します。
例:有理数だけでできる回転
角が特別な値でなくても、成分が有理数になることがあります。、、 の直角三角形を使います。
なので、確かに回転行列です。
角そのものは で、きれいな値にはなりません。それでも成分は分数だけで書けます。
3 次元:座標軸まわりの回転
軸を決めれば、3 次元の回転も行列で書けます。 軸まわりなら、 成分はそのままで、 平面の中だけが回ります。
軸まわりと 軸まわりも同じ形です。動かない軸の位置に が入り、残りの 2 次のブロックが平面の回転になります。
軸まわりだけは符号の位置が違って見えます。 から へ回る向きが正なので、 の符号が入れ替わるからです。
<svg viewBox="0 0 460 220" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="230" y="22" font-size="11" fill="#9a9a9a" text-anchor="middle">軸は動かず、それに垂直な平面の中だけが回ります</text>
<ellipse cx="230" cy="140" rx="110" ry="35" fill="#1b81e0" fill-opacity="0.08" stroke="#c8c8c8" stroke-width="1"></ellipse>
<line x1="230" y1="185" x2="230" y2="50" stroke="#1f1f1f" stroke-width="1.5"></line>
<polygon points="230,44 226,54 234,54" fill="#1f1f1f"></polygon>
<text x="240" y="52" font-size="12" fill="#1f1f1f">軸 n</text>
<line x1="230" y1="140" x2="330" y2="128" stroke="#9a9a9a" stroke-width="1"></line>
<polygon points="335,127 326,124 327,132" fill="#9a9a9a"></polygon>
<text x="340" y="124" font-size="11" fill="#9a9a9a">x</text>
<line x1="230" y1="140" x2="300" y2="163" stroke="#1b81e0" stroke-width="1.5"></line>
<polygon points="305,165 296,160 295,168" fill="#1b81e0"></polygon>
<text x="308" y="176" font-size="11" fill="#1b81e0">回した先</text>
<path d="M 300 133 A 75 24 0 0 0 288 156" fill="none" stroke="#1b81e0" stroke-width="1"></path>
<text x="312" y="148" font-size="11" fill="#1b81e0">θ</text>
<circle cx="230" cy="140" r="3" fill="#1f1f1f"></circle>
<text x="230" y="208" font-size="11" fill="#9a9a9a" text-anchor="middle">軸の方向の成分は変わりません</text>
</svg>例:z 軸まわりに 90 度回す
を入れると、、 です。
軸方向の は へ移ります。 軸が 軸へ倒れる向きです。
軸方向の は動きません。第 3 列が のままであることが、そのまま軸の不動を表しています。
任意の軸まわりの回転
単位ベクトル を軸として 回す行列は、次の式で書けます。ロドリゲスの回転公式といいます。
は外積を表す交代行列で、 を満たします。
3 つの項の役割は分かれています。 は軸方向の成分を取り出し、残りが軸に垂直な平面の中での回転を作ります。
例:ロドリゲスの公式で置換行列を作る
軸を 、角を とします。、 です。
は成分がすべて の行列、 は 倍の交代行列になります。公式に入れると、係数がきれいに整理されます。
座標を巡回させる置換行列が出てきました。 軸が 軸へ、 軸が 軸へ、 軸が 軸へ移ります。
軸 のまわりに 回すと 3 本の座標軸が入れ替わる、という図形の事実が、行列の形で確かめられました。
トレースと固有値から軸と角が読める
3 次の回転行列のトレースは、角だけで決まります。
固有値は と です。固有値 に対応する固有ベクトルが回転軸で、その方向だけが動きません。
行列が与えられたとき、トレースから角を、 を解いて軸を求められます。回転の情報が、この 2 つに集約されています。
例:置換行列から軸と角を読む
さきほどの置換行列を、公式を知らないつもりで調べます。
トレースは です。 から 、つまり が出ます。
軸は を解けば求まります。、、 から の定数倍です。
行列を見ただけでは分かりにくい軸と角が、2 つの手順で取り出せました。
3 次元では順序を変えると結果が違う
平面の回転は入れ替えられますが、3 次元では成り立ちません。軸が違えば、掛ける順序で結果が変わります。
例:順序を入れ替えてみる
軸まわりと 軸まわりの 回転を、順序を変えて掛けます。
まるで違う行列です。後者はさきほどの置換行列で、軸は です。前者の軸を求めると の方向になります。
本を持って、机の上で 2 通りの順に回してみると、向きが食い違うことがすぐ分かります。
行列式が -1 なら鏡映が混じる
直交行列の行列式は です。 のほうは、回転だけでは作れません。
たとえば は 平面に関する鏡映です。右手系が左手系に変わるので、どんなに回しても一致しません。
回転行列とは、直交行列のうち行列式が のものを指します。この集まりを と書き、回転群と呼びます。
例:鏡映を 2 回すると回転になる
行列式が どうしを掛ければ、行列式は に戻ります。鏡映を 2 回続けると回転になる、ということです。
軸に関する鏡映と、直線 に関する鏡映を用意します。
どちらも行列式は です。積を作ります。
の回転が出てきました。2 本の鏡の間の角は なので、その 2 倍だけ回ったことになります。
順序を入れ替えると の回転になります。鏡映どうしも、掛ける順序で結果が変わります。
別の表し方
3 つの角で表すオイラー角は、座標軸まわりの回転を 3 回続ける書き方です。使う軸の順序に流儀がいくつもあり、混乱のもとになります。
交代行列を指数関数に入れる書き方もあります。 の像が回転になり、ロドリゲスの公式は を展開したものにあたります。
四元数を使う表し方は、成分が 4 つで済み、合成も掛け算だけで書けます。計算機で姿勢を扱うときは、この形がよく使われます。
他の話題とのつながり
直交行列そのものの性質は、ユニタリ行列と直交行列の記事にあります。交代行列と回転の関係は交代行列の記事で、指数関数の一般論は行列の指数関数の記事で扱っています。
QR 分解で使うギブンス回転は、 次の回転を大きな行列の一部に埋め込んだものです。成分をひとつずつ消すのに使われます。











