我的矩阵数学有点生疏,所以我在计算适当的转换过程时遇到了一些问题,我需要在这里应用。正确的转换设置,用于缩放然后旋转
我有一个全屏幕四边形,坐标范围从[-1, 1]
两个方向。我使用非方形纹理纹理这个四边形,然后缩放我的模型视图矩阵以调整大小并保留宽高比。我也想旋转调整大小的四边形,但我得到拉伸/扭曲的结果。
下面是我经历的过程:
_gl.viewport(0, 0, _gl.viewportWidth, _gl.viewportHeight); // full-screen viewport
mat4.rotate(_modelview_matrix, degToRad(-1.0 * _desired_rotation), [0, 0, 1]); // rotate around z
mat4.scale(_modelview_matrix, [_shape.width/_gl.viewportWidth, _shape.height/_gl.viewportHeight, 1]); // scale down
注意,这是在WebGL的实现,但是这个过程应该是普遍的。
为了简单起见,这一切都是在原点完成的。我很确定我错过了缩放和旋转之间的一些关系,但我不确定它是什么。
如果我想四的大小为_shape.width, _shape.height
和任意角度有一个旋转,我缺少什么?
谢谢!
谢谢!这正是我所需要的。我回去调整我的顶点的位置,以您的示例为指导。这是我在缩放比例和长宽比保存之间所需的分离。 – Xenethyl 2011-04-03 22:20:23