[Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)

Unity使用左手坐标系:拇指X轴,食指Y轴,中指Z轴。

    [Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)_第1张图片                    [Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)_第2张图片

计算公式:

设 A(Ax,Ay,Az)  B(Bx,By,Bz),则

1.向量的模:\left | A \right | = \sqrt{x^2+y^2+z^2}

2.向量加法:\vec{A} + \vec{B}=(Ax+Bx,Ay+By,Az+Bz)

3.向量点积:\vec{A} \cdot \vec{B}=Ax*Bx+Ay*By+Az*Bz = \left | A \right |*\left | B \right |*cos<\vec{A} , \vec{B}>

4.向量叉积:\vec{A} \times \vec{B}=(Ay*Bz-Az*by,Az*Bx-Ax*Bz,Ax*By-Ay*Bx)=\vec{C}

物理(几何)意义:

1.模:就是向量的长度。

2.加减:是位移,遵循三角形法则。

[Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)_第3张图片[Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)_第4张图片

3.点积:结果是一个标量(数值,有大小无方向),满足交换律。

是一条边向另一条边的投影乘以另一条边的长度。

点积为0则两向量垂直,大于0是锐角(越大角度越小),小于0是钝角(越小角度越大)。

[Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)_第5张图片 点积为0:平飞。 [Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)_第6张图片 点积大于0:爬升。正值增大,抬头。 [Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)_第7张图片 点积小于0:俯冲。负值增大,低头。

点乘结果描述了两个向量的“相似”程度,点乘结果越大,两向量越相近。

因为a•b = |a||b|cosθ

所以如果a和b都是单位向量,那么点乘的结果就是其夹角的cos值。

a•b = cosθ

由于cos在0~π上单调调减,因此可以比较cos值来达到比较夹角的效果。

4.叉积:结果是一个新的向量。

原向量是大拇指X和食指Y,新向量是中指Z(左手)。

叉积不满足交换律,即a×b≠b×a。实际上,叉积是满足反交换律的,即a×b=-(b×a)。而且叉积也不满足结合律,即 (a×b) ×c≠a×(b×c)

|a×b|=|a||b|sinθ,这和平行四边形的面积计算公式是一样的:

[Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)_第8张图片

在Unity中:

1.计算向量的模:Vector3.magnitude

2.计算向量点积:Vector3.Dot(VectorA, VectorB)

3.计算向量叉积:Vector3.Cross(VectorA, VectorB)

你可能感兴趣的:(Unity3D,unity,3d,c#,游戏开发)