もきもき3D

アクセスカウンタ

zoom RSS LWでの回転行列メモ1

<<   作成日時 : 2009/08/19 03:40   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

私的メモなので間違ってる可能性が高いです。
世に僅かにある情報の断片の泡沫の一つとしてメモ(;・з・)

基本的にmat[3][3]として。
[0]:[0][1][2]
[1]:[0][1][2]
[2]:[0][1][2]

●iteminfo->param(LWIP_RIGHT/UP/FORWARD)の戻りをrt[3],up[3],fw[3]として、
○[0][0]=rt[0], [0][1]=rt[1]...のように素(横方向)に代入すると
   [X Y Z]
 [0][0][1][2] rt→
 [1][0][1][2] up→
 [2][0][1][2] fw→

となり、D3Dの(?)行列になる。 その正式な呼称は不明、便宜上D3Dモデルと呼ぶ。

・radianを行列に変換する際は応じた要素にcos(radian),sin(radian)を突っ込む。
Head回転(Y軸回転)
 [0][0]= cos [0][2]=-sin
 [2][0]= sin [2][2]= cos

Pitch回転(X軸回転)
 [1][1]= cos [1][2]= sin
 [2][1]=-sin [2][2]= cos

Bank回転(Z軸回転)
 [0][0]= cos [0][1]= sin
 [1][0]=-sin [1][1]= cos

○[0][0]=rt[0], [1][0]=rt[1]...のように縦方向に代入すると
X [0][0][0][0]
Y [1][1][1][1]
Z [2][2][2][2]
   rt up fw
   ↓ ↓ ↓

となり、OpenGLの(?)行列になる。 便宜上OGLモデルと呼ぶ。

・radianを行列に変換する際は応じた要素にcos(radian),sin(radian)を突っ込む。
Head回転(Y軸回転)
 [0][0]= cos [0][2]= sin
 [2][0]=-sin [2][2]= cos

Pitch回転(X軸回転)
 [1][1]= cos [1][2]=-sin
 [2][1]= sin [2][2]= cos

Bank回転(Z軸回転)
 [0][0]= cos [0][1]=-sin
 [1][0]= sin [1][1]= cos

※D3DとOGLでは行列の縦横の違いから、sinと-sinの入る先が入れ替わる事になる。

●LWではradian値から行列を作る場合、BPHの順で掛ける。
行列の乗算処理は、
for(i = 0; i < 3; ++i)
 for(j = 0; j < 3; ++j)
  state;
 として、
○D3Dでのstate;は
m[i][j] = (m1[i][0] * m2[0][j]) + (m1[i][1] * m2[1][j]) + (m1[i][2] * m2[2][j]);

○OGLでのstate;は
m[j][i] = (m1[0][i] * m2[j][0]) + (m1[1][i] * m2[j][1]) + (m1[2][i] * m2[j][2]);

となる。

続く。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
LWでの回転行列メモ1 もきもき3D/BIGLOBEウェブリブログ
文字サイズ:       閉じる