ロドリゲスの回転公式(3次元の回転行列)

三次元空間での回転に関するロドリゲスの回転公式を紹介します。

まずはベクトル版を紹介し,後半では行列版(三次元空間における回転行列)を紹介します。

三次元空間における回転(ベクトル)

ロドリゲスの回転公式(ベクトル)

pic01 三次元空間において,nundefined\overrightarrow{n} を軸として,rundefined\overrightarrow{r}θ\theta 回転させた点 rundefined\overrightarrow{r'} は,

rundefined=(cosθ)rundefined+(1cosθ)(rundefinednundefined)nundefined+(sinθ)(nundefined×rundefined)\overrightarrow{r'}=(\cos\theta)\overrightarrow{r}+(1-\cos\theta)(\overrightarrow{r}\cdot\overrightarrow{n})\overrightarrow{n}+(\sin\theta)(\overrightarrow{n}\times\overrightarrow{r})

  • nundefined\overrightarrow{n} は軸を表す単位ベクトルです。回転の向きは,右ねじの進む向きが nundefined\overrightarrow{n} と一致するような向きを正とします。
  • rundefined\overrightarrow{r} は回転前の点を表す位置ベクトルです。rundefined\overrightarrow{r'} は回転後の点を表す位置ベクトルです。
  • nundefined×rundefined\overrightarrow{n}\times\overrightarrow{r} は外積です。nundefined\overrightarrow{n} にも rundefined\overrightarrow{r} にも垂直なベクトルです。→ベクトルの内積と外積の意味と嬉しさ
  • rundefined\overrightarrow{r'} を,rundefined\overrightarrow{r}nundefined\overrightarrow{n}nundefined×rundefined\overrightarrow{n}\times\overrightarrow{r} の線形結合で表しています。
例題1

rundefined=(2,1,0)\overrightarrow{r}=(2,1,0) を軸 nundefined=(1,0,0)\overrightarrow{n}=(1,0,0) のまわりに θ=180\theta=180^{\circ} 回転させた点の座標を計算せよ。

pic02

解答

ロドリゲスの回転公式を使ってみる。cos180=1\cos 180^{\circ}=-1sin180=0\sin 180^{\circ}=0 より

rundefined=(2,1,0)+2×2(1,0,0)=(2,1,0)\overrightarrow{r'}=-(2,1,0)+2\times 2(1,0,0)=(2,-1,0)

なお,例題1はロドリゲスの回転公式を使わなくても実際に 180180^{\circ} 回転させてみれば答えに納得できます。

ロドリゲスの回転公式の証明

rundefined\overrightarrow{r'} を,rundefined\overrightarrow{r}nundefined\overrightarrow{n}nundefined×rundefined\overrightarrow{n}\times\overrightarrow{r} の線形結合で表します。

証明

pic03 図のように A,X,Y,ZA,X,Y,Z を定める。(YYXX9090^{\circ} 回転させた点。xx 軸が AXAXyy 軸が AYAY である xyxy 座標平面をイメージするとよい)

AZundefined=AXundefinedcosθ+AYundefinedsinθ\overrightarrow{AZ}=\overrightarrow{AX}\cos\theta+\overrightarrow{AY}\sin\theta

より,

rundefined=OAundefined+AZundefined=OAundefined+AXundefinedcosθ+AYundefinedsinθ\overrightarrow{r'}=\overrightarrow{OA}+\overrightarrow{AZ}\\ =\overrightarrow{OA}+\overrightarrow{AX}\cos\theta+\overrightarrow{AY}\sin\theta

これに,以下を代入するとロドリゲスの回転公式になる。

  • 正射影ベクトルの考え方より,OAundefined=(rundefinednundefined)nundefined\overrightarrow{OA}=(\overrightarrow{r}\cdot\overrightarrow{n})\overrightarrow{n}
  • AXundefined=rundefinedOAundefined=rundefined(rundefinednundefined)nundefined\overrightarrow{AX}=\overrightarrow{r}-\overrightarrow{OA}=\overrightarrow{r}-(\overrightarrow{r}\cdot\overrightarrow{n})\overrightarrow{n}
  • AYundefined\overrightarrow{AY} は,nundefined\overrightarrow{n}rundefined\overrightarrow{r} に垂直で長さが AXundefined=rundefinedsinAOX|\overrightarrow{AX}|=|\overrightarrow{r}|\sin\angle AOX なので,外積の定義より AYundefined=nundefined×rundefined\overrightarrow{AY}=\overrightarrow{n}\times\overrightarrow{r}

三次元空間における回転行列

ロドリゲスの回転公式(行列)

三次元空間における回転行列は,

Rθ=(1cosθ)(nx2nxnynxnznxnyny2nynznxnznynznz2)+(cosθnzsinθnysinθnzsinθcosθnxsinθnysinθnxsinθcosθ)R_{\theta}=(1-\cos\theta)\begin{pmatrix}n_x^2&n_xn_y&n_xn_z\\n_xn_y&n_y^2&n_yn_z\\n_xn_z&n_yn_z&n_z^2\end{pmatrix}\\ \:\:\:\:+\begin{pmatrix}\cos\theta&-n_z\sin\theta&n_y\sin\theta\\n_z\sin\theta&\cos\theta&-n_x\sin\theta\\-n_y\sin\theta&n_x\sin\theta&\cos\theta\end{pmatrix}

つまり,三次元空間において,nundefined=(nx,ny,nz)\overrightarrow{n}=(n_x,n_y,n_z) を軸として,rundefined=(x,y,z)\overrightarrow{r}=(x,y,z)θ\theta 回転させた点の座標は RθrundefinedR_{\theta}\overrightarrow{r}^{\top}

例題1(再掲)

rundefined=(2,1,0)\overrightarrow{r}=(2,1,0) を軸 nundefined=(1,0,0)\overrightarrow{n}=(1,0,0) のまわりに θ=180\theta=180^{\circ} 回転させた点の座標を計算せよ。

解答

今度は回転行列を使って計算してみる。cos180=1\cos 180^{\circ}=-1sin180=0\sin 180^{\circ}=0ny=nz=0n_y=n_z=0 より

Rθ=2(100000000)+(100010001)=(100010001)R_{\theta}=2\begin{pmatrix}1&0&0\\0&0&0\\0&0&0\end{pmatrix}+\begin{pmatrix}-1&0&0\\0&-1&0\\0&0&-1\end{pmatrix}\\ =\begin{pmatrix}1&0&0\\0&-1&0\\0&0&-1\end{pmatrix}

よって,回転後の座標は Rθ(210)=(210)R_{\theta}\begin{pmatrix}2\\1\\0\end{pmatrix}=\begin{pmatrix}2\\-1\\0\end{pmatrix}

二次元の回転行列との関係

  • 二次元の回転行列 (cosθsinθsinθcosθ)\begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{pmatrix} はよく使いますね。→一次変換の意味と重要な5つの例(折り返し・回転・対称移動)

  • ロドリゲスの回転公式において,nundefined\overrightarrow{n} の向きがいずれかの座標軸の向きと一致する場合,二次元の回転行列が出てきます。例えば nundefined=(0,0,1)\overrightarrow{n}=(0,0,1) とすると,Rθ=(cosθsinθ0sinθcosθ0001)R_{\theta}=\begin{pmatrix}\cos\theta&-\sin\theta&0\\\sin\theta&\cos\theta&0\\0&0&1\end{pmatrix} となります。

行列版の導出

ロドリゲスの回転公式(行列)は,ベクトル版から簡単に導出できます。

証明

ベクトル版の公式:

(cosθ)rundefined+(1cosθ)(rundefinednundefined)nundefined+(sinθ)(nundefined×rundefined)(\cos\theta)\overrightarrow{r}+(1-\cos\theta)(\overrightarrow{r}\cdot\overrightarrow{n})\overrightarrow{n}+(\sin\theta)(\overrightarrow{n}\times\overrightarrow{r})

に各成分を代入すると,

  • 第一項は (cosθ000cosθ000cosθ)(xyz)\begin{pmatrix}\cos\theta&0&0\\0&\cos\theta&0\\0&0&\cos\theta\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}

  • 第二項は (1cosθ)(nx2nxnynxnznxnyny2nynznxnznynznz2)(xyz)(1-\cos\theta)\begin{pmatrix}n_x^2&n_xn_y&n_xn_z\\n_xn_y&n_y^2&n_yn_z\\n_xn_z&n_yn_z&n_z^2\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}

  • 第三項は (0nzsinθnysinθnzsinθ0nxsinθnysinθnxsinθ0)(xyz)\begin{pmatrix}0&-n_z\sin\theta&n_y\sin\theta\\n_z\sin\theta&0&-n_x\sin\theta\\-n_y\sin\theta&n_x\sin\theta&0\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}

となり,足し合わせると Rθ(xyz)R_{\theta}\begin{pmatrix}x\\y\\z\end{pmatrix} となる。

ロドリゲスの回転公式を最初見たときは「なんかごちゃごちゃしているなあ」と感じましたが,何度も眺めていると「けっこうきれいだなあ」という気持ちになりました。