覚え書きブログ

クォータニオン

クォータニオンは、複素平面の3次元空間での姿勢(回転)を表すのに拡張したものである。
複素平面では、x+iyのように、実部aと虚部ibの足し算で表され、虚数はが1つ(i)しかないのに対し、クォータニオンでは、w+ix+jy+kzのように、虚数が3つ存在(i, j, k)する。

つまり、複素平面では、下図のように二次元上の点を、x軸方向への大きさ(実部)、y軸方向への大きさ(虚部)の足し算で表している。
f:id:hirotaka_hachiya:20170724235320p:plain
http://www.ee.t-kougei.ac.jp/tuushin/lecture/math1/htdocs/complex/complexPlane.html

それに対し、クォータニオンでは、下図のよゆに3次元上でのベクトルを虚部全体で表す(x,y,およびz軸方向への大きさ)。そして、そのベクトルを中心にした回転角を実部で表している。
f:id:hirotaka_hachiya:20170724235458p:plain
https://tyablog.net/2017/04/04/euler-angles-quaternion/#i-4

これにより、任意の軸に対する回転角を一つ指定するだけで、ロール・ピッチ・ヨーの3つの回転角(オイラー角)を指定することと同等のことができる。
また、オイラー角の指定では、回転行列をどの軸からかけるかによって姿勢が変わるという問題があったが、クォータニオンではそのようなことが起こらない。
さらに、オイラー角の指定では、回転行列のかける順番によっては、2つの軸が重なってしまい自由度が落ちる「ジンバルロック」問題があったが、クォータニオンではそのようなことが起こらないというメリットを持ち合わせている。

ジンバルロックの例:
f:id:hirotaka_hachiya:20170725000828p:plain
http://blog.livedoor.jp/take_z_ultima/archives/52353936.html