Opengl_4_平移变换-创新互联
1,矩阵相乘
The most basic application of matrices is solving systems of linear equations.
2x+1y = 3;
4x+ 3y = 7;
关键就是一句话,矩阵的本质就是线性方程式,两者是一一对应关系。如果从线性方程式的角度,理解矩阵乘法就毫无难度。
下面是一组线性方程式。
矩阵的最初目的,只是为线性方程组提供一个简写形式。
老实说,从上面这种写法,已经能看出矩阵乘法的规则了:系数矩阵第一行的2和1,各自与 x 和 y 的乘积之和,等于3。不过,这不算严格的证明,只是线性方程式转为矩阵的书写规则。
下面才是严格的证明。有三组未知数 x、y 和 t,其中 x 和 y 的关系如下。
x 和 t 的关系如下。
有了这两组方程式,就可以求 y 和 t 的关系。从矩阵来看,很显然,只要把第二个矩阵代入第一个矩阵即可。
从方程式来看,也可以把第二个方程组代入第一个方程组。
上面的方程组可以整理成下面的形式。
最后那个矩阵等式,与前面的矩阵等式一对照,就会得到下面的关系。
矩阵乘法的计算规则,从而得到证明。
2,
图形变换让一个3d物体在屏幕中变换的时候看上去保持有深度的错觉,也就是立体的投影效果。
实现立体效果的方法是使用一个经过多次相乘的变换矩阵得到的最终变换矩阵来和顶点的位置再相乘,这样得到3d物体的一个多次变换后的最终复合变换效果。
实现平移的一种办法是设置一个偏移向量(这里就是- 1,1 了),并把这个便宜向量定义成一致变量然后传递给shader让每一个顶点按照那个偏移向量移动即可。但这样就打破通过乘以一个经过多个变换矩阵相乘得到的复合变换矩阵来进行复合变换的统一性了。
另外,如果平移变换变换不是一系列复合变换的第一个的话,你要先乘以平移变换之前的几个变换的复合变换矩阵,然后按照上面的方法平移图形,然后再乘以平移变换后面的复合变换矩阵(如果不止一个平移变换那么就要继续分解更繁琐了)
3,
一个更好的办法是找到一个表示平移变换的矩阵,并加入到复合变换中作为复合变换中的其中一种变换。
我们是想找到这样一个矩阵,对于给定的点P(x,y,z)和平移向量V(v1,v2,v3),能够使 M * P = P1(x+v1, y+v2, z+v3),简单地说就是矩阵M将P转换成了P+V。
对于得到P本身的向量
4,
网站题目:Opengl_4_平移变换-创新互联
标题来源:http://pwwzsj.com/article/jgcdh.html