ホーム >
ゲーム数学 >
回転行列からクォータニオンの変換式を4パターンに分けて丁寧に導出する【後編・本題】
回転行列からクォータニオンの変換式を4パターンに分けて丁寧に導出する【後編・本題】
はじめに
「クォータニオンって難しそうだけど、仕組みを理解して自分で実装したい」
そんな方に向けて、回転行列⇔クォータニオン の仕組みを3部構成で丁寧に解説しています。
この記事は後編 にあたり、回転行列→クォータニオン の変換式を手計算で導いていきます。
前編ではクォータニオンに関する「基礎知識」を、中編では「クォータニオン→回転行列」の導出を行ないました。
前編・中編をまだ呼んでいない方は、先にそちらから読んでいただくと理解度がアップすすのでオススメです。
前提
本記事について(3部構成)
この記事は「回転行列→クォータニオン変換の式を自力で導出する」 ことを最終目標とした、3部構成の中編 です。
「導出なんて難しそう」と思うかも知れませんが、基礎知識さえ理解すれば、誰でもたどり着けるように工夫しています。
途中式を省略することなく丁寧に解説しているので、興味のあるところから読み進めてみてください。
回転行列からクォータニオンを求める
前回までの流れ
今まで、クォータニオン→回転行列を導くために計算を行なってきました。
前回導いた最終的な回転行列は次の通りです。
$$R=
\begin{pmatrix}
1-2(y^2+z^2) & 2xy-2wz & 2xz+2wy \\
2xy+2wz & 1-2(x^2+z^2) & 2yz-2wx \\
2xz-2wy & 2yz+2wx & 1-2(x^2+y^2)
\end{pmatrix}
$$
今回行なうのは、行列の $R_{ij}$ を使って、クォータニオンの成分 $w, i, j, k$ を求めることです。
これを求めることができれば、どんな回転行列が与えられても自力でクォータニオンへ変換できるようになります。
1.行列の $trace$ を使って $w$ を求める
前々回で行列の $trace$ を使えば $w$ を求めることができる、と紹介しました。
忘れている人のために復習しておきましょう。
行列の対角成分の和を $trace$ と言い、その行列が どれだけ回転しているか を表しています。
$$trace = R_{00} + R_{11} + R_{22}
$$
この式を使って、前回求めた回転行列の式におけるtraceを導いてみましょう。
まずは、0行0列目、1行1列目、2行2列目の成分を先に展開します。
$$\begin{align}
R_{00} &= 1-2(y^2+z^2) = 1-2y^2-2z^2 \\
R_{11} &= 1-2(x^2+z^2) = 1-2x^2-2z^2 \\
R_{22} &= 1-2(x^2+y^2) = 1-2x^2-2y^2
\end{align}
$$
これを $trace$ の式に当てはめると次のようになります。
$$\begin{align}
trace
&= (1-2y^2-2z^2)+(1-2x^2-2z^2)+(1-2x^2-2y^2) \\
&= 3-4x^2-4y^2-4z^2 \\
&= 3-4(x^2+y^2+z^2)
\end{align}
$$
この回転行列は単位クォータニオンを使って回転を表現していた ので、単位クォータニオンの性質から次のことがいえます。(前回もこのような使い方をしました!)
$$\begin{align}
w^2+x^2+y^2+z^2 = 1 \\
x^2+y^2+z^2 = 1-w^2
\end{align}
$$
よって、先程の $trace$ の式に代入して、 $w$ について解いていくと次のようになります。
$$\begin{align}
trace &= 3-4(x^2+y^2+z^2) \\
&= 3-4(1-w^2) \\
&= 3-4+4w^2 \\
&= -1+4w^2 \\
4w^2 &= 1 + trace \\
w^2 &= \frac{1+trace}{4} \\
w &= \sqrt{\frac{1+trace}{4}} \\
&= \frac{1}{2}\sqrt{1+trace}
\end{align}
$$
これで $w$ の成分が求められました!
後は $x, y, z$ の3つの成分を求めることができればクォータニオンに変換できます。
補足
さきほど $w$ を求める中で、解は
$$\pm\frac{1}{2}\sqrt{1+trace}
$$
の2つ存在するのではないか?と思った人がいるかもしれません。
たしかにその通りですが、関係ありません。
それは、この2つが同じ回転 を表しているからです。
その理由を解説しましょう。
クォータニオンの回転は次の式で計算していました。
$$q \cdot v \cdot \overline{q}
$$
ここで、$q$ ではなく、$-q$ に変えてみましょう。
$$(-q) \cdot v \cdot \overline{(-q)}
$$
$q$ は単位クォータニオン、$\overline q$ は共役クォータニオンなので、次のように表せます。
$$\begin{align}
q = w+xi+yj+zk \\
\overline q = w-xi-yj-zk
\end{align}
$$
クォータニオンの性質から、
$$\begin{align}
\overline{(-q)} &= \overline{(-w-xi-yj-zk)} \\
&= (-w+xi+yj+zk) \\
&= -\overline{q}
\end{align}
$$
なので、式はこうなります。
$$\begin{align}
(-q) \cdot v \cdot \overline{(-q)}
&= (-q) \cdot v \cdot -\overline{q} \\
&= (-1)(-1)(q \cdot v \cdot \overline{q}) \\
&= q \cdot v \cdot \overline{q}
\end{align}
$$
つまり、全く同じ結果になるのです!
このように、クォータニオンでは $q$ と $-q$ は同じ回転を表すので、$\pm$ のどちらを選んでも問題ないというわけです。
2. 他の成分を $w$ から逆算する
xを求める
$w$ 成分は対角成分と $trace$ をつかって求めました。
残りの$x, y, z$ 成分は対角以外の成分に注目して求めていきます。
回転行列$R$は以下の通りです。
$$R=
\begin{pmatrix}
1-2(y^2+z^2) & 2xy-2wz & 2xz+2wy \\
2xy+2wz & 1-2(x^2+z^2) & 2yz-2wx \\
2xz-2wy & 2yz+2wx & 1-2(x^2+y^2)
\end{pmatrix}
$$
この中で、$trace$で使った対角成分以外は次のようになっています。
$$\begin{align}
R_{01} &= 2xy-2wz \\
R_{02} &= 2xz+2wy \\
R_{10} &= 2xy+2wz \\
R_{12} &= 2yz-2wx \\
R_{20} &= 2xz-2wy \\
R_{21} &= 2yz+2wx \\
\end{align}
$$
まず $R{12}$ と、$R {21}$ に注目します。
$$\begin{align}
R_{12} &= 2yz-2wx \\
R_{21} &= 2yz+2wx \\
\end{align}
$$
この差をとってxについて解くと、
$$\begin{align}
R_{21}-R_{12} &= (2yz+2wx)-(2yz-2wx) \\
&= 4wx \\
x &= \frac{R_{21}-R_{12}}{4w}
\end{align}
$$
このように、$x$は$w$と回転行列の成分($R_{12}$と$R_{21}$)だけを使って求めることができました!
(ここでは式を一般的に書くために$R_{12}$などの記号を使っていますが、実際には具体的な数値を代入して計算することになります。)
$y$を求める
同様に、$R{02}$と$R {20}$に注目すると、
$$\begin{align}
R_{02} &= 2xz+2wy \\
R_{20} &= 2xz-2wy
\end{align}
$$
この差をとって$y$について解くと、
$$\begin{align}
R_{02}-R_{20} &= (2xz+2wy) - (2xz-2wy) \\
&= 4wy \\
y&= \frac{R_{02}-R_{20}}{4w}
\end{align}
$$
$z$を求める
同様に、$R{01}$と$R {10}$に注目すると、
$$\begin{align}
R_{10}-R_{01} &= (2xy+2wz) - (2xy-2wz) \\
&= 4wz \\
z &= \frac{R_{10}-R_{01}}{4w}
\end{align}
$$
これで、回転行列を元にクォータニオンの成分を全て求めることができました!
$$\begin{align}
w &= \frac{1}{2}\sqrt{1+trace} \\
x &= \frac{R_{21}-R_{12}}{4w} \\
y &= \frac{R_{02}-R_{20}}{4w} \\
z &= \frac{R_{10}-R_{01}}{4w} \\
\end{align}
$$
問題点
これで全て求められたようにみえますが、一つだけ問題点があります。
それは、$w$の値が0に近いときに、0除算もしくは誤差が生じる可能性があることです。
$w=0$になるときの例として、180度回転の場合を見てみます。
・x軸周りに180度回転
$$\begin{pmatrix}
1 & 0 & 0 \\
0 & cos180^\circ & -sin180^\circ \\
0 & sin180^\circ & cos180^\circ
\end{pmatrix}
$$
・y軸周りに180度回転
$$\begin{pmatrix}
cos180^\circ & 0 & sin180^\circ \\
0 & 1 & 0 \\
-sin180^\circ & 0 & cos180^\circ
\end{pmatrix}
$$
・z軸周りに180度回転
$$\begin{pmatrix}
cos180^\circ & -sin180^\circ & 0 \\
sin180^\circ & cos180^\circ & 0 \\
0 & 0 & 1
\end{pmatrix}
$$
このときの $trace$ はどの回転軸周りでも同じです。
$$\begin{align}
trace &= 1 + cos180^\circ + cos180^\circ \\
&= 1 + (-1) + (-1) \\
&= -1
\end{align}
$$
よって、$w$ を求めると次のようになります。
$$\begin{align}
w &= \frac{1}{2} \sqrt{1+trace} \\
&= \frac{1}{2} \sqrt{1+(-1)} \\
&= \frac{1}{2} \cdot 0 \\
&= 0
\end{align}
$$
ここで $w=0$ になりました。
$x$ を求めるための式は、
$$x = \frac{R_{21}-R_{12}}{4w}
$$
となっており、分母に$4w$があります。
この状態で$w=0$を代入すると、0除算になるかとてつもない誤差を生み出す可能性があります。
このことから、いつでも$w$を基準にするのではなく、最も数値が大きい成分を選ぶ ほうが安全であるといえます。
計算すると分かりますが、どの成分を基準にしても分母に$w, x, y, z$のいずれかの値が出てきます。
そのため、「$w, x, y, z$のうち、最も大きそうな成分がどれかを求め、その成分を基準にして他の成分も求める」という方法をとります。
最も大きい成分を選んで他の成分も求める方法
3_1 最も大きい成分を見つける
まずは、$w, x, y, z$のどの成分が最も大きいかを見つけます。
そのために、まずは回転行列の式をもう一度見てください。
$$R=
\begin{pmatrix}
1-2(y^2+z^2) & 2xy-2wz & 2xz+2wy \\
2xy+2wz & 1-2(x^2+z^2) & 2yz-2wx \\
2xz-2wy & 2yz+2wx & 1-2(x^2+y^2)
\end{pmatrix}
$$
ここで、対角成分($trace$で使う成分)を抜き出すと、次のようになります。
$$\begin{align}
R_{00} &= 1-2(y^2+z^2) \\
R_{11} &= 1-2(x^2+z^2) \\
R_{22} &= 1-2(x^2+y^2) \\
\end{align}
$$
これら3つの成分について、単位クォータニオンの式($w^2+x^2+y^2+z^2=1$)を元に$wとx$、$wとy$、$wとz$の成分の式に変形します。
・$R_{00}$の場合:$w$と$x$の式にする
$$\begin{align}
w^2+x^2+y^2+z^2&=1 \\
y^2+z^2 &= 1-w^2-x^2
\end{align}
$$
よって、
$$\begin{align}
R_{00} &= 1-2(y^2+z^2) \\
&= 1-2(1-w^2-x^2) \\
&= 1-2+2w^2+2x^2 \\
&= 2w^2+2x^2-1
\end{align}
$$
・$R_{11}$の場合:$w$と$y$の式にする
$$\begin{align}
w^2+x^2+y^2+z^2&=1 \\
x^2+z^2 &= 1-w^2-y^2
\end{align}
$$
よって、
$$\begin{align}
R_{11} &= 1-2(x^2+z^2) \\
&= 1-2(1-w^2-y^2) \\
&= 1-2+2w^2+2y^2 \\
&= 2w^2+2y^2-1
\end{align}
$$
・$R_{22}$の場合:$w$と$z$の式にする
$$\begin{align}
w^2+x^2+y^2+z^2&=1 \\
x^2+y^2 &= 1-w^2-z^2
\end{align}
$$
よって、
$$\begin{align}
R_{22} &= 1-2(w^2+z^2) \\
&= 1-2(1-w^2-z^2) \\
&= 1-2+2w^2+2z^2 \\
&= 2w^2+2z^2-1
\end{align}
$$
これら3つの式から、$w, x, y, z$各成分に最も依存する式を導いていきます。
例えば$w$に依存する式を求めたいときには、3つの対角成分に単位クォータニオンの式を組み合わせて、$w$だけが残り、他の成分が打ち消し合うような形にします。
といっても説明だけではイメージしにくいので、実際に求めてみましょう。
$w$成分に依存する式を求める
対角成分は以下のようになっています。
$$\begin{align}
R_{00} &= 2w^2+2x^2-1 \\
R_{11} &= 2w^2+2y^2-1 \\
R_{22} &= 2w^2+2z^2-1 \\
\end{align}
$$
この式と単位クォータニオンの式($w^2+x^2+y^2+z^2 = 1$)を使って、$w$成分だけ残す式に変形します。
そのためには、$R{00}+R {11}+R_{22}$をします。
$$\begin{align}
R_{00}+R_{11}+R_{22} &= (2w^2+2x^2-1) + (2w^2+2y^2-1) + (2w^2+2z^2-1) \\
&= 6w^2+2x^2+2y^2+2z^2-3 \\
&= 6w^2+2(x^2+y^2+z^2)-3 \\
\end{align}
$$
ここで、単位クォータニオンの式より、
$$\begin{align}
w^2+x^2+y^2+z^2 &= 1 \\
x^2+y^2+z^2 &= 1-w^2
\end{align}
$$
これを先程の式に代入して、
$$\begin{align}
R_{00}+R_{11}+R_{22} &= 6w^2+2(1-w^2)-3 \\
&= 6w^2+2-2w^2-3 \\
&= 4w^2-1 \\
4w^2 &= R_{00}+R_{11}+R_{22}+1 \\
w^2 &= \frac{1}{4}(R_{00}+R_{11}+R_{22}+1) \\
w &= \frac{1}{2}\sqrt {R_{00}+R_{11}+R_{22}+1}
\end{align}
$$
これで、$w$の成分のみを使って式ができました!
ところで、この式に見覚えはありませんか?
少し変形すると、このようになります。
$$w= \frac{1}{2}\sqrt{1+trace} \\
$$
これは、前々回に回転行列の$trace$からとクォータニオンの$w$成分を求めることができる公式として紹介したものです!
実は公式というよりかは、「$w$成分に最も依存しているときの式」だったんです!
この変形を$x, y, z$それぞれの成分で行ないます。
かなり長くなりますが、途中式をもれなく記述しているので分かる方は適宜飛ばしてください。
$x$が最大成分のとき
$w$成分と同じ手順で$x$成分も進めていきます!
対角成分は以下のようになっています。
$$\begin{align}
R_{00} &= 2w^2+2x^2-1 \\
R_{11} &= 2w^2+2y^2-1 \\
R_{22} &= 2w^2+2z^2-1 \\
\end{align}
$$
この式と単位クォータニオンの式($w^2+x^2+y^2+z^2 = 1$)を使って、$x$成分だけ残す式に変形します。
そのためには、$R{00}-R {11}-R_{22}$をします。
$$\begin{align}
R_{00}-R_{11}-R_{22} &= (2w^2+2x^2-1) - (2w^2+2y^2-1) - (2w^2+2z^2-1) \\
&= 2w^2+2x^2-1-2w^2-2y^2+1-2w^2-2z^2+1\\
&= -2w^2+2x^2-2y^2-2z^2+1 \\
&= 2x^2-2(w^2+y^2+z^2)+1 \\
\end{align}
$$
ここで、単位クォータニオンの式より、
$$\begin{align}
w^2+x^2+y^2+z^2 &= 1 \\
w^2+y^2+z^2 &= 1-x^2
\end{align}
$$
これを先程の式に代入して、
$$\begin{align}
R_{00}-R_{11}-R_{22} &= 2x^2-2(w^2+y^2+z^2)+1 \\
&= 2x^2-2(1-x^2)+1 \\
&= 2x^2-2+2x^2+1 \\
&= 4x^2-1 \\
4x^2 &= R_{00}-R_{11}-R_{22}+1 \\
x^2 &= \frac{1}{4}(R_{00}-R_{11}-R_{22}+1) \\
x &= \frac{1}{2}\sqrt{R_{00}-R_{11}-R_{22}+1}
\end{align}
$$
これで$x$成分のみを使った式ができました!
$y$成分に依存する式を求める
同様に$y$成分も進めていきます!
対角成分は以下のようになっています。
$$\begin{align}
R_{00} &= 2w^2+2x^2-1 \\
R_{11} &= 2w^2+2y^2-1 \\
R_{22} &= 2w^2+2z^2-1 \\
\end{align}
$$
この式と単位クォータニオンの式($w^2+x^2+y^2+z^2 = 1$)を使って、$y$成分だけ残す式に変形します。
そのためには、$-R{00}+R {11}-R_{22}$をします。
$$\begin{align}
-R_{00}+R_{11}-R_{22} &= -(2w^2+2x^2-1) + (2w^2+2y^2-1) - (2w^2+2z^2-1) \\
&= -2w^2-2x^2+1+2w^2+2y^2-1-2w^2-2z^2+1\\
&= -2w^2-2x^2+2y^2-2z^2+1 \\
&= 2y^2-2(w^2+x^2+z^2)+1 \\
\end{align}
$$
ここで、単位クォータニオンの式より、
$$\begin{align}
w^2+x^2+y^2+z^2 &= 1 \\
w^2+x^2+z^2 &= 1-y^2
\end{align}
$$
これを先程の式に代入して、
$$\begin{align}
-R_{00}+R_{11}-R_{22} &= 2y^2-2(w^2+x^2+z^2)+1 \\
&= 2y^2-2(1-y^2)+1 \\
&= 2y^2-2+2y^2+1 \\
&= 4y^2-1 \\
4y^2 &= -R_{00}+R_{11}-R_{22}+1 \\
y^2 &= \frac{1}{4}(-R_{00}+R_{11}-R_{22}+1) \\
y &= \frac{1}{2}\sqrt{-R_{00}+R_{11}-R_{22}+1}
\end{align}
$$
これで$y$成分のみを使った式ができました!
$z$成分に依存する式を求める
最後に$z$成分も進めていきます!
対角成分は以下のようになっています。
$$\begin{align}
R_{00} &= 2w^2+2x^2-1 \\
R_{11} &= 2w^2+2y^2-1 \\
R_{22} &= 2w^2+2z^2-1 \\
\end{align}
$$
この式と単位クォータニオンの式($w^2+x^2+y^2+z^2 = 1$)を使って、$z$成分だけ残す式に変形します。
そのためには、$-R{00}-R {11}+R_{22}$をします。
$$\begin{align}
-R_{00}-R_{11}+R_{22} &= -(2w^2+2x^2-1) - (2w^2+2y^2-1) + (2w^2+2z^2-1) \\
&= -2w^2 -2x^2 +1 -2w^2 -2y^2 +1 +2w^2 +2z^2 -1\\
&= -2w^2-2x^2-2y^2+2z^2+1 \\
&= 2z^2-2(w^2+x^2+y^2)+1 \\
\end{align}
$$
ここで、単位クォータニオンの式より、
$$\begin{align}
w^2+x^2+y^2+z^2 &= 1 \\
w^2+x^2+y^2 &= 1-z^2
\end{align}
$$
これを先程の式に代入して、
$$\begin{align}
-R_{00}-R_{11}+R_{22} &= 2z^2-2(w^2+x^2+y^2)+1 \\
&= 2z^2-2(1-z^2)+1 \\
&= 2z^2-2+2z^2+1 \\
&= 4z^2-1 \\
4z^2 &= -R_{00}-R_{11}+R_{22}+1 \\
z^2 &= \frac{1}{4}(-R_{00}-R_{11}+R_{22}+1) \\
z &= \frac{1}{2}\sqrt{-R_{00}-R_{11}+R_{22}+1}
\end{align}
$$
これで$z$成分のみを使った式ができました!
以上を全てまとめると、次のようになります。
$$\begin{align}
w &= \frac{1}{2}\sqrt {R_{00}+R_{11}+R_{22}+1} \\
x &= \frac{1}{2}\sqrt{R_{00}-R_{11}-R_{22}+1} \\
y &= \frac{1}{2}\sqrt{-R_{00}+R_{11}-R_{22}+1} \\
z &= \frac{1}{2}\sqrt{-R_{00}-R_{11}+R_{22}+1} \\
\end{align}
$$
少し見にくいので書き換えると、次のようになります。
$$\begin{align}
w &= \frac{1}{2} \sqrt{1 + R_{00} + R_{11} + R_{22}} \\
x &= \frac{1}{2} \sqrt{1 + R_{00} - R_{11} - R_{22}} \\
y &= \frac{1}{2} \sqrt{1 - R_{00} + R_{11} - R_{22}} \\
z &= \frac{1}{2} \sqrt{1 - R_{00} - R_{11} + R_{22}}
\end{align}
$$
これらの式に当てはめてどの成分が大きいか比較します。
ここで計算するときは、ルートなどの共通部分を省いても問題ありません。
$$\begin{align}
w &= 1 + R_{00} + R_{11} + R_{22} \\
x &= 1 + R_{00} - R_{11} - R_{22} \\
y &= 1 - R_{00} + R_{11} - R_{22} \\
z &= 1 - R_{00} - R_{11} + R_{22} \\
\end{align}
$$
3_2.最も大きい成分を元に他の成分を求める
ここからは、最初に$w$成分を元にして$x, y, z$成分を求めたときと同じです。
今回は$x$成分が最も大きかったと仮定して話を進めていきます。
$$\begin{align}
x = \frac{1}{2}\sqrt{1 + R_{00} - R_{11} - R_{22}} \\
\end{align}
$$
$w$を求める
回転行列と対角以外の成分は次のようになっています。
$$R=
\begin{pmatrix}
1-2(y^2+z^2) & 2xy-2wz & 2xz+2wy \\
2xy+2wz & 1-2(x^2+z^2) & 2yz-2wx \\
2xz-2wy & 2yz+2wx & 1-2(x^2+y^2)
\end{pmatrix}
$$
$$\begin{align}
R_{01} &= 2xy-2wz \\
R_{02} &= 2xz+2wy \\
R_{10} &= 2xy+2wz \\
R_{12} &= 2yz-2wx \\
R_{20} &= 2xz-2wy \\
R_{21} &= 2yz+2wx \\
\end{align}
$$
ここから$x$と$w$の成分だけ残す式を組み立てます。
$R{21}$と$R {12}$に注目します。
$$\begin{align}
R_{21} &= 2yz+2wx \\
R_{12} &= 2yz-2wx \\
\end{align}
$$
この差をとって$w$について解くと、
$$\begin{align}
R_{21}-R_{12} &= (2yz+2wx) - (2yz-2wx) \\
&= 4wx \\
w &= \frac{R_{21}-R_{12}}{4x}
\end{align}
$$
$y$を求める
同様に、$R{01}$と$R {10}$に注目すると、
$$\begin{align}
R_{01} &= 2xy-2wz \\
R_{10} &= 2xy+2wz \\
\end{align}
$$
この和をとってyについて解くと、
$$\begin{align}
R_{01}+R_{10} &= (2xy-2wz) + (2xy+2wz) \\
&= 4xy \\
y &= \frac{R_{01}+R_{10}}{4x}
\end{align}
$$
$z$を求める
同様に、$R{02}$と$R {20}$に注目すると、
$$\begin{align}
R_{02} &= 2xz+2wy \\
R_{20} &= 2xz-2wy \\
\end{align}
$$
この和をとってzについて解くと、
$$\begin{align}
R_{02}+R_{20} &= (2xz+2wy) + (2xz-2wy) \\
&= 4xz \\
z &= \frac{R_{02}+R_{20}}{4x}
\end{align}
$$
$x$の成分が最大だったときの場合で、回転行列を元にクォータニオンに変換する成分を求めることができました!
$$\begin{align}
x &= \frac{1}{2}\sqrt{1 + R_{00} - R_{11} - R_{22}} \\
w &= \frac{R_{21}-R_{12}}{4x} \\
y &= \frac{R_{01}+R_{10}}{4x} \\
z &= \frac{R_{02}+R_{20}}{4x} \\
\end{align}
$$
$y$や$z$が最大成分の場合
ここから先は、$y$や$z$が最大成分の場合です。
これらの式も、最大成分を先に計算し、その値を使って他の成分を回転行列から求めるという流れです。
・$y$が最大のとき
$$\begin{align}
y &= \frac{1}{2}\sqrt{1 - R_{00} + R_{11} - R_{22}} \\
w &= \frac{R_{02} - R_{20}}{4y} \\
x &= \frac{R_{01} + R_{10}}{4y} \\
z &= \frac{R_{12} + R_{21}}{4y} \\
\end{align}
$$
・$z$が最大のとき
$$\begin{align}
z &= \frac{1}{2}\sqrt{1 - R_{00} - R_{11} + R_{22}} \\
w &= \frac{R_{10} - R_{01}}{4z} \\
x &= \frac{R_{02} + R_{20}}{4z} \\
y &= \frac{R_{12} + R_{21}}{4z} \\
\end{align}
$$
おわりに
これでついに、回転行列→クォータニオンの変換を導出できました。
ここまで見てくださった方、本当にありがとうございます!
「クォータニオンって何をしているんだろう」と感じていた方も、丁寧に導出しながら数式を追うことで、その仕組みが見えてきたのではないでしょうか。
とくに、「どの成分が最大化で式を切り替える理由」や「回転行列に現れる各成分の意味」など、納得感が得られていれば幸いです。