OpenGL学习之3D数学

2019-05-28  本文已影响0人  懿轩加油

一:向量的记法

向量的记法.png

通常使⽤下标法来引⽤向量量的某个分量
⽐比如,a1 = 1;a2 = 2 ; a3 = 3
实际开发中针对的是2D\3D\4D向量量,所以不用下标法
2D向量量:x y
3D向量量:x y z
4D向量量:x y z w

向量的前面加个-号,表示向量变负

2:向量大小计算公式

2D向量大小计算公式
||v|| = √Vx² + Vy ²
3D向量大小计算公式
||v|| = √Vx² + Vy ² + Vz²

3:标准向量

Vnorm = V / ||V||,注意V不能为0
零向量是不能被标准的,数学上是不允许的,因为将导致除以0,几何上没有任何意义,因为零向量没有方向

4:向量的加减

向量的加减只能是同一纬度下才能加减,否则不能运算

5:向量之间的距离计算

(A,B) = ||B - A|| = √(Bx - Ax)² + (By - Ay)² + (Bz - Az)²
同样的一定是要同一维度下

5:向量的点乘

应⽤到2D、3D 中:
A• B = AxBx + AyBy A,B都是2D向量
A• B = AxBx + AyBy + AzBz A,B都是3D向量

点乘的意义

a• b = ||a||||b||cos(q) (q是两个向量之间的夹角)

点乘.png
6:案例(根据向量V和向量N求向量V2和向量V1)
向量运算.png

V2计算:
V2平行于N,即可表示为: V2 = N *||V2|| / ||N||
因此只要求得V2的模就能计算投影向量的值,借助三角分解,方便求解
cos q = || V2|| / ||V||
|| V2|| = cos q * ||V||
V2 = N * cos q * ||V|| / ||N||
同时乘以||N||后得 V2 = N * cos q * ||V||• ||N||/ ||N||²
V2 = N * V• N/ ||N||²
V1计算:
V1 + V2 = ||V||;
V1 = ||V|| - V2 = ||V|| - N * V• N/ ||N||²

7:单位矩阵

单位矩阵,是⼀种特殊的对⻆矩阵,n维单位矩阵记做 In。是n * n 矩阵。对象元素为1.其他元素为0。
单位矩阵⾮常特殊,因为它是矩阵乘法单位元,其基本性质是⽤用任意1个矩阵乘以单位矩阵,都将得到原矩阵。所以在某种意义上对矩阵的作⽤用就犹如1对于标量的作⽤。

例如 3 * 3 单位矩阵

3*3矩阵.png
8:矩阵转置

⼀个r * c 矩阵M。M的转置记做MT,是⼀个 c * r 矩阵。它的列由M的⾏组成。可以从另⽅面理解。 MijT = Mji ,即沿着矩阵的对⻆线翻折。

矩阵转置1.png

对向量而言,转置将使得行向量变成列向量,是列向量变成行向量

行列向量转置.png
9:标量和矩阵相乘
标量和矩阵相乘.png

设A 为 4 * 2 矩阵,B 为 2 * 5 矩阵,那么结果AB 为 4 * 5 矩阵。

矩阵与矩阵相乘1.png 矩阵与矩阵相乘2.png

矩阵相乘法则:对结果中的任意元素Cij,取A的第i行和第j列,将⾏和列中的对应元素相乘。然后将结果相加 (等于A的i列和B的j列的点积)。Cij就等于这个和。

矩阵与矩阵相乘3.png 矩阵与矩阵相乘4.png
2乘2矩阵1.png 2乘2矩阵2.png
矩阵乘法注意事项:

1.任意矩阵M乘以方阵S,不管从哪边乘,都得到与原矩阵⼤小相同的矩阵。当然,前提是假定乘法有意义。如果S是单位矩阵,结果就是原矩阵M,即:MI = IM = M 。
2.矩阵乘法不满⾜交换律,即:AB != BA
3.矩阵乘法满足结合律,即:(AB)C = A(BC)。假定ABC的维数使得其乘法有意义,要注意如果(AB)C有意义,那么A(BC)就 一定有意义。
4.矩阵乘法也满⾜与标量或向量的结合律,即:(kA)B = k(AB) = A(kB); (vA)B = v(AB);
5.矩阵积的转置相当于先转置矩阵然后以相反的顺序乘法,即:(AB)T = BT AT

总结

行向量左乘矩阵时,结果是行向量;
列向量右乘矩阵时,结果是列向量;
行向量右乘矩阵时,结果是⽆意义;
列向量左乘矩阵时,结果是⽆意义;
矩阵与向量相乘 注意事项:
1.结果向量中的每个元素都是原向量与矩阵中单独行或列的点积;
2.矩阵⼀向量乘法满足对向量加法的分配律,对于向量v,w 和 矩阵M 有,
(v + w)M = vM + wM;

为什么要使用列向量?

1.等式中使⽤列向量形式更好
2.线性代数书中使用列向量
3.多本计算机图形学都是使用的列向量
4.OpenGL 使⽤的是列向量

10:矩阵是如何变换成向量的

?

⾸先,向量[1,-3 -4]是如果实现位移
位移[1,0,0],随后位移[0,-3,0],最后位移[0,0,4]

矩阵转换为向量1.png 矩阵转换为向量2.png
向量转换为矩阵.png 基向量乘以3乘3矩阵的情况
基向量乘以矩阵1.png 基向量乘以矩阵2.png 基向量乘以矩阵3.png 总结

1:基向量[1,0,0]乘以矩阵M ,结果是M的第⼀行。后⾯的2个⽅程也是⼀样的规律
2:矩阵的每一个都能解释为转换后的基本向量

上一篇下一篇

猜你喜欢

热点阅读