回転 (数学)

初等幾何学および線型代数学における**回転**（かいてん、）は、平面あるいは空間において固定された一点の周りでの剛体の運動を記述する。回転は、不動点を持たない平行移動とは違うし、剛体を「裏返し」にしてしまう鏡映とも異なる。回転を含めたこれらの変換は等距変換、即ちこれらの変換の前後で二点間の距離を変えない。

回転を考える際には基準系を知ることが重要であり、全ての回転はある特定の基準系に対するものとして記述される。一般に、ある座標系に関する剛体の任意の直交変換に対し、その逆変換が存在して、それを基準系に施すと剛体はもとと同じ座標にいることになる。例えば二次元の座標上の1点を定めて剛体を置いた時、1点を軸として剛体を時計回りに回すことと、剛体を動かさず1点を軸として座標を反時計回りに回すことは等価である。

## 関連概念・用語
回転群は特定の一点の周りの回転全体の成すリー群  を言う。この（共通の）不動点を回転の**中心**と呼び、普通はこれを原点と同一視する。回転群は（向きを保つ）の成すより大きい群の一点固定部分群である。

一つの回転に関して:
* ***' (''axis of rotation'') とは、その回転の不動点全体の成す[[直線]]を言う。これは次元  においてのみ存在する。
* ***' (*plane of rotation*) とは、その回転の群作用の下で安定（不変）な平面（すなわち、回転不変面）を言う。回転軸と異なり、この平面上の各点それ自身はその回転の不動点でない。回転軸が存在するならば、回転軸と回転不変面とは互いに直交する（軸直交回転面）。

## 二次元

二次元における回転を特定するには、**回転角**と呼ばれる角度を一つ決めさえすればよい。回転を記述するために、行列や複素数を利用することができる。何れの場合も、回転は原点を中心に反時計回りに角 θ だけ物体を回すものとして作用する。

### 線型代数
行列を用いて回転を記述するには、回転させられる点 (*x*, *y*) をベクトルとして書いて、角 θ の回転を与えるように計算された行列を掛け合わせることによって
: \begin{bmatrix} x' \\ y' \end{bmatrix} =
 \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}
なる記述を得る。ここで (*x*′, *y*′) は回転後の点の座標であり、この等式を書き下せば、*x*′ および *y*′ に関する式
: \begin{align}
x'&=x\cos\theta-y\sin\theta\\
y'&=x\sin\theta+y\cos\theta
\end{align}
を得ることができる。二つのベクトル
: \begin{bmatrix} x \\ y \end{bmatrix},\quad \begin{bmatrix} x' \\ y' \end{bmatrix} 
は同じ大きさを持ち、予期された通りの角 &theta; を成す。

### 複素数
点を複素数を使って回転させることもできる。複素数全体の成す集合は幾何学的には二次元の平面を成し、複素平面と呼ばれる。平面上の点 (*x*, *y*) は複素数
: z = x + iy
で表現され、これを角 θ だけ回転させるには *e**i*θ を掛ける。その積をオイラーの公式を使って展開すれば

:\begin{align}
e^{i \theta} z &= (\cos \theta + i \sin \theta) (x + i y) \\
               &= (x \cos \theta + i y \cos \theta + i x \sin \theta - y \sin \theta) \\
               &= (x \cos \theta - y \sin \theta) + i (x \sin \theta + y \cos \theta) \\
               &= x' + i y'
\end{align}
となるが、これはすでに前節で得た結果と同じものである。

複素数の積がそうであるように、二次元における回転の任意の合成は可換で、これはより高次の場合にはないものである。二次元の回転の自由度は 1 しかなく、回転はその回転角によって完全に決定されてしまう。

## 三次元

通常の三次元空間における回転は、種々の重要な方法において二次元の場合との違いがある。三次元の回転は一般には可換でないから、回転を施す順番は重要である。三次元での回転の自由度は 3 で、次元の値と同一である。

三次元回転を特定する方法は様々にあり、もっともよく用いられるものをいくつか以下に挙げる。

### 線型代数

二次元の場合と同様、点 (*x*, *y*, *z*) を点 (*x*′, *y*′, *z*′) に写す回転に対しても行列を用いることができる。ここで用いるのは 3&nbsp;×&nbsp;3 行列
: \mathbf{A} = \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i  \end{bmatrix}
であり、これを点を表すベクトルに掛け合わせれば、
: 
 \mathbf{A}
 \begin{bmatrix} x \\ y \\ z \end{bmatrix} =
 \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i  \end{bmatrix}
 \begin{bmatrix} x \\ y \\ z \end{bmatrix} =
 \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} 
を得る。この行列 **A** は三次元特殊直交群 SO(3) の元、つまり行列式 1 の直交行列である。直交行列であるということは、その行ベクトルが互いに直交する単位ベクトルの集合（つまり正規直交基底）となることを意味する（列ベクトルについても同じことが言える）から、このことを使えば、行列が回転行列であるかの検討を付けたり確かめたりすることは容易である。回転行列の行列式の値は 1 でなければならず、ほかに直交行列が取れる行列式の値は -1 だけであって、この場合に得られる直交変換は鏡映、回映または点に関する反転であって回転ではない。

行列は、それが線型写像を直截に表現するものであるのと同様、特に多数の点を同時に変換する際の変換を表すものとしてもよく用いられるものである。様々な方法で表された回転は、それを行列表示に直すこともよく行われる。斉次座標系を用いれば回転も変換も同時に表すように拡張して扱うことができる。斉次座標系を備えたこの空間における変換は 4&nbsp;×&nbsp;4 行列で表され、これ自体は回転行列ではないけれども、その左上の 3 行 3 列は回転行列になっている。

行列を用いることの不利な点は主に、計算量が多くなることと、計算に持ち込むのが面倒であることである。行列に関しては数値的不安定性が増加しやすい傾向があるので、計算には直交性を確保することが要となるが、それも行列にとっては計算量の負担となるので頻繁に行っておく必要がある。

### 移動体の主軸回転

二次元の回転角を一般化する一つの方法として、三つの主軸の周りでの転回を与える三つの回転角を指定する方法がある。それらは個々にロール・ピッチ・ヨー角と一般には呼ばれているが、数学においてはより数学的な名前でオイラー角という。これらの角はジンバルやジョイスティックのような物理的系の数々のモデル化において優れており、容易に視覚化することもできるし、非常に簡潔に回転を記録することができる。しかしこの角の概念は計算には向いておらず、たとえ回転を組み合わせる単純な操作でさえも、計算を実行するのは手が掛かりすぎる。また、ある種の回転に対してはオイラー角が一意に決まらないというジンバルロックといった形でも弱点を持っている。

### オイラー回転

オイラー回転は、三つのオイラー角のうち二つを動かさずに残りの一つだけを変化させて得られる運動としての、三種類の回転からなる集合を言う。オイラー回転を外部の基準系や移動体とともに回転する基準系の言葉で記述することはできず、それらを組み合わせなければならない。そうして**回転の混合軸系** (*mixed axes of rotation* system) が得られ、第一の角は外部軸 *z* の周りで結節点の成す直線を動かし、第二のはその結節点の成す直線の周りでの回転を示し、第三の角は移動体に固定された軸の周りでの内部的な回転（自転）を表す。

これらの三種の回転をそれぞれ、歳差運動 (Precession), 章動運動 (Nutation), 自転 (intrinsic rotation) と呼ぶ。

### 軸角

二次元の回転角を一般化するもう一つの方法として、その周りで回転を行う軸と軸との角度とを特定するやり方がある。これは蝶番と心棒によって制約を受ける運動をモデル化するのに用いることができ、従って視覚化が（恐らくオイラー角よりも）容易である。軸角度表現には
* 二つの角度と軸方向の単位ベクトルの組として表す方法、
* 回転ベクトルと呼ばれる、単位ベクトルに回転角を掛け合わせたもので表す方法
の二種類の表し方がある。普通は角度と軸の対を合わせて扱う方が容易であり、一方の回転ベクトルは、オイラー角同様に三つの数値が与えられればよいから、より簡潔に表せる。しかし、オイラー角同様に、先に述べたような他の表現に直して扱うことの方が普通である。

### 四元数

四元数は、ある意味で三次元の回転を表すのに最も直観の少ない方法である。これらは行列などを用いる一般的なアプローチでは実態として三次元ではないし、オイラー角や軸角のように実世界との関連も容易に見て取ることはできないが、しかしそれらの手法の何れと比べても四元数を用いるほうが記述や扱いが簡潔であり、それ故に実世界における応用に際してもしばしば用いられる。

回転を表す四元数は四つの実数の組であり、それ故ベクトルとしての長さが 1 であるという制約を課して、回転四元数の自由度を期待されるべき 3 に制限する。四元数は複素数の一般化（例えばケイリー・ディクソン構成）として考えることができて、回転も同様に乗法を使って生成することができるが、行列や複素数の場合と異なり、二つの回転四元数を掛けて
: \mathbf{x}' = q\mathbf{x}q^{-1}
とする必要がある。ここで、*q* は回転四元数、*q*−1 はその逆数で、**x** はベクトルとして扱われた四元数である。四元数を軸角回転の形の回転ベクトルに、四元数上の指数函数
: q = e^{\mathbf{v}/2}
を用いて関連付けることができる。ここで **v** は四元数として扱った回転ベクトルである。

## 四次元

四次元における一般の回転は、回転の中心となる一点のみを固定し、回転軸を持たない代わりに互いに直交する二つの回転不変面（回転によって、その平面上の各点が回転の後もその平面内に留まるという意味で、固定される面）を持つ。故に四次元での回転は、各回転面においてその上の点の平面回転として定まる、二つの回転角を持つ。その回転角を ω1 および ω2 とすれば、これら回転面上にない任意の点は ω1 と ω2 の間の角を通じて回転する。

ω1 = ω2 となる場合、回転は二重回転となり、全ての点は同一の回転角を持つ。故に任意の直交二平面を回転面として取ることができる。また、ω1 と ω2 のいずれか一方が零であるときは、一方の回転面は各点が不動となり、回転は単回転になる。ω1 と ω2 がともに零であるような回転は、恒等回転である。

四次元の回転は、回転行列の一般化としての、4-次の直交行列で表される。四元数もまた四次元へ一般化された概念であり、四次元幾何代数に属する多重ベクトルともなる。第三のアプローチとして、これは四次元でしか意味を成さないけれども、を用いる方法がある。

四次元における回転の自由度は 6 であり、このことを見るには二つの単位四元数を用いるのが最も容易である（三次元球面上の点として各単位四元数の自由度は 3, 二つで 2 × 3 = 6 の自由度になる）。

### 相対論
四次元における回転は特殊相対論にも応用があり、空間次元 3 と時間次元 1 で張られる四次元空間としての時空における操作と考えることができる。特殊相対論においてこの空間は線型であり、ローレンツ変換と呼ばれる四次元回転は実際の物理学的な解釈を持つ。

単回転は空間三次元に関してのみ起きる（つまり、回転面が空間の全体に亙る）ならば、回転は三次元における空間回転と同じになる。しかし、空間次元と時間次元の張る平面の周りの単回転は「ブースト」、つまり二つの異なる基準系の間の変換で、基準系間の相対論的関係によって決まる時空の性質を満たすものとなる。このような回転変換全体の成す集合はローレンツ群を成す。

## 一般化
### 直交行列
上で述べた行列全体の成す集合 *M*(**v**,θ) の上に行列の乗法を考えたものは回転群 ''SO''(3) である。

もっと一般に、任意次元における座標回転は直交行列によって表される。*n*-次元直交行列で真の回転を表すもの（行列式 1 のもの）全体の成す集合に、行列の乗法を入れたものは特殊直交群 *SO*(*n*) を成す。

直交行列は実成分で考えるが、その複素行列における対応物としてユニタリ行列がある。与えられた次元 *n* を持つユニタリ行列全体の成す集合は *n*-次ユニタリ群 *U*(*n*) を成し、またその部分群として、真の回転を表すもの全体は *n*-次特殊ユニタリ群 *SU*(*n*) を成す。*SU*(2) の元は量子力学においてスピンの回転に用いられる。

## 関連項目
* 
* スピノル
* SO(3)上のチャート
* オイラー角
* 渦流体
* 
* ロドリゲスの回転公式
* 回転行列
* 向き
* 無理回転

## 注

## 参考文献
* 
* 
* 

## 外部リンク
* Rotation about any point