向量的点乘

向量的点乘

  • 向量的点乘 a * b
  • 可以使用点乘获取两个向量的前后位置,如下图所示
  • 案例一(案例中将y去掉,相当于俯视坐标系之后x,z):
  • 此时判定这里a是在b的前面的位置,为什么这么说是因为cos曲线告诉我们在夹角小于90°时 cos大于0,反之小于0,所以我们可以用点乘来计算向量的位置。注意如果此时点乘结果为0是代理两个向量垂直。
  • 总结,Vector3.Dot(x,y) > 0 代表y在x的前面,反之则y在x的后面,判断左右时找一个与之垂直的即可得到左右,方法同理。

向量的点乘 a * b

高中数学中我们可以得到公式 a * b = |a| * |b| * cos

可以使用点乘获取两个向量的前后位置,如下图所示

向量的点乘_第1张图片
向量的点乘_第2张图片

案例一(案例中将y去掉,相当于俯视坐标系之后x,z):

 Vector3 a = new Vector3 (1,0,2);

 Vector3 b = new Vector3 (2,0,1);

	// Use this for initialization
void Start () {
    	Debug.LogError(Vector3.Angle(a,b));//36.8699

        Debug.LogError(Vector3.Dot(b,a));//4

        Debug.LogError(Vector3.Dot(b,d));//-5

        Debug.LogError(Vector3.Dot(a,d));//-4

        Debug.LogError(Vector3.Dot(b,c));//3
}

上面的代码中我们可以看出来 ∠aob = 36.8699°
根据点乘公式:向量a * 向量b = |a| * |b| * cos36.8699° = 根5 * 根5 * cos36.8699° = 4;

此时判定这里a是在b的前面的位置,为什么这么说是因为cos曲线告诉我们在夹角小于90°时 cos大于0,反之小于0,所以我们可以用点乘来计算向量的位置。注意如果此时点乘结果为0是代理两个向量垂直。

总结,Vector3.Dot(x,y) > 0 代表y在x的前面,反之则y在x的后面,判断左右时找一个与之垂直的即可得到左右,方法同理。

你可能感兴趣的:(Unity,Unity向量点乘,向量运算,点乘)