クオータニオンから回転行列を得る:具体例

quaternion-matrix-example.png

点(x,y)=(2,0)を60度回転させるには?

ここで、図にある点A(x,y)=(2,0)を点A'になるようにθ=60度回転させたら、点A'の座標は$(1,\sqrt{3})$になる
sixty.png
回転行列はこうなる

(1)
\begin{align} \left[ \begin{matrix} A'_x\\ A'_x \end{matrix} \right] = \left[ \begin{matrix} \cos\theta&-\sin\theta\\ \sin\theta&\cos\theta\\ \end{matrix} \right] \left[ \begin{matrix} A_x\\ A_y\end{matrix} \right] \end{align}

θ=60度,A=(2,0)なので、

(2)
\begin{align} \left[ \begin{matrix} 1\\ \sqrt{3} \end{matrix} \right] = \left[ \begin{matrix} \frac{1}{2}&-\frac{\sqrt{3}}{2}\\ \frac{\sqrt{3}}{2}&\frac{1}{2}\\ \end{matrix} \right] \left[ \begin{matrix} 2\\ 0\end{matrix} \right] \end{align}

この行列をクォータニオンから得るには?
クォータニオンを行列にするにはこのページによると次の公式である
x,y,z,wは共役クォータニオンの成分である。

(3)
\begin{pmatrix} 1 - 2(yy - zz) & 2(xy + zw) & 2(zx - yw) & 0\\ 2(xy - zw) & 1- 2(zz - xx) & 2(yz + xw) & 0\\ 2(zx + yw) & 2(yz - xw) & 1 - 2(xx - yy) & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}

xy平面で60度回転させたい時の四元数は
回転軸が(x,y,z)=(0,0,1)になるので

(4)
\begin{align} (x,y,z,w)=(0,0, -sin\frac{\theta}{2},cos\frac{\theta}{2})\\ =(0,0,-\frac{1}{2},\frac{\sqrt{3}}{2}) \end{align}

になるこれをさっきの公式にあてはめると

(5)
\begin{pmatrix} 1 - 2(0 - \frac{1}{4}) & 2\times(0 -\frac{1}{2}\frac{\sqrt{3}}{2}) & 2\times(0 - 0) & 0\\ 2\times(\frac{1}{2}\times \frac{\sqrt{3}}{2}) & 1- 2(\frac{1}{4}) & 2\times(0 + 0) & 0\\ 2\times0 & 2\times0 & 1 - 2(0 - 0) & 0\\ 0 & 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \frac{1}{2} & -\frac{\sqrt{3}}{2} & 0 & 0\\ \frac{\sqrt{3}}{2} & \frac{1}{2} & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}

サポートサイト Wikidot.com