矩阵的变换

在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) 个单位。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容