一、简介
点乘,也称为数量积或内积,是向量运算中的一种。它将两个向量的长度相乘再乘以它们夹角的余弦值。简单来说,点乘可以得出两个向量之间的夹角余弦值以及一个标量的积。
二、点乘公式
点乘公式如下:
a · b = |a| × |b| × cosθ
其中,a、b均为向量,|a|、|b|分别为向量a、b的模,θ为向量a、b的夹角。
三、点乘的应用
1. 向量投影
向量投影是点乘的一种常见应用。如果我们想要知道一个向量a在另一个向量b上的投影长度,可以通过点乘公式求解。
假设向量a的长度为|a|,夹角为θ,则𝕒b的投影长度为:
|a|cosθ
即a在𝕓b方向上的长度。
2. 向量夹角
当我们需要计算两个向量之间的夹角时,点乘同样是一个非常有用的工具。夹角θ的计算公式如下:
cosθ = (a · b) / (|a| × |b|)
通过点乘公式,可以得出a、b两个向量的点积,而|a|、|b|则表示向量的模长。这样就可以求解出两个向量之间的夹角。
3. 计算平行四边形面积
通过点乘还可以计算平行四边形的面积。假设a、b为平行四边形的两条边,则它们的点积的绝对值就是平行四边形的面积:
S = |a · b|
当然,需要注意的是,这种方法只适用于平行四边形。
四、代码示例
1. 向量投影的代码实现
vector proj(vector a, vector b) { float dot = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; float len = sqrt(b[0] * b[0] + b[1] * b[1] + b[2] * b[2]); vector res = { dot * b[0] / len, dot * b[1] / len, dot * b[2] / len }; return res; }
上述函数中,a、b分别表示两个向量,其中a[0]、a[1]、a[2]表示a向量的x、y、z分量,b[0]、b[1]、b[2]分别表示b向量的x、y、z分量,dot表示它们的点积,len表示向量b的模长。通过点乘公式,我们可以得出a向量在b向量上的投影向量res。
2. 向量夹角的代码实现
float angle(vector a, vector b) { float dot = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; float len_a = sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]); float len_b = sqrt(b[0] * b[0] + b[1] * b[1] + b[2] * b[2]); return acos(dot / (len_a * len_b)); }
上述代码中,a、b分别代表两个向量,dot表示它们的点积,len_a和len_b分别表示向量a、b的模长,acos函数可以求出它们之间的夹角角度。
3. 计算平行四边形面积的代码实现
float area(vector a, vector b) { return sqrt(pow(a[1] * b[2] - a[2] * b[1], 2) + pow(a[2] * b[0] - a[0] * b[2], 2) + pow(a[0] * b[1] - a[1] * b[0], 2)); }
上述代码中,a、b分别表示平行四边形的两条边,求解公式为|a · b|。可以通过向量叉积的方式计算得出平行四边形的面积。