关于矩阵的用法

来源:互联网 发布:cpu淘宝e5水多深 编辑:程序博客网 时间:2024/05/16 05:47

三元组的意义:

一个三元组(x,y,z)可以表示为一个顶点的位置,然而,一个三元组(x,y,z)还表示一个向量。所以需要注意,三元组既可以表示为一个坐标还可以表示一个方向

 

矩阵:

相乘的条件:设有矩阵A与矩阵B能够相乘,则:A的列数=B的行数。

 

顶点:

通常,一个顶点的位置信息由[x, y, z, w]表示,其中w表示缩放因子。将来所有的变换操作都将是针对此四维向量的乘法。

 

顶点变换(顶点是图元的组成部分,所有模型的变换都将归结为顶点的变换):

所谓变换,如平移、缩放、旋转或是综合。顶点的变换参数为一个4x4的矩阵,所以被我们称为变换矩阵

具体变换矩阵格式如下(注:以下均directX为例,opengl为以下矩阵的转秩矩阵,详见:DirectX与OpengGL的不同):

平移变换矩阵:


分别绕X,Y,Z轴旋转变换矩阵:

旋转变换矩阵:

 

举个例子,假设我要对顶点


作一个 [Tx, Ty, Tz] 的平移变换,那么平移后的新的顶点为:


至此,转换完毕!

需要补充一点:以上所有的变换都是建立在场景中camera都处在原点(0,0,0)位置(这也是opengl中相机的默认位置)。

 

从上面的计算可以看出,矩阵是3d模型变换极其高效的工数学工具。

总结一下:

不论你想要一个模型处在什么位置、什么方向,你只需要构造一个变换矩阵,然后将模型里每一个顶点矩阵乘以这个变换矩阵,你就可以得到你想要的结果!

 


0 0
原创粉丝点击