关于旋转
OpenGL图形。
已知要绕X轴旋转x度,同时绕Y轴旋转y度。
用两句glRotate
glRotatef(x, 1, 0, 0);
glRotatef(y, 0, 1, 0);
在第一句时把Y轴也绕X轴转了x度,所以第二句的旋转是绕旋转之后的轴旋转的。
但是我希望的是绕原来的Y轴旋转。应该怎么变换一下。
谢谢。
简单的说吧:
我需要用键盘控制旋转场景,每次按方向键旋转一定角度,
按上下键绕X轴传,按左右键绕Y轴转。
但是当X轴转过90度后,此时Y轴转到了原来Z轴的位置,这时再按左右键看到的是场景绕着
垂直于屏幕的键转动,而我希望不管场景如何,按左右键都能够绕竖直的轴转动。
再加50分,希望各位能够帮忙。最好有源代码。谢谢。
//------保存最初变化的矩阵
MATRIX objMatrI;
//------保存最终变化的矩阵
MATRIX objMatr;
//------保存变化值( objMatrR(旋转)、objMatrM(移动)、objMatrS(缩放) )
MATRIX objMatrRX, objMatrRY, objMatrRZ, objMatrM, objMatrS;
旋转X,将要旋转值计算并乘入objMatrRX(它们在运算之前都初始化过了),下次旋转X时再将改变位置的矩阵(都是使用初始矩阵进行改变)乘入objMatrRX,每次都是这样,旋转X时就将旋转值计算得到一个矩阵并乘入objMatrRX;
旋转Y,也同上,都使用初始矩阵进行旋转;
最后我们要输出这个矩阵了
objMatr = objMatrI*objMatrM*objMatrS*objMatrX*objMatrY*objMatrZ;
这个就是我们最终想要得到的矩阵了