サイトアイコン GAMEWORKS LAB

内積と外積

ベクトルの計算

通常の数学ではAとBを掛け合わせることでAのB倍のような数値が出せました。
しかしベクトルとベクトルの場合は掛け方によって角度などの値を出すことができます。

今回はゲームプログラムを作るのに必須と言える内積と外積について記載していきます。

※今回の記事は ↑ の図の三角形を例に書いていきます。

 

内積(スカラー積)

内積によって求められるものは 1つの値です。

ベクトルなので(X, Y)、又は(X, Y, Z)を持っているのですが、2つのベクトルの内積をとることで1つの値になります。

値(スカラー)のみを算出する計算なのでスカラー積とも呼ばれています。

内積の式

a・b = |a||b|cos θ

内積の計算は・の記号で表されます。
a・bと記載されている場合はベクトル a と c の内積を表します。

内積の計算を要素ごとに分解すると下記の式になります。

a・b = ax * bx + ay * by + az * bz

内積では X, Y, Zの成分をそれぞれ掛け合わせて足しています。
これだけで内積の計算が出来てしまいます。

内積の使いどころ

内積は a と b のベクトルの長さで割ると cos θ のみを抽出できます。

これにより a と b が向き合っているか?
前方の何°の視界に入っているか?

などの計算をすることができます。

又、三角関数を応用することで当たり判定などでもよく使います。

 

外積(ベクトル積)

外積によって求められるものは2つのベクトルに対して垂直なベクトルです。

ベクトルとベクトルを掛け合わせる事でもう一つのベクトルが出るのでベクトル積と呼ばれています。

外積の式

a x b = |a||b|sin θ

外積の計算は x の記号で表されます。
a x bと記載されている場合はベクトル a と c の外積を表します。

ベクトルが出るといったのに|a||b|sin θ となっていて?が出た人もいるんじゃないでしょうか?

実は外積で出るのは垂直なベクトルだけではありません。
長さが|a||b|sin θ の垂直なベクトルになります。

外積の計算を要素ごとに分解すると下記の式になります。

X = ay * bz – az * by
Y = az * bx – ax * bz
Z = ax * by – ay * bx

これで a と b に垂直なベクトルが出せます。

外積の使いどころ

外積はカメラの上方向を取得するときや法線を算出するときなどに使えます。
又、当たり判定などでも必要になってきます。

 

 

内積と外積はゲームプログラム(特に3D)では必須の知識になってきます。

応用されて使いどころや使い方も様々になってくるので必ず覚えるようにしましょう!

モバイルバージョンを終了