Vector Product

內積與外積

電腦做運算時,常會有浮點數誤差的問題。為避免浮點數誤差的問題,用電腦計算幾何問題時,會採用不同於一般數學運算時所用的公式和定理。

內積(inner product、dot product)、外積(outer product、cross product)這兩個運算只用了加法和乘法,而不包括除法,故能有效的避免除法所產生的浮點數誤差。內積與外積有許多很有用的特性。大部分的幾何問題,都可以用內積與外積來計算答案。

此處僅作簡單介紹。不失一般性,以下都用二維空間當作範例。

資料結構

內積與外積是向量運算,所以得設計一個向量的資料結構。

向量資料結構擁有一個座標,並擁有一支內積函式與一支外積函式。

兩個向量做內積的結果是一個純量。兩個向量做外積的結果為一個向量,然而我們通常只會用到純量部份,所以讓外積函式的回傳值為純量。

內積、外積跟長度的關係

內積後取絕對值,求得的是投影量,再除以投影標的的單位向量,則得到投影長度。

外積後取絕對值,求得的是平行四邊形的面積量,再除以底的單位向量,則得到高。

內積、外積跟角度的關係

注意到acos與asin的回傳值,回傳的結果是弳度量(radian)而非度度量(grade),而且回傳值的範圍也不同。一般都以內積與acos求得介於0˚到180˚之間的夾角大小。

內積與向量夾角

利用內積的性質,可以粗略判斷夾角大小:內積大於0時,兩向量夾角小於90˚;等於0時,夾角等於90˚;小於零時,夾角大於90˚且小於180˚。

外積與向量旋轉

外積大於0時,兩向量前後順序為逆時針順序(在180˚之內);等於0時,兩向量平行,也就是指夾角等於0˚或180˚;小於0時,兩向量前後順序為順時針順序(在180˚之內)。