高校化学2933198 views
小学理科721729 views
世界の国567435 views
Computer370048 views
中学理科1633649 views
英語617403 views
雑学1474218 views
数学講師2913151 views
MathPython501700 views
りんご220229 views
Help
Tools

English

回転行列|加法定理からロドリゲスの公式、軸と角の読み方まで

平面のベクトルを原点のまわりに だけ回す操作は、次の行列を掛けることで書けます。

長さも角度も変えないので、直交行列になります。しかも行列式は で、向きを裏返しません。

3 次元では回転軸が加わり、話が少し複雑になります。順序を変えると結果が違う、という現象もここから出てきます。

HTML
CSS
JavaScript
<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 次のブロックが平面の回転になります。

軸まわりだけは符号の位置が違って見えます。 から へ回る向きが正なので、 の符号が入れ替わるからです。

HTML
CSS
JavaScript
<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 分解で使うギブンス回転は、 次の回転を大きな行列の一部に埋め込んだものです。成分をひとつずつ消すのに使われます。

よくある誤り

直交行列がすべて回転を表すわけではありません。行列式が なら鏡映が混じっています
3 次元の回転は順序を入れ替えられません。 と は別の回転です
軸まわりだけ符号が違って見えるのは書き間違いではありません。軸の向きと回る向きの約束から出てきます
行列を掛ける順序と、回す順序は逆に並びます。先に施す回転が右側に来ます
トレースから求まるのは角の大きさで、向きまでは決まりません。軸の符号と合わせて考える必要があります
2 次元の回転行列に固有ベクトルはありません。実数の範囲では、どの向きも自分自身へは戻らないからです
回転行列の積は回転行列ですが、和は回転行列になりません。 は直交行列ですらありません
オイラー角には特異点があります。ある姿勢で自由度がひとつ失われ、角が一意に決まらなくなります

参考文献

Rotation matrix - Wikipedia
Drehmatrix - Wikipedia(ドイツ語)
Matrice de rotation - Wikipédia(フランス語)
旋转矩阵 - 维基百科(中国語)
平面のベクトルを原点のまわりに回す操作は、行列の掛け算で書けます。列が基本ベクトルの行き先になること、直交行列で行列式が 1 であること、積が角の和になり加法定理が出ること、3 次元での軸まわりの回転とロドリゲスの公式、トレースと固有ベクトルから軸と角を読む方法を、計算例をつけて解説します。