向量的点乘

向量的点乘 a * b

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

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

在这里插入图片描述
在这里插入图片描述

案例一(案例中将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<a,b>大于0,反之小于0,所以我们可以用点乘来计算向量的位置。注意如果此时点乘结果为0是代理两个向量垂直。
总结,Vector3.Dot(x,y) > 0 代表y在x的前面,反之则y在x的后面,判断左右时找一个与之垂直的即可得到左右,方法同理。
发布了62 篇原创文章 · 获赞 5 · 访问量 3902

猜你喜欢

转载自blog.csdn.net/qq_42194657/article/details/103889992