在OpenGL中先移动后旋转与先旋转后移动的最终效果并不一定相同,初学很容易直觉判断这两种变换是一样的。最好的办法就是可以从矩阵变换的角度去考虑这样的问题。假设平移矩阵为T,旋转矩阵为R,要操作的顶点为V,则先平移后旋转为:T*R*V先旋转后平移为:R*T*V由线性代数知识可知矩阵相乘不满足交换律,即T*R与R*T不一定相等。
一、原图
假设对下面一个图形作平移和旋转变换
二、先平移后旋转
1
沿X轴平移一段距离xt后
2
再沿Z轴方向(垂直于纸张方向)逆时针旋转一定固定角度θ后得到最终结果图
三、先旋转后平移
1
沿Z轴旋转固定角度θ后,注:坐标轴也跟随着旋转了相同角度θ
2
再沿X轴平衡一段距离xt后得到最终效果图
四、比较
通过上述两个不同的操作,可以看出产生的最终效果图片并不一样,根据其不满足矩阵的交换律亦可以得到相同结论。