はじめに
『秋葉原ロボット部 理論グループ Advent Calendar 2025』の投稿です
線形代数のなかでは特に射影が大好きですが、量子力学を学び始めてから興味の中心はとにかく回転です!
この記事では、量子力学に登場するスピンとも深い関係のある、四元数について直観的な説明と、具体的な使い方にを紹介したいと思います(書き終わってみると、直観的とはいえないなー)
実装編として大好きな四元数をsympyで実装するに続きます
2次元回転
2次元平面上の点$P:(x,y)$を原点を中心に$\theta$回転させると、変換後の点$P':(x',y')$はどのように表せるでしょうか
回転の行列表現
天下り的ですが、$\begin{bmatrix}x \\ y \end{bmatrix}\overset{\theta 回転}{\longmapsto}\begin{bmatrix}x' \\ y' \end{bmatrix}$の変換を回転行列$R$で表現すると以下になります
\begin{bmatrix} x' \\ y' \end{bmatrix} =
R\begin{bmatrix} x \\ y \end{bmatrix} =
\begin{bmatrix} \cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \end{bmatrix}
\begin{bmatrix} x \\ y \end{bmatrix} =
\begin{bmatrix} x \cos \theta - y \sin \theta \\
x \sin \theta + y \cos \theta \end{bmatrix}
ポイントとして行列の大きさである行列式を取ると$1$になります、回転による変換は原点を中心とする合同変換なので$1$となっています
$$
det(R) = \cos^2 \theta+ \sin^2 \theta = 1
$$
なぜ、この行列で表現できるかは、おまけ(回転行列R)で説明しました
回転の複素数表現
点$P:(x,y)$を複素数$z=x+iy$で、回転後の点$P':(x',y')$を$z'=x'+iy'$で表現します
つまり、2次元のベクトルを複素数の実部と虚部で表現したことになります
また、行列の回転の変換を、回転を表現する複素数での演算子$w$を以下のようにとります
w = e^{i\theta} = \underbrace{\cos \theta}_{実部} + \underbrace{i \sin \theta}_{虚部}
$w$と$x$との積から、回転後の$z'$は以下のように計算できます
下線の部分が行列での結果と一致していますね
\begin{aligned}
z' &= wx \\
&= (x + i y)(\cos \theta + i \sin \theta) \\
&= \underline{x \cos \theta - y \sin \theta} + i(\underline{x \sin \theta + y \cos \theta})
\end{aligned}
ここでのポイントは
- 大きさが$1$の複素数、つまり単位円上の複素数の点は、回転を表現します
3次元回転
3次元空間の回転は2次元の場合と同様に、もちろん$(3 \times3)$行列で表現することもできますが、この記事では、四元数での回転に注力します
複素数での回転表現との類似性を強調して説明したいと思います
四元数
まずは、四元数ですが、複素数では虚数単位は{$i$}の1つだけでしたが、四元数では虚数単位が{$i,j,k$}の3つになります
四元数$q$は、実数$q_0$に虚数単位{$i,j,k$}のそれぞれの係数$q_1,q_2,q_3$を合わせた以下のように表現されます、実部+虚部の構造は同じですね
q = \underbrace{q_0}_{実部} + \underbrace{q_1 i + q_2 j + q_3 k}_{虚部}
虚数単位${i,j,k}$のルールは以下です
\begin{aligned}
i^2 = j^2 = k^2 = -1 & \ \ (同じ虚数単位の積は-1)\\
ij = k , jk = i, ki = j & \ \ (循環置換:隣合う虚数単位の積は次の虚数単位)\\
ji = -k, kj = -i, ik = -j & \ \ (半交換性:順序を変えると符号は変わる)
\end{aligned}
3次元回転の四元数表現
3次元空間上の位置
点$P,P'$の位置を、それぞれ四元数$q,q'$として以下のように表現します
- 回転前の点$P:(x,y,z)$を、四元数$P=xi+yj+zk$
- 回転前の点$P'(x',y',z')$を、四元数$P'=x'i+y'j+z'k$
3次元空間中の回転軸
2次元平面では回転軸は原点で、特に軸を考える必要がありませんでしたが、3次元空間ではどのような軌跡を描いて回転するかを指定する必要があります、例えば北極から南極に回転移動するにもどの経路を通って移動するのかという話です、つまり、回転する軸が必要となります
3次元の回転の軸も四元数の虚数部分で表現します
$(x,y,z)$方向の方向ベクトルを$(q_1,q_2,q_3)$として、四元数$q=q_1i+q_2j+q_3k$と表現します
ただし、$q$の大きさは$1$である必要があります、これは2次元回転の複素数の大きさを$1$としたのことと同じ理由です
3次次元空間中の回転の角度
複素数での回転変換演算子$w$は以下でした、実部と虚部に$\cos \theta, \sin \theta $の係数を付けることで回転角度を指定しました
w = \underbrace{\cos \theta}_{実部} + \underbrace{i \sin \theta}_{虚部}
四元数での回転の変換演算子$q$も同様ですが、実部と虚部に$\cos \frac{\theta}{2}, \sin \frac{\theta}{2}$の係数を付けることで回転角度を指定します、$\theta$ではなくて$\frac{\theta}{2}$となっているところにご注意ください
q = \underbrace{\cos \frac{\theta}{2}}_{実部} + \underbrace{ (q_1 i + q_2 j + q_3 k)\sin \frac{\theta}{2}}_{虚部}
3次元空間の回転のまとめ
- 3次元空間の座標$(x,y,z)$は、四元数の虚部$(i,j,k)$の係数で指定する
- $q=xi+yj+zk$
- 回転軸の単位方向ベクトル$(q_1,q_2,q_3)$は、四元数の虚部$(i,j,k)$の係数で指定する
- $q=q_1i+q_2j+q_3k \ $ (ただし、$q_1^2+q_2^2+q_3^2=1$)
- 回転軸での回転角度は、四元数の実部と虚部の$\cos \frac{\theta}{2}, \sin \frac{\theta}{2}$で指定する
3次元空間の回転の計算
回転演算子$q$ですが、その共役四元数$q^{\dagger}$を以下とします
\begin{aligned}
q = \underbrace{\cos \frac{\theta}{2}}_{実部} + \underbrace{ (q_1 i + q_2 j + q_3 k)\sin \frac{\theta}{2}}_{虚部} \\\\
q^{\dagger} = \underbrace{\cos \frac{\theta}{2}}_{実部} - \underbrace{ (q_1 i + q_2 j + q_3 k)\sin \frac{\theta}{2}}_{虚部(\color{red}{マイナス})}
\end{aligned}
座標を表現する四元数$P$に対して、回転演算子である四元数$q,q^{\dagger}$を挟み撃ちにするとで、回転後の座標を表現する四元数$P'$を取得することができます
P' = q P q^{\dagger}
四元数$q,q^{\dagger}$と2回演算しています、$\frac{\theta}{2}$づつ2回に分けてを作用させて全体として$\theta$回転させたともいえるようです
まとめ
3次元回転演算子$q$は、$qq^{\dagger}=q^{\dagger}q=1$で、群論的に$SU(2)$(特殊ユニタリー演算子)です
$SU(2)$と$SO(3)$をちゃんと理解できることが当面の目標です
この投稿をアップデートしながら伝えていけたらと思います
コメントなどいただけると、ありがたいです(お手柔らかに)
参考文献
-『ストラング線形代数イントロダクション』
-『3次元回転: パラメータ計算とリー代数による最適化』
おまけ(回転行列R)
回転行列が、以下のように表せるのは、何でかの話です
\begin{bmatrix} x' \\ y' \end{bmatrix} =
R\begin{bmatrix} x \\ y \end{bmatrix} =
\begin{bmatrix} \cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \end{bmatrix}
\begin{bmatrix} x \\ y \end{bmatrix} =
\begin{bmatrix} x \cos \theta - y \sin \theta \\
x \sin \theta + y \cos \theta \end{bmatrix}
点$P(x,y)$は標準基底 $\mathbf{e_1}=\begin{bmatrix} 1 \\ 0 \end{bmatrix}$、$\mathbf{e_2}=\begin{bmatrix} 0 \\ 1 \end{bmatrix}$として $P=x\mathbf{e_1} + y\mathbf{e_2}$と基底の線形結合で表現できます
そこで、原点を中心に$\theta$回転させて、$x$軸を$x'$軸、$y$軸を$y'$軸とすると、標準基底{$e_1, e_2$}も{$e'_1,e'_2$}に変換されます (下図を参照)
- $e_1 =\begin{bmatrix} 1 \\ 0 \end{bmatrix}\overset{\theta 回転}{\longmapsto} e'_1= \begin{bmatrix} \cos \theta \\ \sin \theta \end{bmatrix}$
- $e_2 = \begin{bmatrix} 0 \\ 1 \end{bmatrix}\overset{\theta 回転}{\longmapsto} e'_2=\begin{bmatrix} -\sin \theta \\ \cos \theta \end{bmatrix}$
変換後の$P'$は
$$
\begin{aligned}
P' &= x e'_1 + y e'_2 = x \begin{bmatrix} \cos \theta \\ \sin \theta \end{bmatrix} + y \begin{bmatrix} -\sin \theta \\ \cos \theta \end{bmatrix} \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \\
\end{aligned}
$$