2007年09月05日

クォータニアン代数

挫折、理解できません。

プログラム上での最低限の使い方は理解した。
虚数単位の拡張版らしく、クォータニアンとは

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
posted by HAL at 23:56| Comment(0) | プログラミングメモ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。