プログラム上での最低限の使い方は理解した。
虚数単位の拡張版らしく、クォータニアンとは
q=s+tI+uJ+vK(s,t,u,vは実数)
or
q=<s;V>(sは実数、Vは三次元の位置ベクトル)
で定義される数らしい。ただしこの時
I*I=J*J=K*K=I*J*K=-1
とする。
三種類の虚数単位と実数で表されたこの数は四元数とも呼ばれる。
これにしっかり則って計算すると一定の法則でもって掛け算が定義できます。
詳しい説明が全くもって意味不明だったのだが最終的にこう定義すると
点の任意の軸周りの回転を簡単に表現できるらしい。
例えばある点Pをrに関してθ回転させる式は
P=<0;Vector(P)>,Q=<cos(θ/2);sin(θ/2)Vector(r)>,Q*=<cos(θ/2);-sin(θ/2)Vector(r)>として、
P'=QPQ*
で表せる、これならPCで計算させるのも楽ちんですね。
二つに分ける理由はあまりちゃんと理解できなかった。
しかしハミルトンさん(?)が考えたらしいんですがよくもまぁ…
ガウス平面を三次元に拡張できたら嬉しいのにと思いはしたが
よくよく見つけたものですね、すげーー。
いや、何が嬉しいかっていうと一定の計算法則でもって
複雑な移動処理を実装できるのがすばらしいと思うわけです。
ポイントは回転と拡大と位置が同じ『数』で表せるところにあるんだとか。
まぁ理屈はよくわからんのだけどね。
とりあえず回転だけは使えるようにしておいたのでいいかなぁと。
応用するとキャラクターの姿勢制御が楽チンみたいです。
一回作っちゃえば別に数学の中身なんて理解しなくてもいいんだけどさ。
いや、久々にこー数学が面白いんだが頭が弱っててうぇっうぇww
【関連する記事】