ぬるぽを見かけたら 全力でぶっ叩くのみ


by Denullpo Smasher Hammerson
カレンダー
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

2D,3Dプログラミング向け我流数学 其之壹

2D,3D問わず、画像を動的に処理するためには座標等の計算、即ちベクトルや
マトリクスを使いこなすことが肝要。
このうち、ベクトルについては特に説明なくてもどんなものかすぐ理解できると思う。
単なるスカラ値の集合だかんね。座標とか向きとか、位置関係を表す何か。
或いは、色のRGB値とか。単純明快。

では、マトリクスとは何か。
ベクトル値の集合であることと、計算方法ぐらいは高校数学で教わるものだが、
実際に何を意味しているのかまで理解している御仁は意外と少なげ。

その答えは、ベクトルとマトリクスの乗算にある。
ベクトルにマトリクスをかけると、計算結果はベクトルで表れる。
例えば、位置ベクトルに回転マトリクスを乗算して、回転後の位置を得る。
つまり、ここでの両ベクトルは入力と出力の関係であり、マトリクスはベクトルを
処理する何かという位置付けになる。
で、大事なのはここから。



マトリクスを構成する各スカラ値について、ベクトルを意識しつつそれぞれの
行と列に対応するような命名をしてみるです。
例えば、ベクトル(X,Y)を入力としてマトリクスを乗算する式は下記のようになる。
a0101404_185595.gif

入力値がどんなプロセスで出力されるのかが一目で判るっしょ?
出力側、大文字Xの隣には必ず小文字xが付いている。Yも然り。
また、末尾の文字は必ずベクトル内のスカラ値名に対応している。
つまり、マトリクス内のスカラ値xyは、
入力Xが出力Yに与える影響(倍率)
を意味している。
この考え方は3Dな計算で使う4x4マトリクスでも同じ。
a0101404_1172829.gif

=(Xxx+Yyx+Zzx+Wwx, Xxy+Yyy+Zzy+Wwy, Xxz+Yyz+Zzz+Wwz, Xxw+Yyw+Zzw+Www)
(出力側は長いので外した。改行うまくいかにゃ)

ベクトルを右から乗算する手法の場合、行と列の意味が入れ替わる
a0101404_111310.gif

今度は、マトリクス内のスカラ値xyが、
入力Yが出力Xに与える影響(倍率)
と変わる。
ベクトル掛ける方向を逆にするときマトリクスを転置するのはこゆわけ。

で、こーやって考えてみると、何故単位マトリクスが
a0101404_1114365.gif

という形になるのかもすぐ解るっしょ?
入力と出力が同じになるという観点で。

ちうことで、この法則さえ頭に入っていれば、いろいろと応用利くようになるです。

(きっと続く)
[PR]
by denullpo | 2008-04-06 01:28 | こっち関係