ベクトル その6 -ドット積-


ドット積
ベクトルには2つの掛け算方法がある。
そのひとつが「ドット積」または「内積」と呼ばれる。
ドット積とはベクトルの内積を表現するときにa \cdot bとなるためにこう呼ばれる。
ベクトルのドット積は足し算引き算より優先順位が高い。
ベクトルとスカラー値を掛け算する場合、ドットを省略する場合が多いが、ベクトルの内積を計算するときは省略をしない。
公式:\left[  \begin{array}{c}  a_1\\  a_2\\  \vdots\\  a_{n-1}\\  a_n  \end{array}  \right]  \cdot  \left[  \begin{array}{c}  b_1\\  b_2\\  \vdots\\  b_{n-1}\\  b_n  \end{array}  \right]  =  a_1 b_1 + a_2 b_2 + \cdots + a_{n-1} b_{n-1} + a_n b_n
または
\displaystyle  a \cdot b =  \sum^{n}_{i=1}a_i b_i

例:
2D
[\begin{array}{cc}-5 & 8\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (-5)(4) + (8)(7) = -20 + 56 = 36
3D
\left[  \begin{array}{c}  1\\  -4\\  3  \end{array}  \right]  \cdot  \left[  \begin{array}{c}  -7\\  6\\  2  \end{array}  \right]  =  (1)(-7) + (-4)(6) + (3)(2) = -7 + (-24) + 6 = -25

ベクトルのドット積は2つのベクトルがどれくらい似ているかを示す。
ドット積が大きければ大きいほど2つのベクトルは似ている。

下記は「例:2D」を図示したもの。

参考:[\begin{array}{cc}-5 & 8\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (-5)(4) + (8)(7) = -20 + 56 = 36

下記はX、Y共に同じ方向を向いている場合。

[\begin{array}{cc}2 & 8\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (2)(4) + (8)(7) = 8 + 56 = 64
最初の例より値が大きくなった。

同一ベクトルの場合。

[\begin{array}{cc}4 & 7\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (4)(4) + (7)(7) = 16 + 49 = 65
同じベクトルになると、さらに値が大きくなった。

Y成分だけ真逆の場合。

[\begin{array}{cc}4 & 7\end{array}]\cdot[\begin{array}{cc}4 & -7\end{array}] = (4)(4) + (7)(-7) = 16 + (-49) = -33
X成分が同じものの、Y成分の差が大きいため、かなり値が小さくなった。

真逆のベクトルの場合。

[\begin{array}{cc}-4 & -7\end{array}]\cdot[\begin{array}{cc}-4 & -7\end{array}] = (-4)(4) + (-7)(7) = -16 + (-49) = -65
全てが真逆のため、2番目の真逆の値を示した。

X成分だけ真逆の場合。

[\begin{array}{cc}-4 & 7\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (-4)(4) + (7)(7) = -16 + 49 = 33
Y成分だけ真逆の時の値を反転させた値となった。
X成分が違うものの、Y成分が同じため、比較的大きい値になった。

AOBが直角の場合。

[\begin{array}{cc}-7 & 4\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (-7)(4) + (4)(7) = -28 + 28 = 0
a \cdot bのドット積が直角の場合、0になる。

ベクトルの内積の幾何学的解釈
公式:a \cdot b = \|a\|\|b\|cos\theta
ドット積はベクトルの大きさとベクトルのなす角ののcosを掛けたものと等しくなる。

ベクトルのなす角を2つのベクトルから求める
公式:\theta = arccos\displaystyle\left(\frac{a \cdot b}{\|a\|\|b\|}\right)
aとbの単位ベクトルを掛けたものにarc cosinで求めているだけなので、aとbが既に単位ベクトルの場合は分母を省略可。
その場合は
公式:\theta = arccos(a \cdot b)
となる。
※arccos(x)はarc cosin(アークコサイン)の意。
また、この場合\thetaは度数法ではなく、弧度法なので単位はラジアンとなる。
公式:360^\circ = 2\pi

再び2Dの時に使ったベクトルを元に計算すると、
  \begin{array}{ll}  \theta &= \displaystyle{arccos\left(\frac{a \cdot b}{\|a\|\|b\|}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{[\begin{array}{cc}-5 & 8\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}]}{\|[\begin{array}{cc}-5 & 8\end{array}]\|\|[\begin{array}{cc}4 & 7\end{array}]\|}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{(-5)(4) + (8)(7)}{\sqrt{(-5)^2+8^2}\sqrt{4^2+7^2}}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{-20 + 56}{\sqrt{25+64}\sqrt{16+49}}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{36}{\sqrt{89}\sqrt{65}}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{36}{\sqrt{5785}}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{36}{76.059}\right)}\\[1em]  &= arccos(0.4733)  \end{array}
三角関数表により
arccos(0.4733)\fallingdotseq62^\circ

角度による関係

a \cdot b \theta 角度 aとbの関係
> 0 0^\circ \leq \theta < 90^\circ 鋭角 同じ向き、あるいは同じような方向に向いている。
= 0 \theta = 90^\circ 直角 直交している。
< 0 90^\circ < \theta \leq 180^\circ 鈍角 真逆、あるいは反対側の方向に向いている。

実例で学ぶゲーム3D数学

著者/訳者:Fletcher Dunn Ian Parberry

出版社:オライリージャパン( 2008-10-04 )

定価:

Amazon価格:¥ 3,672

大型本 ( 484 ページ )

ISBN-10 : 4873113776

ISBN-13 : 9784873113777


Post to Twitter

, ,

  1. No comments yet.
(will not be published)