耀哥教你做游戏--向量

发表于2018-02-28
评论1 2.1k浏览

向量也被称为矢量,是所有3D 游戏引擎的重要基础,可以用来表示空间中的点,比如游戏中的物体的位置或者三角网格的顶点。向量还可以用来表示空间中的方向,比如相机的方向或者三角网格的表面法向量,数量掌握向量运算是3D图形程序员的基本技能。

 

1.    向量的性质

用实数的N元数组表示向量

n维向量可以表示为  V=<V1,V2,......,Vn>

 

向量和标量的乘法/除法

只要把向量的每一个分量和标量进行相乘或者相除即可

标量a与向量V乘积

aV = Va = <aV1, aV2,......, aVn>

 

向量的加法、减法

向量的加法和减法是按分量逐个相加或相减完成的,结果是一个相同维度的新向量

向量P,Q相加

P+Q = <P1+Q1, P2+Q2, ....... , Pn+Qn>

 

向量加法的三角定则

 

向量的模

|V| =

 

模是一个标量 向量的绝对值有时也成为向量的范数或者长度

绝对值为1的向量成为单位向量

单位向量也被成为被归一化向量,向量转换为单位向量的过程被称为归一化/规范化

任意非零向量给该向量乘以1/|V|将其变为单位向量

|P| >= 0

|aP| = |a||P|

 

零向量 每一个分量都为0, V=(0,0,0)不能被归一化

 

 

 

2.      向量的点积

也被称为向量的内积或者标量积,是3D图形学中应用最多的概念之一

两个N维向量PQ的内积可以表示为P·Q,是一个标量,相当于每一个分量乘积的和

P·Q =  = PxQx + PyQy + PzQz

 

也可以表示为矩阵乘积

[]

 

给定任意两个n维向量,点积满足以下等式

P·Q = |P| |Q| COSa

根据余弦定理

|P-Q| = +  - 2|P||Q|COSa

 

=  +  - 2|P||Q|COSa

 = - 2|P||Q|COSa

Pi·Qi =  = |P||Q|COSa

 

可以得出结论P·Q=0COSa=0 两个向量相互垂直,零向量与任意向量相互垂直

向量内积的符号反应了两个向量的指向方向

两个向量的内积反应了这两个向量位于平面的同侧还是异侧

 

点积的几何意义

点积几乎应用到图形学的各个方面,一个重要几何意义就是投影

a·b等于ba方向上的投影 再乘以a的长度

 

给定任意向量PQR  标量a

性质一:点积可结合标量乘法

(aP)·Q = a(P·Q) = P·(aQ)

 

性质二:点积可结合矢量加减法

P·(Q+R= P·Q + P·R

 

性质三:向量与本身的点积等于 该向量模的平方

P·P =

 

|P|COSa =

与向量Q平行 可以用该向量的长度乘以单位向量Q/|Q|获得

P在向量Q上的投影表示为

ProjP =      Q

 

 

3.  向量的叉积

也成为向量的外积,两个向量的外积可以产生一个垂直于这两个向量的新向量,叉积的结果是一个矢量

一个应用是给定物体表面一点和两个不同的切向量,计算出物体表面在该点的法线。

 

定理:给定两个三维向量PQ,它们的外积可以写为P x Q

 

P x Q = <PyQz - PzQy, PzQx - PxQz,  PxQy - PyQx>

 

P x Q = |P||Q|SINa

 

= ()

=

=

 

叉积不满足交换律

 

P x Q也可以写成矩阵与向量的乘积形式

 

P x Q右手坐标系判断,右手手指方向与向量P方向对齐,手掌朝向向量Q的方向拇指所指方向就是向量P与向量Q的外积P x Q的方向

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签:

0个评论