点积
译自:http://www.lighthouse3d.com/tutorials/maths/inner-product/
点积(内积)运算于两个向量,返回一个标量值。这是一种计算两个向量之间角余弦值的简单方法。
下面的等式展示了怎么计算向量v1,v2的的内积。点积操作通常使用符号“.”表示。
v1 . v2 = v1x*v2x + v1y*v2y + v1z*v2z
向量v1和v2之间角的余弦值之间的关系如下:
v1 . v2 = |v1| |v2| * cos(a)
如上所示,我们也可以知道的是,如果任何一个向量是零向量的话,两个向量的点积结果就是0。如果向量正交的话,它们的夹角就是90度啦。
下面是点积操作的一些特性:(满足交换律)
v1 . v2 = v2 . v1
v1 . (v2 + v3) = (v1 . v2) + (v1 . v3)
同样,可以用C语言的宏去定义点积:
#define innerProduct(v,q) \ ((v)[0] * (q)[0] + \ (v)[1] * (q)[1] + \ (v)[2] * (q)[2])