スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

行列(Matrix)のお話

二日間ほど前からViewやらProjectionやらの説明をダラダラしてきましたが・・・
そもそも行列ってなんなのさ?
マトリックスってなんなのさ?
って所に触れるのをすっかり忘れていました。

float4x4とか
Matrixとか
[0,0,0,0
0,0,0,0
0,0,0,0
0,0,0,0]
↑とか
こんなのがよくわかんないって人のための記事です。
知ってる人は読み飛ばしてください。

一体何?といわれると「座標を変換するための数字の羅列」といった感じです。

実際の計算方法は、float4にfloat4x4を適用するとして以下参照。

[a,b,c,d] に
1,A,,x
2,B,,y
3,C,,z
4,D,,w

をかける場合
1個目 ( ここ, , ,)
a*1
b*2
c*3
d*4
を足したもの。

2個目 ( ,ここ, , )
a*A
b*B
c*C
d*D
を足したもの。

3個目 ( , ,ここ , )
a*
b*
c*
d*
を足したもの。

4個目 ( , , ,ここ )
a*x
b*y
c*z
d*w
を足したもの。

となる。

ってことは

1,0,0,0,
0,1,0,0,
0,0,1,0,
0,0,0,1

という行列は「なーんにもしない行列」ってことになりますよね。
こいつを基準に考えてやるとよさそうです。


ではなんかトランスフォームしてみよう!ってことで「移動」「拡大縮小」「回転」に触れてみます。
変換を重ねる場合は必ず「拡大縮小」「回転」「移動」の順番で行わないとおかしなことになります。

「移動してください行列」
1,0,0,0,
0,1,0,0,
0,0,1,0,
X,Y,Z,1
XとYとZにそれぞれ移動して欲しいだけの値を入れます。


「大きさ変わってください行列」
X,0,0,0,
0,Y,0,0,
0,0,Z,0,
0,0,0,1
XとYとZにそれぞれ拡大比率を入れます。その軸にあわせた拡大縮小をします。

「くるくるしてください行列」
軸によって違います。以下参照。
ちなみにsin(0)=0 cos(0)=1も頭に入れておくと便利。

X軸回転
1, 0, 0, 0,
0, cosθ,sinθ, 0,
0,-sinθ,cosθ, 0,
0, 0, 0, 1

Y軸回転
cosθ, 0,-sinθ, 0,
0, 1, 0, 0,
sinθ, 0, cosθ, 0,
0, 0, 0, 1

Z軸回転
cosθ,sinθ, 0, 0,
-sinθ,cosθ, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1

↑の回転行列に関する訂正記事を次の日に書いています。注意してください。


色分けに時間かかったわりに読み返すと内容が薄っぺらい。。。
ねよっと。

コメントの投稿

非公開コメント

プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。