ゲームプログラミングから見る数学 #4 ~行列・前編~

こんにちは。インターン生の小野です。

いよいよ第4回の記事となりました。今回のテーマは『行列』です。
高校でも扱わないことがあるので知らない方も多いと思います。
早速やっていきましょう。

まず、行列とはこのような形をしています。

数字が4つ書いてありますね。
数字が2×2で並んでいるため、これを2×2行列と呼びます。
行列は基本的に、ベクトルに対して計算します。
今回は例として、ベクトル(2, 3)を考えます。

このように掛け算を行います。ベクトルは縦に書きます。
行列とベクトルの計算は次のようにします。

分かりやすいように色をつけました。
計算結果から、(8, 18)という新しいベクトルが出てきました。
このように、行列とは「ベクトルから新しいベクトルを作り出す計算」のことを指します。
プログラミングでいう関数のようなものです。

さて、次の例を見てみましょう。

(3, 4)というベクトルが、(9, 8)というベクトルに変換されました。
これをみて気づくことはないでしょうか。
3 × 3 = 9
4 × 2 = 8
行列の数字の分だけ拡大されたベクトルになっています。
右上と左下が0の行列は、特定の量だけ拡大する行列となります。

次の例は、ゲームにおいて特に重要な行列です。
それは、回転行列と呼ばれるものです。
その名の通り、ベクトルを回転させる行列のことです。

回転行列は、このような形をしています。
三角関数がここでも出てきます。
この行列を掛けると、原点を中心として回転する、という性質があります。

今回は(4, 0)のベクトルを90度回転してみました。
sin90°= 1、cos90°= 0なので、
結果は(0, 4)と、確かに90度回転しています。

このように、掛ける行列によっては、拡大縮小や回転といったベクトルの変換ができるのです。
キャラクターを動かす処理が三角関数なら、行列はキャラクターそのものを変化させる処理、と言えます。

さて、ここまで行列についてみてきましたが、正直行列で計算を行うことのメリットがわからないと思います。
それもそのはず、行列計算が最も使われているのは、2次元ではなく3次元空間での3Dグラフィックの処理なのです。
3Dモデルを描画するためには、行列による計算は必要不可欠です。
次回は、3Dモデルの描画に行列がどのように使われているか書いていきたいと思います。

今回はここまでです。
次回が最終回ですが、最後まで読んでいただけると嬉しいです。

興味を持たれた方はお気軽にお問い合わせください。

インターンシップへの申し込み・お問い合わせ先

インターンシップへの申し込み・お問い合わせ先
メールでのお問い合わせは、下記フォームに入力して送信してください。
ご氏名 (例)山田 太郎
メールアドレス 半角英数字:ご入力間違いのないようにご注意ください
メールアドレス(確認用) 半角英数字:ご入力間違いのないようにご注意ください
電話番号 (例)0354339211 ※ハイフン抜きで入力してください
題名
お問合わせ内容

アーカイブ

カテゴリー