極座標の考え方で任意の軸周りの回転行列を生成して、その構造を調べます。
目次
概要
任意の軸回りの回転は、回転軸を $z$ 軸方向に変換することで、$x-y$ 平面上の回転として表現できます。
その方法でロドリゲスの回転公式を導出して、行列指数関数によって構造を調べます。
なるべく具体的な計算で確認することを意図しています。
回転行列
3 次元で座標軸 $x,y,z$ 周りの回転を行列で表します。
\begin{aligned}
R_x(θ):=&\begin{pmatrix}
1 & 0 & 0 \\
0 & \cosθ & -\sinθ \\
0 & \sinθ & \;\;\;\cosθ
\end{pmatrix} \\
R_y(θ):=&\begin{pmatrix}
\;\;\;\cosθ & 0 & \sinθ \\
0 & 1 & 0 \\
-\sinθ & 0 & \cosθ
\end{pmatrix} \\
R_z(θ):=&\begin{pmatrix}
\cosθ & -\sinθ & 0 \\
\sinθ & \;\;\;\cosθ & 0 \\
0 & 0 & 1
\end{pmatrix}
\end{aligned}
回転軸
単位ベクトルで表される回転軸 $\vec{n}$ を極座標表示します。$z$ 軸方向の単位ベクトル $\hat{z}$ を $y$ 軸回りに $θ _ n$(天頂角)回転させてから、$z$ 軸回りに $ϕ _ n$(方位角)回転させます。
\begin{aligned}
\vec{n}
&=R_z(ϕ_n)R_y(θ_n)\hat{z} \\
&=\begin{pmatrix}
\cosϕ_n & -\sinϕ_n & 0 \\
\sinϕ_n & \;\;\;\cosϕ_n & 0 \\
0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
\;\;\;\cosθ_n & 0 & \sinθ_n \\
0 & 1 & 0 \\
-\sinθ_n & 0 & \cosθ_n
\end{pmatrix}
\begin{pmatrix}
0 \\ 0 \\ 1
\end{pmatrix} \\
&=\begin{pmatrix}
\cosϕ_n & -\sinϕ_n & 0 \\
\sinϕ_n & \;\;\;\cosϕ_n & 0 \\
0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
\sinθ_n \\ 0 \\ \cosθ_n
\end{pmatrix} \\
&=\begin{pmatrix}
\sinθ_n\cosϕ_n \\ \sinθ_n\sinϕ_n \\ \cosθ_n
\end{pmatrix}
=:\begin{pmatrix}
n_x \\ n_y \\ n_z
\end{pmatrix}
\end{aligned}
$\vec{n}$ は逆方向に回転させることで $\hat{z}$ に戻すことができます。
R_y(-θ_n)R_z(-ϕ_n)\vec{n}=\hat{z}
ロドリゲスの回転公式
回転軸 $\vec{n}$ 回りの $θ$ 回転を $R _ n(θ)$ とします。$\vec{n}$ を $z$ 軸方向に向ければ、$θ$ 回転は $z$ 軸回りとなりますが、回転後に軸を元に戻す必要があります。
R_n(θ)=\underbrace{R_z(ϕ_n)R_y(θ_n)}_{\text{元に戻す}}R_z(θ)\underbrace{R_y(-θ_n)R_z(-ϕ_n)}_{z\text{ 軸に向ける}}
これを計算すればロドリゲスの回転公式が得られます。長くなるため $\mathrm{s}=\sinθ,\mathrm{c}=\cosθ$ と略記します。
\begin{aligned}
R_n(θ)
=&\begin{pmatrix}
n_z\cosϕ_n & -\sinϕ_n & n_x \\
n_z\sinϕ_n & \;\;\;\cosϕ_n & n_y \\
-\sinθ_n & 0 & n_z
\end{pmatrix}
\begin{pmatrix}
\mathrm{c} & -\mathrm{s} & 0 \\
\mathrm{s} & \;\;\;\mathrm{c} & 0 \\
0 & \;\;\;0 & 1
\end{pmatrix}
\begin{pmatrix}
n_z\cosϕ_n & n_z\sinϕ_n & -\sinθ_n \\
-\sinϕ_n & \;\;\;\cosϕ_n & 0 \\
n_x & n_y & n_z
\end{pmatrix} \\
=&\begin{pmatrix}
\mathrm{c}+{n_x}^2(1-\mathrm{c}) & -n_z\mathrm{s}+n_xn_y(1-\mathrm{c}) & \;\;\;n_y\mathrm{s}+n_zn_x(1-\mathrm{c}) \\
\;\;\;n_z\mathrm{s}+n_xn_y(1-\mathrm{c}) & \mathrm{c}+{n_y}^2(1-\mathrm{c}) & -n_x\mathrm{s}+n_yn_z(1-\mathrm{c}) \\
-n_y\mathrm{s}+n_zn_x(1-\mathrm{c}) & \;\;\;n_x\mathrm{s}+n_yn_z(1-\mathrm{c}) & \mathrm{c}+{n_z}^2(1-\mathrm{c})
\end{pmatrix} \\
=&\mathrm{c}I
+\mathrm{s}
\begin{pmatrix}
0 & -n_z & \;\;\;n_y \\
\;\;\;n_z & 0 & -n_x \\
-n_y & \;\;\;n_x & 0
\end{pmatrix}
+(1-\mathrm{c})
\begin{pmatrix}n_x\\n_y\\n_z\end{pmatrix}
\begin{pmatrix}n_x&n_y&n_z\end{pmatrix}
\end{aligned}
考え方は単純ですが、計算は大変で、見通しが良くありません。
回転行列の構造
回転行列の構造を調べます。
$x$ 軸回りの回転行列を、対角成分とそれ以外の和に分解して、計算を進めます。
\begin{aligned}
R_x(θ)
&=\begin{pmatrix}
1 & 0 & 0 \\
0 & \cosθ & -\sinθ \\
0 & \sinθ & \;\;\;\cosθ
\end{pmatrix} \\
&=\begin{pmatrix}
1 & 0 & 0 \\
0 & \cosθ & 0 \\
0 & 0 & \cosθ
\end{pmatrix}
+\begin{pmatrix}
0 & 0 & 0 \\
0 & 0 & -\sinθ \\
0 & \sinθ & 0
\end{pmatrix} \\
&=\begin{pmatrix}
1 & 0 & 0 \\
0 & 0 & 0 \\
0 & 0 & 0
\end{pmatrix}
+\cosθ
\begin{pmatrix}
0 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{pmatrix}
+\sinθ\underbrace{
\begin{pmatrix}
0 & 0 & 0 \\
0 & 0 & -1 \\
0 & 1 & 0
\end{pmatrix}
}_{=:N_x} \\
&=(I+{N_x}^2)+\cosθ(-{N_x}^2)+(\sinθ)N_x \\
&=I+(\sinθ)N_x+(1-\cosθ){N_x}^2 \\
&=\exp(θN_x)
\end{aligned}
※ 最後の $\exp$ への式変形については、以下の記事を参照してください。
同様に他の座標軸周りの回転行列も計算すれば、同じ構造を持つことが分かります。
\begin{alignedat}{6}
&N_x&&=\begin{pmatrix}0&0&0 \\ 0&0&-1 \\ 0&1&0\end{pmatrix},&\;
&N_y&&=\begin{pmatrix}0&0&1 \\ 0&0&0 \\ -1&0&0\end{pmatrix},&\;
&N_z&&=\begin{pmatrix}0&-1&0 \\ 1&0&0 \\ 0&0&0\end{pmatrix} \\
&{N_x}^2&&=-\begin{pmatrix}0&0&0 \\ 0&1&0 \\ 0&0&1\end{pmatrix},&
&{N_y}^2&&=-\begin{pmatrix}1&0&0 \\ 0&0&0 \\ 0&0&1\end{pmatrix},&
&{N_z}^2&&=-\begin{pmatrix}1&0&0 \\ 0&1&0 \\ 0&0&0\end{pmatrix}
\end{alignedat}
\begin{alignedat}{3}
R_x(θ)&=I+(\sinθ)N_x&&+(1-\cosθ){N_x}^2&&=\exp(θN_x) \\
R_y(θ)&=I+(\sinθ)N_y&&+(1-\cosθ){N_y}^2&&=\exp(θN_y) \\
R_z(θ)&=I+(\sinθ)N_z&&+(1-\cosθ){N_z}^2&&=\exp(θN_z) \\
\end{alignedat}
$R _ n(θ)$ のうち、$R _ z$ を $R _ y$ で両側から挟む部分を計算すると、この構造が保たれることが分かります。計算は長くなるため、結果だけを示します。
R_y(θ_n)R_z(θ)R_y(-θ_n)
=\exp\{(\sinθ_n)N_x+(\cosθ_n)N_z\}
※ 計算はこのツイートを参照してください。
$\exp$ の肩は、$\hat{z}$ を $R _ y$ で回転させた成分に対応します。
\begin{aligned}
R_y(θ_n)\hat{z}
=&\begin{pmatrix}
\;\;\;\cosθ_n & 0 & \sinθ_n \\
0 & 1 & 0 \\
-\sinθ_n & 0 & \cosθ_n
\end{pmatrix}
\begin{pmatrix}0 \\ 0 \\ 1\end{pmatrix} \\
=&\begin{pmatrix}\sinθ_n \\ 0 \\ \cosθ_n\end{pmatrix} \\
=&(\sinθ_n)\hat{x}+(\cosθ_n)\hat{z} \\
↦&(\sinθ_n)N_x+(\cosθ_n)N_z
\end{aligned}
※ $\hat{x},\hat{y},\hat{z}$ と $N _ x,N _ y,N _ z$ は区別します。なお、四元数ではどちらも $i,j,k$ で表現します。詳細は以下の記事を参照してください。
つまり回転行列を $R _ y$ で両側から挟む作用は、回転軸に $R _ y$ を作用させることに対応します。
この延長線上で $R _ n(θ)$ の構造も理解できます。
\begin{aligned}
\vec{n}
&=R_z(ϕ_n)R_y(θ_n)\hat{z} \\
&=n_x\hat{x}+n_y\hat{y}+n_z\hat{z} \\
N
&=n_xN_x + n_yN_y + n_zN_z \\
R_n(θ)
&=R_z(ϕ_n)R_y(θ_n)R_z(θ)R_y(-θ_n)R_z(-ϕ_n) \\
&=I+(\sinθ)N+(1-\cosθ)N^2 \\
&=\exp(θN)
\end{aligned}
回転軸を表す行列の代数
$N _ x, N _ y, N _ z$ には以下の関係があります。(成分計算で確認できます)
{N_x}^3=-N_x,\;
{N_y}^3=-N_y,\;
{N_z}^3=-N_z
N_xN_y-N_yN_x=N_z,\;
N_yN_z-N_zN_y=N_x,\;
N_zN_x-N_xN_z=N_y
N_xN_yN_z+N_yN_zN_x+N_zN_xN_y=-I
N_xN_yN_z=-N_zN_yN_x,\;
N_yN_zN_x=-N_xN_zN_y,\;
N_zN_xN_y=-N_yN_xN_z
N_xN_yN_x=N_xN_zN_x=N_yN_xN_y=N_yN_zN_y=N_zN_xN_z=N_zN_yN_z=O
これらを使って色々な性質が導けます。
(1) $N _ x N _ y - N _ y N _ x = N _ z$ の両辺に右から $N _ z$ を掛けます。
\begin{aligned}
N_xN_yN_z-N_yN_xN_z&={N_z}^2 \\
N_xN_yN_z+N_zN_xN_y&={N_z}^2
\end{aligned}
同様にして求めた関係をまとめます。
\begin{aligned}
N_xN_yN_z+N_yN_zN_x&={N_x}^2 \\
N_yN_zN_x+N_zN_xN_y&={N_y}^2 \\
N_zN_xN_y+N_xN_yN_z&={N_z}^2 \\
\end{aligned}
以上より次の関係が求まります。
{N_x}^2+{N_y}^2+{N_z}^2=2(N_xN_yN_z+N_yN_zN_x+N_zN_xN_y)=-2I
(2) $N _ x N _ y - N _ y N _ x = N _ z$ の両辺に左から $N _ x$ を掛けます。
{N_x}^2N_y-\underbrace{N_xN_yN_x}_{O}=N_xN_z
{N_x}^2N_y=N_xN_z
これに更に左から $N _ x$ を掛けます。
-N_xN_y={N_x}^2N_z
同様にして求めた関係をまとめます。赤字は左右から掛けた因子で、それが右辺にも残っています。
\begin{aligned}
{\textcolor{red}{N_x}}^2N_y&=\;\;\;\textcolor{red}{N_x}N_z,& N_x{\textcolor{red}{N_y}}^2&=\;\;\;N_z\textcolor{red}{N_y} \\
{\textcolor{red}{N_x}}^2N_z&=-\textcolor{red}{N_x}N_y,& N_x{\textcolor{red}{N_z}}^2&=-N_y\textcolor{red}{N_z} \\
{\textcolor{red}{N_y}}^2N_x&=-\textcolor{red}{N_y}N_z,& N_y{\textcolor{red}{N_x}}^2&=-N_z\textcolor{red}{N_x} \\
{\textcolor{red}{N_y}}^2N_z&=\;\;\;\textcolor{red}{N_y}N_x,& N_y{\textcolor{red}{N_z}}^2&=\;\;\;N_x\textcolor{red}{N_z} \\
{\textcolor{red}{N_z}}^2N_x&=\;\;\;\textcolor{red}{N_z}N_y,& N_z{\textcolor{red}{N_x}}^2&=\;\;\;N_y\textcolor{red}{N_x} \\
{\textcolor{red}{N_z}}^2N_y&=-\textcolor{red}{N_z}N_x,& N_z{\textcolor{red}{N_y}}^2&=-N_x\textcolor{red}{N_y}
\end{aligned}
(3) $N_xN_yN_z=-N_zN_yN_x$ の両辺に右から $N_x$ を掛けます。
\begin{aligned}
N_xN_yN_zN_x&=-N_zN_yN_xN_x \\
N_xN_yN_zN_x&=N_zN_zN_x \\
N_xN_yN_zN_x&=N_zN_y
\end{aligned}
異なる 2 つの因子を、両側から別の因子(赤字)で挟むと、内側の因子の順番が反転すると解釈できます。
\textcolor{red}{N_x}N_yN_z\textcolor{red}{N_x}=N_zN_y
また、計算過程の右辺に注目します。
-N_zN_yN_xN_x=N_zN_zN_x=N_zN_y
異なる 2 つの因子に、右側から別の因子の 2 乗(赤字)を掛けると、符号が反転すると解釈できます。
N_zN_y\textcolor{red}{{N_x}^2}=\textcolor{red}{-}N_zN_y
同様に左側から掛けても成り立ちます。
\textcolor{red}{{N_x}^2}N_zN_y=\textcolor{red}{-}N_zN_y
関連記事
四元数による回転と回転行列の関係を扱います。
クリフォード代数で回転を扱います。四元数との比較を含みます。