2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SO(3)の基本的な計算

2
Last updated at Posted at 2025-12-05

$\mathrm{SO}(3)$は3次元の回転行列からなるリー群であり、リーマン多様体でもある。$\mathrm{SO}(3)$関連の標準的な概念の定義とその具体的な計算方法を備忘録的に記事に残す。

定義

\mathrm{SO}(3) = \{R | R \in \mathbb{R}^{3 \times 3}, \det R=1, R^T R=I_3\}

$\mathrm{SO}(3)$は実直交行列かつ行列式が$1$の行列の集合である。実直交行列の行列式は$\pm1$なので、実直交行列全体の内で行列式が$-1$のものが除かれた集合ということになる。
$\mathrm{SO}(3)$を行列積を演算とする群して捉えると、その単位元は$I_3$である。$R \in \mathrm{SO}(3)$の逆元は$R^{-1}=R^T$。
$\mathrm{SO}(3)$は行列の和に関して閉じておらず線型空間ではない。行列積に関して群をなし、行列積の演算に関して可微分な多様体であるが、行列積は可換でない。

3次元空間における回転

$\mathrm{SO}(3)$は3次元の回転行列全体の集合である。$R \in \mathrm{SO}(3)$とすると、行列$R$を左からの行列積の作用で$\mathbb{R}^3$のベクトルは原点を通る特定の軸を中心に回転する。軸のベクトル$\boldsymbol{u}$と回転角$\theta$を行列$R$の成分から具体的に計算する。回転の符号はベクトル$\boldsymbol{u}$の方向に対して右ネジの方向の回転を正とする。$\theta$の範囲は$[0, \pi]$とする。$\theta > \pi$の角の回転については回転軸が
$-v$で回転角が$2 \pi - \theta < \pi$の回転として考える。

\begin{eqnarray}
\cos \theta &=& \frac{\mathrm{tr}(R) - 1}{2} \\
\boldsymbol{u} &=& \frac{1}{2 \sin \theta} \begin{bmatrix} R_{32} - R_{23} \\ R_{13} - R_{31} \\ R_{21} - R_{12} \end{bmatrix}
\end{eqnarray}

となる。(これで$v$は単位行列になるように規格化されている。)
ただし、この式で$v$が計算できるのは$0 < \theta < \pi$の場合である。
$\theta = 0$の場合は$R=I$であり、回転軸は存在しない。
$\theta = \pi$、つまり$\mathrm{tr}(R) = -1$のケースは特殊で、回転軸$\boldsymbol{u}$を上の式では計算できない。この場合は、回転軸のベクトルが$-\boldsymbol{u}$で$\theta = \pi$の回転と全く同じ回転を表している状況である。このケースの回転軸のベクトルは、固有値$1$に対応する固有ベクトルとして求める。つまり

(R - I)\boldsymbol{v} = \boldsymbol{0}

を満たす$\|\boldsymbol{v}\|=1$のベクトルとして定めればよい。$R \in \mathrm{SO}(3)$は必ず固有値$1$を持ち、$R \neq I$であれば、固有値$1$の固有空間の次元は1である。$\|\boldsymbol{u}\|=1$の条件を満たすのは$\boldsymbol{u}, -\boldsymbol{u}$の2つあるが、どちらでも$\theta = \pi$の回転は等しい回転を表す。

逆に、$\mathbb{R}^3$の単位ベクトル$\boldsymbol{u}$を回転軸に回転角$\theta$だけ回転させる行列$R$は、

\boldsymbol{u}^{\land} = \begin{bmatrix} 0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0 \end{bmatrix}

とすると、

R = I_3 + \sin \theta \boldsymbol{u}^{\land} + (1 - \cos \theta) (\boldsymbol{u}^{\land})^2

と表される。

接空間

$I_3 \in \mathrm{SO}(3)$における$\mathrm{SO}(3)$の接空間$T_{I_3} \mathrm{SO}(3)$は、

T_{I_3} \mathrm{SO}(3) = \left\{ \begin{bmatrix} 0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0 \end{bmatrix} \middle| \begin{bmatrix} u_x \\ u_y \\ u_z \end{bmatrix} \in \mathbb{R}^3\right\}

と表される歪対称行列全体の集合である。なお、歪対称行列とは$R^T = -R$となる行列のことを指す。
これは3次元の線形空間であり、$\mathbb{R}^3$と同一視して考えることもできる。$T_{I_3} \mathrm{SO}(3)$は$\mathfrak{so}(3)$と表されることもある。
ちなみに、上記の$\mathbb{R}^3$のベクトルを歪対称行列に対応させる記法は、

\boldsymbol{u} = \begin{bmatrix} u_x \\ u_y \\ u_z \end{bmatrix}, \boldsymbol{v} = \begin{bmatrix} v_x \\ v_y \\ v_z \end{bmatrix}

とし、$\boldsymbol{u}$に対応する歪対称行列を$\boldsymbol{u}^{\land}$と書いて、

\boldsymbol{u}^{\land} = \begin{bmatrix} 0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0 \end{bmatrix}

とした際に、歪対称行列$\boldsymbol{u}^{\land}$とベクトル$\boldsymbol{v}$の行列積が、

(\boldsymbol{u}^{\land}) \boldsymbol{v} = \begin{bmatrix} 0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0 \end{bmatrix} \begin{bmatrix} v_x \\ v_y \\ v_z \end{bmatrix} = \begin{bmatrix} u_y v_z - u_z v_y \\ u_z v_x - u_x v_z \\ u_x v_y - u_y v_x \end{bmatrix} = \boldsymbol{u} \times \boldsymbol{v}

のように$\boldsymbol{u}, \boldsymbol{v}$の外積になる性質があるように決められている。
単位ベクトル$\boldsymbol{u} \in \mathbb{R}^3$と微小な正の数$\varepsilon$から微小なベクトル$\varepsilon \boldsymbol{u}$を想定し、$\varepsilon \boldsymbol{u}^{\land} \in \mathfrak{so}(3)$を考えると、行列$(I_3 + \varepsilon \boldsymbol{u}^{\land})$は近似的にほぼ回転行列になる。その作用は上記の性質から、

(I_3 + \varepsilon \boldsymbol{u}^{\land}) \boldsymbol{v} = \boldsymbol{v} + \varepsilon (\boldsymbol{u} \times \boldsymbol{v})

となる。これは$\boldsymbol{u}$, $\boldsymbol{v}$の両方が含まれる面に対して垂直な方向へ$\varepsilon (\boldsymbol{u} \times \boldsymbol{v})$分だけ$\boldsymbol{v}$をわずかに動かす作用であり、$\boldsymbol{u}$を回転軸とする微小な回転と捉えられる。

$R \in \mathrm{SO}(3)$における接空間$T_{R} \mathrm{SO}(3)$は、

T_{R} \mathrm{SO}(3) = \{R A | A \in \mathfrak{so}(3)\}

となる。$I_3$の接空間$\mathfrak{so}(3)$を$R$を作用させて回転させたような空間である。そのため、$T_{R} \mathrm{SO}(3)$は$R\mathfrak{so}(3)$と書くこともできる。

$\mathfrak{so}(3)$における内積は通常、歪対称行列のフロべニウス内積の$1/2$を使って定義される。$A, B \in \mathfrak{so}(3)$について、

\langle A, B\rangle_{\mathrm{SO}(3)} = \frac{1}{2} \langle A, B\rangle_{F} = \frac{\mathrm{tr}(A^T B)}{2} = a_x b_x + a_y b_y + a_z b_z

である。ただし、$a_x, a_y, a_z, b_x, b_y, b_z$は$A, B$について、$T_{I_3} \mathrm{SO}(3)$の定義式の$u_x, u_y, u_z$に相当する位置の要素に対応する値とする。これは$\mathfrak{so}(3)$を$\mathbb{R}^3$とみなした際の$\mathbb{R}^3$における標準的な内積と同じである。

指数写像、対数写像、測地線

$I_3$における$\mathrm{SO}(3)$の指数写像は

\exp (A) = \sum_{k=0}^{\infty} \frac{1}{k!} A^k, \, A \in \mathfrak{so}(3)

と定義される。これはただの一般的な行列の指数関数でもある。
歪対称行列の性質から、

\boldsymbol{u} = \begin{bmatrix} u_x \\ u_y \\ u_z \end{bmatrix}, A = \boldsymbol{u}^{\land} = \begin{bmatrix} 0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0 \end{bmatrix}

と表されるとすると、

A^2 = \boldsymbol{u} \boldsymbol{u}^T - \|\boldsymbol{u}\|^2 I_3, \, A^3=-\|\boldsymbol{u}\|^2A

である。これを用いると、

\begin{eqnarray}
\exp (A) &=& I_3 + \frac{1}{\|\boldsymbol{u}\|} \left( \sum_{k=0}^{\infty} \frac{(-1)^{k}}{(2k+1)!} \|\boldsymbol{u}\|^{2k+1}\right) A + \frac{1}{\|\boldsymbol{u}\|^2}\left(1 - \sum_{k=0}^{\infty} \frac{(-1)^{k}}{(2k)!} \|\boldsymbol{u}\|^{2k}\right) A^2 \\
&=& I_3 + \frac{\sin \|\boldsymbol{u}\|}{\|\boldsymbol{u}\|} A + \frac{1 - \cos \|\boldsymbol{u}\|}{\|\boldsymbol{u}\|^2} A^2
\end{eqnarray}

となる。
ここで、

\boldsymbol{v} = \frac{1}{\|\boldsymbol{u}\|} \boldsymbol{u},\, \theta = \|\boldsymbol{u}\|

とすれば、$\boldsymbol{v}$は$\mathbb{R}^3$の単位行列であり、$A = \boldsymbol{u}^{\land} = \theta \boldsymbol{v}^{\land}$であるから、

\exp(A) = I_3 + \sin \theta \boldsymbol{v}^{\land} + (1 - \cos \theta) (\boldsymbol{v}^{\land})^2

となる。つまり、$\exp(A)$は$\boldsymbol{v}$を回転軸に$\theta = \| \boldsymbol{u} \|$を回転角とする回転行列であり、$\exp(A) \in \mathrm{SO}(3)$である。
$\theta = \| \boldsymbol{u} \|$は$\boldsymbol{u} \in \mathbb{R}^3$についてのユークリッド空間の通常のL2ノルムであるが、$A \in \mathfrak{so}(3)$についてのフロべニウス内積の半分で定義される$\mathrm{SO}(3)$の内積に基づいたノルム

\theta = \|A\|_{\mathrm{SO}(3)} = \frac{1}{2} \|A\|_{F}

でもある。

指数写像$\exp(\cdot)$は$\mathfrak{so}(3) \rightarrow \mathrm{SO}(3)$の写像である。$\mathfrak{so}(3)$は$I_3$における$\mathrm{SO}(3)$の接空間だった。これと同様に、任意の$R \in \mathrm{SO}(3)$における接空間$T_{R} \mathrm{SO}(3)$から$\mathrm{SO}(3)$に対応させる$R$における指数写像$\exp_{R}(\cdot)$も定義できる。これはごく単純で

\exp_{R}(A) = R\exp(R^TA), \, A \in T_{R} \mathrm{SO}(3)

と定義される。$A \in T_{R} \mathrm{SO}(3)$に$R^T=R^{-1}$を左から作用させることで$T_{I_3} \mathrm{SO}(3) = \mathfrak{so}(3)$に移動し、$\mathfrak{so}(3)$で定義された指数写像を計算して、$R$をかけて戻している。

指数写像の逆写像が対数写像である。$I_3$における対数写像は$R \in \mathrm{SO}(3)$を$\exp(A) = R$を満たす$A \in \mathfrak{so}(3)$に対応させる。行列の対数写像は一般に一意には定まらないが、$\mathrm{SO}(3)$の対数写像が対応させる歪対称行列の集合$\mathfrak{so}(3)$の範囲をノルムが$[0, \pi]$の範囲とすることで基本的に一意に定まる。ただし、$R$が回転角$\pi$の回転を表す場合のみ、回転軸のベクトルについて正負どちらの方向でも同じ回転になるため、自明には一意に定められない。
$R$による回転の回転軸のベクトルと回転角は$R$から計算可能で、回転角がノルムとなる回転軸のベクトルの方向を向くベクトルからなる歪対称行列が$\log (R)$となるから、$R$の回転角$\theta$が$\theta \neq 0, \pi$であれば、

\log (R) = \frac{\theta}{2 \sin \theta}(R - R^T), \, \cos \theta = \frac{\mathrm{tr}(R)-1}{2}

である。回転角が$0$、つまり$R=I_3$の場合は、$\log(I_3)=\boldsymbol{0}$である。回転角が$\pi$の場合は、固有値$1$の固有ベクトル、つまり$(R - I_3)\boldsymbol{v} = \boldsymbol{0}$を満たすベクトルでノルムが$\|\boldsymbol{v}\| = \pi$となる正負どちらかを対応させる。

指数写像と同様に$R \in \mathrm{SO}(3)$における対数写像も定義できる。これは$R \in \mathrm{SO}(3)$における指数写像の逆写像である。これもごく単純に

\log_{R} (R') = R \log(R^T R')

と定義される。$\log(R^T R') \in \mathfrak{so}(3)$であるため、$\log_{R} (R') \in T_{R} \mathrm{SO}(3)$である。

この指数写像と対数写像を使って、$\mathrm{SO}(3)$上の2点$R_0, R_1 \in \mathrm{SO}(3)$の間を繋ぐ連続的な$\mathrm{SO}(3)$上の曲線を考えることができる。パラメータ$t \in [0, 1]$によって、

\begin{eqnarray}
R(t) &=& \exp_{R_0}(t\log_{R_0}(R_1)) \\
&=& R_0 \exp(t \log (R_0^T R_1))
\end{eqnarray}

と定義される$R(t)$は任意の$t$で$R(t) \in \mathrm{SO}(3)$である。また$R(0) = R_0, R(1)=R_1$を満たす。この曲線を微分すると、

\begin{eqnarray}
\frac{d}{dt} R(t) &=& R_0 \exp(t \log (R_0^T R_1))\log (R_0^T R_1) \\
&=& R(t) \log (R_0^T R_1) \in T_{R(T)} \mathrm{SO}(3)
\end{eqnarray}

となる。これは$\log (R_0^T R_1) \in \mathfrak{so}(3)$の方向へ$R_0$から$R_1$まで真っ直ぐに$t$について等速で向かっていくような曲線である。この曲線はフロべニウス内積の半分で定義される$\mathrm{SO}(3)$の内積についての測地線(最短経路)になる。

測度

$R \in \mathrm{SO}(3)$として、回転行列$R$が回転軸$\boldsymbol{u}$、回転角$\theta$の回転を表すとする。ただし$\|\boldsymbol{u}\| = 1, 0 < \theta < \pi$とする。このとき、

\log(R) = \theta \boldsymbol{u}^{\land}, \, \exp(\theta \boldsymbol{u}^{\land}) = R

である。$\boldsymbol{u}, \theta$を微小に動かすことによる$\mathrm{SO}(3)$における$R$の近傍の体積要素について考えていく。
まず、$\boldsymbol{\omega} = \theta \boldsymbol{u} \in \mathbb{R}^3, \boldsymbol{\omega}^{\land} \in \mathfrak{so}(3)$とすると、$\boldsymbol{\omega}$と$\boldsymbol{u}, \theta$の変数変換について、

d^3 \boldsymbol{\omega} = \theta^2 d\theta d^2 \boldsymbol{u}

が成り立つ。これは一般的な$\mathbb{R}^3$の球面極座標の変数変換。
次に、$\boldsymbol{\omega}$を微小に動かした際の$R = \exp(\boldsymbol{\omega}^{\land}) \in \mathrm{SO}(3)$の変化が$R$における接空間$T_{R} \mathrm{SO}(3)$上でどうなるかを考える。任意に$\boldsymbol{\omega} \in \mathbb{R}^3$をとって、

\left. \frac{d}{dt}\right|_{t=0} \exp((\boldsymbol{\omega} + t\boldsymbol{\psi})^{\land})

を考える。$\boldsymbol{\omega}^{\land}$と$\boldsymbol{\psi}^{\land}$は一般に可換でないので、

\exp((\boldsymbol{\omega} + t\boldsymbol{\psi})^{\land}) = \exp(\boldsymbol{\omega}^{\land}) \exp(t\boldsymbol{\psi}^{\land})

ではないため、この微分の計算は複雑である。導出は省略するが、

\left. \frac{d}{dt}\right|_{t=0} \exp((\boldsymbol{\omega} + t\boldsymbol{\psi})^{\land}) = \exp(\boldsymbol{\omega}^{\land}) \left(\left(I_3+ \frac{1 - \cos \theta}{\theta^2} \boldsymbol{\omega}^{\land} + \frac{\theta - \sin \theta}{\theta^3} (\boldsymbol{\omega}^{\land})^2 \right)\boldsymbol{\psi}\right)^{\land}

になる。

\left(\left(I_3+ \frac{1 - \cos \theta}{\theta^2} \boldsymbol{\omega}^{\land} + \frac{\theta - \sin \theta}{\theta^3} (\boldsymbol{\omega}^{\land})^2\right)\boldsymbol{\psi}\right)^{\land} \in \mathfrak{so}(3)

であり、$R = \exp(\boldsymbol{\omega}^{\land})$だったので、

\left. \frac{d}{dt}\right|_{t=0} \exp((\boldsymbol{\omega} + t\boldsymbol{\psi})^{\land}) \in T_{R} \mathrm{SO}(3)

である。

I_3+ \frac{1 - \cos \theta}{\theta^2} \boldsymbol{\omega}^{\land} + \frac{\theta - \sin \theta}{\theta^3} (\boldsymbol{\omega}^{\land})^2

は、$\exp \boldsymbol{\omega}^{\land}$におけるヤコビアンであり、$\mathfrak{so}(3)=T_{I_3}\mathrm{SO}(3)$における$\omega$の微小変化が、$R=\exp \boldsymbol{\omega}^{\land}$の接空間$T_{R} \mathrm{SO}(3)$でどのように振る舞うかを表している。$T_{R} \mathrm{SO}(3)$は$\mathfrak{so}(3)$の歪対称行列に左から回転行列$R$をかけた行列の集合だったので、$T_{R} \mathrm{SO}(3)$の行列には対応する$\mathfrak{so}(3)$の歪対称行列があり、その歪対称行列に対応する$\mathbb{R}^3$のベクトルがある。この$R$における接空間$T_{R} \mathrm{SO}(3)$は$\mathfrak{so}(3)$に対応する$\mathbb{R}^3$の体積要素を$R \in \mathrm{SO}(3)$の近傍の体積要素とする。

d \boldsymbol{\xi} = \left(I_3+ \frac{1 - \cos \theta}{\theta^2} \boldsymbol{\omega}^{\land} + \frac{\theta - \sin \theta}{\theta^3} (\boldsymbol{\omega}^{\land})^2\right) d \boldsymbol{\omega}

とすると、$R d \boldsymbol{\xi}^{\land}$が$d \boldsymbol{\omega}$だけ$\boldsymbol{\omega}$から微小に動かした際の$R$の微小変化を$T_{R} \mathrm{SO}(3)$上に対応させた微小変化となる。これも導出を省略するが、ヤコビアンの行列式は

\det \left(I_3+ \frac{1 - \cos \theta}{\theta^2} \boldsymbol{\omega}^{\land} + \frac{\theta - \sin \theta}{\theta^3} (\boldsymbol{\omega}^{\land})^2\right) = \frac{4 \sin^2 \frac{\theta}{2}}{\theta^2}

であるため、$R$近傍の$R$における接空間での体積要素$d^3 \boldsymbol{\xi}$は、

d^3 \boldsymbol{\xi} = \frac{4 \sin^2 \frac{\theta}{2}}{\theta^2} d^3 \boldsymbol{\omega}

となる。この各点の接空間の体積要素で定義された$d^3 \boldsymbol{\xi}$によって構成される測度は$\mathrm{SO}(3)$の自然な測度として採用される。(Lie群のHaar測度になる)
したがって、$\mathrm{SO}(3)$のHaar測度を構成する体積要素は、$\mathrm{SO}(3)$の回転行列を回転軸と回転角で表現する場合に、

d^3 \boldsymbol{\xi} = 4 \sin^2 \frac{\theta}{2} d\theta d^2 \boldsymbol{u}

となる。

SO(3)上の一様分布

$\mathrm{SO}(3)$上の一様分布というのは、任意の可測集合$A \subset \mathrm{SO}(3)$について、確率$P(A)$がその測度$\mu_{\mathrm{SO}(3)}(A)$に比例するような分布である。
$\mathrm{SO}(3)$の測度は前述したHaar測度として、

d \mu_{\mathrm{SO}(3)} = d^3 \boldsymbol{\xi} = 4\sin^2 \frac{\theta}{2} d\theta d^2 \boldsymbol{u}

とする。これを$\mathrm{SO}(3)$全体で積分して、

\begin{eqnarray}
\int_{\theta \in [0, \pi)} \int_{\boldsymbol{u} \in S^2} 4\sin^2 \frac{\theta}{2} d\theta d^2 \boldsymbol{u} &=& 16 \pi\int_{\theta \in [0, \pi)} \sin^2 \frac{\theta}{2} d\theta \\
&=& 16 \pi\int_{\theta \in [0, \pi)}  \frac{1 - \cos \theta}{2} d\theta \\
&=& 8 \pi^2
\end{eqnarray}

となるから、$\mathrm{SO}(3)$上の一様分布の確率測度を$P^U_{\mathrm{SO}(3)}$とすると、

d P^U_{\mathrm{SO}(3)} = \frac{1}{8 \pi^2} d \mu_{\mathrm{SO}(3)} = \frac{\sin^2 \frac{\theta}{2}}{2 \pi^2} d\theta d^2 \boldsymbol{u}

となる。つまり、$\mathrm{SO}(3)$上の一様分布の回転軸の方向と回転角の大きさについての確率密度関数は

\frac{\sin^2 \frac{\theta}{2}}{2 \pi^2}

となる。$\mathrm{SO}(3)$を回転軸の方向と回転角の大きさで表現する場合、$\mathrm{SO}(3)$上の一様分布は回転軸の方向には依存せず、回転角は大きいほど確率が大きくなる分布ということになる。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?