我绘制立方体并希望在屏幕下使用手指移动来旋转它。我用这个代码
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
我想要
答案 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向量。