OpenGL数学基础之矩阵
发表于2017-12-15
三维空间物体的运动使用变换来表示,包括三种:平移变换(translate),旋转变换(rolate),伸缩变换(scale),变换量可以使用4x4的矩阵(Matrix)表示,变换过程就是对物体的所有顶点都乘以这个矩阵。
矩阵乘法
矩阵乘法是行列向量相乘,所以行跟列必须是一样的矩阵才能相乘。
单位矩阵:
根据上面的乘法公式可以知道,任何矩阵与单位矩阵相乘等于本身。
平移变换
假如有点(x, y, z),现在将其安向量
多出一行的原因是,但xyz都为0的时,矩阵乘法的结果总是为0,无法表示原点的平移;同时,4x4的矩阵可以连乘。
旋转变换
如图,圆为单位圆,已知点
所以用矩阵表示点(x, y, z)绕z轴旋转(xy平面内)角度b:
绕y轴旋转(xz平面内)角度b:
绕x轴旋转(yz平面内)角度b:
伸缩变化
任何一个矩阵乘以单位矩阵得到的值不变,如果我们将单位矩阵中的分别比分别变为
这个矩阵变换表示点
变换组合
因为矩阵的乘法满足结合律:
M1 * M2 * … * Mn * V = (M1 * M2 * … * Mn) * V
所以变换的组合可以将每个变换的分量相乘,最后再乘以这个顶点即可。