OpenGLES矩阵变换及其数学原理详解(五)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OpenGLES矩阵变换及其数学原理详解(五)
引⼦
1. 向量刻画的是线性空间中的对象。
2. 矩阵刻画的是向量在线性空间中的运动(变换,跃迁),相似矩阵本质上就是同⼀个线性变换的不同的描述。
3. 在⼀个线性空间中,选定了⼀组基,对于任何⼀个线性变化都可以⽤⼀个确定的矩阵来描述
4. 矩阵不仅可以作为线性变换的描述,⽽且可以作为⼀组基的描述,作为变换的矩阵,不但可以把线性空间中的⼀个点给
变换到另⼀个点去,⽽且也能够把线性空间中的⼀个坐标系(基)表换到另⼀个坐标系(基)去。
5. 当我们谈到向量时,⼀定要指定它所在的坐标系才有意义,⽐如向量b=(1,2,3)实际上指的是在单位坐标系I下有⼀个向量
的度量为b。
6. 就可以理解Ma=b就可以看成Ma=Ib,就是说在坐标系M中度量出来的向量a和在坐标系I⾥⾯度量出来的b实际上就是同⼀
个向量。
7. 对于矩阵⽽⾔,他表⽰出来的那个坐标系也是由⼀组基(向量)组成的,同样存在这组基实在哪个坐标系下度量的问
题。
对于矩阵M,将其理解成IM,即M中的那组向量是在I坐标系中得出的。
8. MxN本质是声明了⼀个在M坐标系中量出的另⼀个坐标系N,其中M本⾝是在I坐标系中度量出来的。
9. 对坐标系施加变换的⽅法,就是让表⽰那个坐标系的矩阵与表⽰那个变化的矩阵相乘。
因此我们来理解这样⼀个式⼦,ACb,AC为矩阵,b为⼀个向量
b是⼀个向量,他是在I坐标系下度量的,a = Cb也就是在I坐标系下将向量b变换到向量b,d=ACb=Aa的含义就是继续在I 坐标系下将向量a变换到向量d。
即在同⼀个坐标系I下⾯进⾏了两次变换操作。
另⼀种理解⽅式是ACb=IACb,那么IAC三个矩阵相乘就表⽰了坐标系的变换,在I坐标系中度量处新的坐标系IA,再在IA坐标系下度量出IAC,然后这⾥最终的坐标系中的向量b和在1中在I坐标系中经过两次变换得到的向量是同⼀个向量。
上⾯的两种理解⽅式也揭⽰了对向量的变换和对坐标系的变换是等价的,这⼀点也可以通过后⾯旋转变换的图⽰中看出来。
各种变换
平移矩阵
缩放矩阵
平移矩阵和缩放矩阵很容易理解,并且从矩阵形式我们也可以看到为什么⽤四维的向量表⽰⼀个顶点了,除了w分量⽤来做透视除法以外,另⼀个作⽤不也正好是为了把平移整合进来吗,都做乘法⽽不做加法。
在数学上也就是将三维空间的坐标表⽰成其齐次形式.
旋转变换
旋转变换相对来说较为复杂,对绕x、y或z轴旋转的情况⽐较好理解。
以绕z轴旋转为例
于是
写成矩阵形式为
绕任意轴旋转的为
同理,前⾯学到的正交投影矩阵,透视矩阵以及摄像机矩阵,本质上和上⾯的变换都是⼀样的。
前⾯可以看到⼀般传⼊渲染管线的是⼀个由摄像机矩阵,投影矩阵,变换矩阵相乘得到的总的变换矩阵,
在顶点着⾊器中⼀般是这样的形式
gl_Position = uMVPMatrix * vec4(aPosition,1);
上⾯的代码中的变量uMVPMatrix表⽰了模型(M)、视图(V)、投影(P)三中变换综合,
注意到矩阵乘法的顺序,对每个点所做的变换是有顺序的,对每个点先进⾏模型变换(平移缩放旋转)、再进⾏视图变换(摄像机视⾓)再进⾏投影变换,这三个变换顺序是不可变得,因为改变顺序最终看到的效果都是不⼀样的。
对每个点所做的综合变换本质上就是对这个点进⾏矩阵相乘,然⽽就我们传⼊的是最终的综合变换矩阵⽽⾔,刚才的理解不是特别准确,换个思路理解成综合变换矩阵就是对坐标系的变换会更好,因为毕竟我们是⼀次性将这个相乘后的综合矩阵传进去的。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。