Unity3D 中常用的向量运算
那么接下来来看一看在游戏开发过程中常用的一些向量运算
向量的叉积 / 叉乘
叉积的定义(cross product)
叉积的计算结果依然是一个向量,叉积只能用于3D向量的运算,2D向量没有叉积 。
通过对两个3D向量 U 和 V 来计算叉积 我们则可以得到一个新的向量 向量 W
结果向量 W 同时垂直于 U 与 V 向量
众所周知 在Unity3d 引擎中遵循左手坐标系
左手拇指法则
抬起左手,将拇指之外的其他四个手指指向 第一个 向量的方向U ,然后朝着V的方向沿角度0< α < Π
卷曲手指, 此时拇指所指向的方向即为新的向量 W 的方向。
//向量叉积的运算
u = (ux,uy,uz)
v= (vx,vy,vz)
u x v = (uy*vz-uz*vy , uz*vx-ux*vz , ux*vy-uy*vx)
叉积的作用
1. 可以计算一个平面的 法线(垂直于一个平面的向量)
2. 可以判断一个物体在你左侧还是右侧
向量的点积(Dot Product)
定义:
向量的点积是一个标量 因此有时候 点积又被称之为 标量积(saclar product)
点积的运算
u = (ux,uy,uz)
v= (vx,vy,vz)
u·v = ux*vx + uy*vy + uz*vz
余弦定理
u·v = |u||v|cos(α)
注意 当我们提到两个向量的夹角的时候 我们指的是最小角 0 < α < Π
(而且这两个向量必须是共起点)
几何性质
u·v = 0 u 和 v 互相垂直
u·v > 0 u 和 v 的夹角小于90°
u·v < 0 u 和 v 的夹角大于90°