OpenGL-向量 & 矩阵
1.向量
1.1 向量的写法
向量又分为横向量与列向量,横向力与列向量的写法如下图:
image.png image.png
1.2 负向量表达式:
负向量表达式.png 负向量的意义.png如上图,正负向量可以表达两个不同的方向;
1.3向量的大小计算
向量大小的计算.png 向量大小的计算原理来源于勾股定理.png1.4 向量与标量相乘
向量与标量相乘.png向量与标量相乘的数学意义,就是把一个向量放大N被,N就是标量;
1.5 向量与标量相除
向量与标量乘除的计算方式.png1.6 向量的标准化
image.png向量的标准化概念:在一个方向上,标准化向量的所有轴的值都在(0-1)之间.
1.7向量的加减法
向量加减法的计算方式.png 练习.pnga+b = {5,7,9} ;
a-b = {-3,-3,-3};
b+c-a = {10,0,3,};
1.8 向量之间的距离计算
向量之间的距离计算.png image.png1.9 向量的点乘
点乘1.png点乘2.png 点乘的几何意义.png 练习.png
1.10 向量的叉乘
在学习矩阵叉乘之前,先要了解一下向量的叉乘
image.png
如上图所示,就是向量叉乘的规律。
由图可得,向量的叉乘是不满足交换律的。
向量Va * 向量Vb != 向量Vb * 向量Va;
当一个算法中有点乘与叉乘同事存在的话,叉乘的优先级被点乘的优先级更搞,因为向量的点乘得到的结果是一个标量,标量是无法在与向量做叉乘的。
Va·Vb*Vc = Va·(Vb*Vc);
向量的叉乘的几何意义?
image.png两个三维向量叉乘,得到的结果也是三维向量,
这个三维向量垂直于原来的两个向量所形成的平面。
而叉乘结果得到新的向量的模等于向量a与向量b的模的乘积乘以 sin∂
2.矩阵 与 矩阵的叉乘
矩阵与向量一样,在开发的过程中是存储在一个数组中的。
image.png
在记录一个矩阵的时候,用
i
来表示这个矩阵的函数,用j
来表示它的列数。
2.1 方阵
image.png2.2单元矩阵
image.png对角线为1,其他位置为0的矩阵称为单元矩阵。
任何一个矩阵乘以单元矩阵得到的结果都是原矩阵
2.2矩阵的转至
image.png2.2标量与矩阵相乘
image.png标量与矩阵相乘,满足交换律
2.3 矩阵与矩阵相乘
image.png image.png根据上图可以得到总结
image.png image.png假设矩阵A 与 矩阵B相乘
那么A的列数与B的行数必须是同意的,如果A是2列,B就必须是2行
如果A是3列,B就是3行
因为它们之间的相乘规律就是把A的每一行抽出来形成一个向量x,然后与B矩阵的每一列抽出来形成向量y,两个向量点乘得到一个标量作为值,填入行与列的交汇点,作为新矩阵在这个位置的值。
正是因为它们的这种相乘规律,所以要求举证A列数与举证B的行数必须一致,因为只有这样,取得得向量才是属于同一维度的。
也正是因为矩阵的这种相乘规律,所以矩阵之间的相乘是不满足交换律的。
但是矩阵的相乘是满足结合律的,例如A * B * C = A * ( B * C)
2.4矩阵与向量之间的关系
假设现在有一个向量:[1,-3,-4];
image.png
如上图所示,向量A就是有B,C,D三个向量相加而来。
image.png
这就是向量与矩阵的关系;
2.4矩阵的几何意义
image.png image.png 二维矩阵的缩放旋转.png如上图,我们用一个二维矩阵来距离,
假设一个图形再二维坐标中的原始显示用一个单元矩阵来描述
那么这个图形一开始的矩阵是M:
「1,0,
0,1」
当图形发生了变化以后,矩阵变化成了N
「2,1
-1,2」
矩阵N记录了矩阵M的变化内容;同理可以延伸到三维矩阵中
image.png image.png