在OpenGL图形绘制过程中,常常需要对相应元素的坐标进行变换产生动画效果,而元素的坐标则是用矩阵来表示。因此在本文当中记录一下矩阵的变换。欢迎光临我的个人网站Orient一起讨论学习。这里是我的GitHub,如果您喜欢,不妨点个
star
。☺
矩阵与向量相关概念在此不做解释了,如果看官不了解,可自行百度查询。在此仅记录缩放、位移和旋转的变换。
在OpenGL中,一般使用四维向量来描述对应元素的 x轴
、y轴
、z轴
位置以及 alpha
值。
缩放
对一个向量进行缩放(Scaling)就是对向量的长度进行缩放,向量方向保持不变。
假设我们要使向量 (x, y, z, 1)
的 x
值缩放 S1
倍, y
值缩放 S2
倍, z
值缩放 S3
倍。我们需设置这么一个缩放矩阵:
缩放只需要用缩放矩阵乘上需要缩放的向量即可:
位移
位移(Translation)是在原始向量的基础上加上另一个向量从而获得一个在不同位置的新向量的过程
我们把位移向量表示为: (Tx, Ty, Tz,)
,定义位移矩阵矩阵为:
旋转
下面给出几种沿不同轴旋转的矩阵(选装角度为θ):
沿x轴旋转
沿y轴旋转
沿z轴旋转
沿任一轴 (Rx, Ry, Rz)
旋转
组合变换
组合变换只需要依次乘上变换矩阵即可。(从右往左乘)
例如:将向量 (x, y, z)
先缩放2倍,再位移 (1, 2, 3)
个单位:
变换矩阵如下:
最终结果如下:
即向量 (x, y, z)
先缩放了2倍,然后位移了 (1, 2, 3)
个单位。