Opengl 2.0 Matrix.rotateM xAngle yAngle

时间:2014-02-16 09:02:09

标签: opengl

我绘制立方体并希望在屏幕下使用手指移动来旋转它。我用这个代码 Matrix.rotateM(mMVPMatrix, 0, yAngle, 0, 1, 0); Matrix.rotateM(mMVPMatrix, 0, xAngle, 1, 0, 0); 我希望yAngle会在屏幕的y轴上旋转立方体,这没关系

并且xAngle将在屏幕的x轴上旋转立方体,它在立方体坐标系中旋转而不是屏幕的坐标系。

我无法发布图片,因为我只有1个声望点:(所以我上传图片和链接: 现在 Rotation as it is now

我想要

rotation as I want

1 个答案:

答案 0 :(得分:1)

您正在使用Intrinsic Euler angles,默认情况下会围绕本地轴旋转点。要围绕全局轴旋转,您只需将它们转换为extrinsic angles即可。这就像reversing the order一样简单,所以它变成了:

Matrix.rotateM(mMVPMatrix, 0, xAngle, 1, 0, 0); 
Matrix.rotateM(mMVPMatrix, 0, yAngle, 0, 1, 0);

您还需要确保后乘乘行向量,而不是预先乘以ccolumn向量。