扩展眼界iOS 开发 unity3D技术分享

3D图形:向量的相关计算

2016-10-08  本文已影响618人  神经骚栋

遗言


恩,你没听错,就是遗言,因为大学的时候是一名学渣,没有好好学习3D图形相关的几何知识.现在用到了,才感到其强大之处,所以买了书学习一下,希望亡羊补牢,为时未晚.同时我深知这本书的枯燥之处,可能让我看完,我可能就有可能就挂了,但是不管了,就是直接搞起.不过我要事先声明,由于是重新学习,所以在文章不能面面俱到.本专题只为本人日后寻找资料时提供帮助,非解读性博客.谢谢大家.

向量运算


要得到任意维度向量的负向量,只需要简单地将向量地每一个分量变负即可.数学表达式如下.

-[a1,a2,...,an-1,an] = [-a1,-a2,...,-an-1,-an]

负向量的几何意义:向量变负,就会得到一个与原向量大小相等,方向相反的向量.如下所示.

</br>

一个2D向量的长度计算还是很简单的,直接把向量的各个分量的平方加起来然后进行开方得到的数值就是向量的模.数学表达式如下.

‖ν‖ = √(v1²+v2²+...+vn-1²+vn²)

其实我们常用的只有2D和3D的向量的模的计算,数学表达式如下所示.

//2D向量的模
‖ν‖ = √(vx²+vy²)

//3D向量的模
‖ν‖ = √(vx²+vy²+vz²)

几何解释:我们其实就是利用了以向量为斜边的直角三角形,通过勾股定理推导出向量的模.如图所示

标量与向量的乘法也是简单除暴,我们只需要把标量和向量中的每一个分量相乘即可.数学表达式如下所示.

κ [a1,a2,...,an-1,an] = [κa1,κa2,...,κan-1,κan]

几何解释:一个标量κ乘以一个向量可以看做是这个向量的缩放变换.缩放了κ倍.如图所示.

法线就是单位为1的向量,也称之为单位向量或者是标准化向量.对于任意的非零向量ν都可以计算出与它方向相同的单位向量.计算方式很简单,只要用向量除以它的模即可.数学表达式如下.

ν0 = ν  /  ‖ν‖ ,ν ≠  0

几何解释:在向量ν的尾部简历坐标系,然后做单位圆,做一向量ν0与ν方向相同,尾部与原点相交,终点交于单位圆的一点.ν0就是ν的法线.


两个维度相同的向量的加减法很简单,将对应的分量做加减法即可.减法也可以解释为加负向量,a-b=a+(-b),注意的是加法满足交换律,但是只有两个向量相同的时候才满足交换律

 [a1,a2,...,an-1,an]  +  [b1,b2,...,bn-1,bn] = [a1+b1,a2+b2,...,an-1+bn-1 ,an+bn]

 [a1,a2,...,an-1,an]  -  [b1,b2,...,bn-1,bn] = [a1-b1,a2-b2,...,an-1-bn-1 ,an-bn]

几何解释:平移两个向量,使一个向量a的尾部和另外向量b的头部相交,然后从向量b的尾部向向量a的头部画一个向量.这就是两者相加所得到的向量.这也是向量加法中的"三角形法则".加法类似.

"点乘"说的就是来自记法a·b中的点号.注意的是向量点乘中不能省略点乘号.向量点乘就是对应分量乘积的和,结果是一个标量.其数学表达式如下.

 [a1,a2,...,an-1,an]·[b1,b2,...,bn-1,bn] = a1b1 + a2b2 +...+ an-1bn-1 + anbn

几何解释:点乘描述的是两个向量的相似程度,点乘的结果越大,两向量越相近.

v·u 角度α v与u
>0 0°≤α<90° 方向基本相同
0 α=90° 正交
<0 90°≤α<180° 方向基本相反

与向量的点乘一样,"叉乘"来自记法中的a x b的叉号,叉号也是不能省略的.叉乘的结果不再是一个标量,而是一个向量.具体的数学表达式如下所示.

 [x1,y1,z1] x [x2,y2,z2] = [y1z2-z1y2, z1x2-x1z2, x1y2-y1x2];

对于叉乘的计算,我特意问问了以前的同学(我说过自己是学渣.😂)然后,就有了下面的几张叉乘讲解图.

两个向量的叉乘用行列式进行表示,其中呢,i , j ,k 是x,y,z轴的单位向量.当然了,当向量有具体的数值时候,i , j ,k 可以省略.


行列式中的具体运算规则如下所示,先是红再是蓝再是紫的顺序.没有箭头指向的乘积就是被减的那个.

几何意义:两个向量的叉乘得到的向量是垂直于原来的两个向量的.叉乘的应用就是用来床架创建垂直于平面,三角形,或者多边形的向量.


好了,向量的相关计算就说到这了.最后送上一点小福利:<<3D数学基础 图形与游戏开发>>的pdf版
<<3D数学基础 图形与游戏开发>>传送门
上一篇下一篇

猜你喜欢

热点阅读