クウォータ二オン(四元数)を理解したいメモZennomakazu🙈クウォータ二オン(四元数)を理解したいメモ2022/08/27に公開2024/09/06mathcvcgtechはじめにCG系のソフトウェアを使っていると回転周りでクウォータ二オンがでてくるが何となくの概要の理解だけで、いつかちゃんと理解したいなぁと思いつつ逃げてきた。重い腰を少しあげれたのでそれをメモする。モチベーション自分たちのモチベーションxyzの三次元空間を扱うCGにおいての回転を表現する方法で一番最初に思いつくのがオイラー角による回転表現がある。https://www.sky-engin.jp/blog/eulerian-angles/各軸に〇〇度回転みたいなことを考えて回転を表現する方法。https://www.sky-engin.jp/blog/eulerian-angles/こうすれば、任意の角度の姿勢を表現することができそうって思いつく。オイラー角を簡単に体験できるものを作ってた人がいたので共有。https://www.sky-engin.jp/EulerianAnglesTool/eulerian-angles-tool.php?lang=jaこのオイラー角をソフトウェア上で実装することを考えると、具体的には回転行列みたいなものを考えてその軸にたいしての回転行列の積をとってあげる。\end{bmatrix}行列で計算しているのなら積の順序が大切になってくる、どの軸の回転から先に計算するかによっても結果がことなってくる。その行列の積の一環で問題にぶち当たることがある。有名なぶち当たる問題点として、ジンバルロックという現象がある。それは回転が一見して効かなくなったり、おかしくなったりして回転に関わるアニメーションがうまく適用できなかったりする現象。このジンバルロックを解決させる策が、四元数、クウォータ二オンを使った回転方法である。この概念を理解できれば、あらゆるCGソフトウェアでも一貫して使える知識のため役に立つため、クウォータ二オンを知りたい!ジンバルロックジンバルロックの状態を具体的なイメージで説明してくれている動画。https://youtu.be/zc8b2Jo7mno簡単に説明すると、ある特定の条件の時に、他2軸の値を変更しても見た目上同一方向の回転に見えてしまうということ。Explainedジンバルロックの運用上での回避方法Mayaを使った例で、実際どのように回避しているかを説明してくれている人がいた。根本的な解決ではないその他のオイラー角における問題点その他のオイラー角における問題点について、具体例で示してくれいている人がいたので貼っておく。することから生まれた数体系。名前だけよく聞くハミルトンさんが思いついた数体系らしい。ハミルトンは複素数が座標平面における点として解釈できることを知っていて、三次元空間の点に対して同じことができる方法を探していた。空間の点はそれらの座標としての数の三つ組によって表すことができ、ハミルトンはそれらの三つ組に対して加法や減法をどのようにすべきかはずっと前から分かっていたのだが、乗法と除法をどう定めるかという問題については長く行き詰ったままであった。ハミルトンは、空間における二点の座標の商をどのように計算すべきかを形にすることができなかったのである。四元数についての大きな転換点がついに訪れたのは、1843年10月16日の月曜日、ダブリンにおいてハミルトンが理事会の長を務めることになるアイルランド王立アカデミー(英語版)への道すがら、妻とともにロイヤル運河(英語版)の引き船道に沿って歩いているときであった。-1を、渡っていたブルーム橋(英語版)の石に刻みつけた。いうモチベーションだったらしい。後にベクトル解析の方が表現するのに便利だねという意見が強まり、数学・物理界においては勢力が弱まってきたが、後の時代にCGやCV(コンピュータビジョン)などにおいて便利なことに気づかれたよう。四元数は20世紀の後半になって、三次元の自由な回転を記述する能力を買われて、多用されることとなった。四元数による3次元の回転(姿勢)の表現は、3次正方行列による表現と比べて記憶容量が小さくて演算のスピードも速い。加えて、オイラー角と違ってジンバルロックが起きない。シミュレーションおよび軌道力学など、他にも多くの応用がある。元々は三元数っていうものがないかという風に考えた。虚数単位を2個で、三次元空間を表せないか?という試みからスタートしたみたいだが、どうにもこうにも無理で試行錯誤した結果、3つならいける四元数というものにゴールした。種類の演算(加法、スカラー乗法、四元数の乗法)が入る。おけるスカラー倍として定義される。各元はこれら基底元の線型結合で表される。dkの形に一意に表される。dkと表すのが普通である。https://ja.wikipedia.org/wiki/四元数とりあえず、以下のような線形結合的なものを考えてみる。実数)ここまでは別に問題ない。次が最大の肝になってきて、意味わからなくなって、何回も見て見ぬふりしてきたポイント。kという風にも存在している。kがあってもいいし、そうした場合を考えてみようというのが今回の肝になる。kを理解するには一歩戻って三元数というものを考えてみる。以下の画像は複素数(二元数)のときの座標平面(複素平面)で、虚数単位iをかけると90度回転しているという風に幾何学的に理解することができる。[引用画像]https://qiita.com/SotaAsai/items/a662c5f4675a1b8985f2この複素数を拡張した体系を考えてみることにする。それは、実軸と虚軸に対して垂直な軸を考えて、以下のような条件が成り立つような虚数単位jを導入してみるということ。実軸と虚軸と垂直な軸を考えてみると、そのjにjをかけると-1になるということは手前に伸びてくる軸に対しても回転する幾何学的な意味を持っているのじゃないかという風に理解することもできる。[引用画像]https://qiita.com/SotaAsai/items/a662c5f4675a1b8985f2これがもしあったら便利そう。こんな三元数を考えてみたらどうなるのか?とハミルトンは考えてみたが、どうやらこの三元数では「乗法について閉じてない」ということがわかった。閉じてる、閉じてないという用語は群論などで出てくるが、閉じているとは三元数の乗法を考えて計算してみた結果、三元数に戻ってくるか?という意味とも言える。いった今後計算を考えていく上で便利な演算に対しての規則が三元数では足りてないという壁にぶち当たることとなった。4元数となるkという存在を考えてみると演算に対して都合が良くなることがわかったため、kが導入された。そのハミルトンが考えて行った思考プロセスについて説明してくれている人がいるので以下を参照。