Upload
vsugjim
View
1.492
Download
0
Embed Size (px)
Citation preview
速習 クォータニオン
沼口 繁
VSUG Leaders Summit 2008
VSUG Leaders Summit 2008
3D の世界での常識(らしい)
• 3次元での回転を扱うときに使うものらしい
• X, Y, Z の角度の表現でないらしい
• 外積とか、、、数学的要素が強いらしい
• 調べれば調べるほど、、、数学の世界に!
–外積、内積
–複素数、虚数、四元数
–オイラー角、ラジアン、法線ベクトル
–三角関数、行列計算、、、、
VSUG Leaders Summit 2008
ここはひとつ・・・
• 工学博士が書いた説明は難しい(知っているべき前提条件そのものも難しい)
• そこで、数学的な要素は別にして、、、
• 使い方とその概念だけでも知っておこう
• だって、ライトニングトーク(5分)だもの
VSUG Leaders Summit 2008
百聞は一見にしかず・・・
• 私たちは3次元にいながらも、かなり2次元的発想– 地図を読むことが得意な人でも難しい、、、、って、地図は2次元だから・・・(通常生活は、「天・地」が固定された3次元空間)
• おおよそ3次元の話を平面図上で書かれても、、、かなり想像力が必要
θ
B
●
βπ/2
●A
γ
θβ
B
●
π/2●A
VSUG Leaders Summit 2008
Quaternion in Secondlife
VSUG Leaders Summit 2008
Quaternion
• 右手の法則
– X, Y ,Z の方向
–回転の向き
• 反時計まわり
VSUG Leaders Summit 2008
Quaternion
• グローバル(ワールド)回転軸・座標軸
–東西・南北・天地みたいなもの
– ものが回転してもグローバル座標軸はかわらず
VSUG Leaders Summit 2008
Quaternion
• クォータニオンは <x, y, z> の 3 元数のオイラー角から求めることができ 4 元数の型をもつ
• 現在の位置をあらわす <0,0,0> をクォータニオンに変換したものを Qo、x軸を中心に 30度回転させるを意味する <30,0,0> をクォータニオンに変換したものを Qa とした場合
• 回転後の位置をあらわすクォータニオン Qb は
Qb = Qo X Qa
になる。現在の位置のクォータニオンに右から積算する
VSUG Leaders Summit 2008
Quaternion
• <30,30,30> は X軸で30度、Y軸で30度、Z軸で30度まわす、としたいが
• <30,30,30> をクォータニオンに変換して、現在位置のクォータニオンに右から積算すると
• なにか、、、おかしい
• 実は、<30,30,30> は、Z軸で30度まわし、その次に Y軸で30度、最後に X 軸で 30度を意味する
VSUG Leaders Summit 2008
Quaternion
• 実は、、、現在位置を表すクォータニオンに、回転させたい軸と角度のクォータニオンを「左」から積算すると、、、、
• ローカル座標軸・回転軸を中心にまわる!
グローバル座標軸 ローカル座標軸
VSUG Leaders Summit 2008
まとめ
• クォータニオンは X, Y, Z の角度から算出 (現実には2つの角度だけで目的位置までの回転を指定できる)
• 四元数のクォータニオンを直接いじることはあまりない
• 積算することで回転角度を加える
• 割り算することで回転角度を引く
• グローバル回転軸 (Z->Y->X)
• ローカル回転軸 (ロール、ピッチ、ヨー)
• 右手の法則 (正の向きと回転方向)
• WPF での実装は各自確認(笑
VSUG Leaders Summit 2008