关于旋转

OpenGL图形。
已知要绕X轴旋转x度,同时绕Y轴旋转y度。
用两句glRotate
glRotatef(x, 1, 0, 0);
glRotatef(y, 0, 1, 0);
在第一句时把Y轴也绕X轴转了x度,所以第二句的旋转是绕旋转之后的轴旋转的。
但是我希望的是绕原来的Y轴旋转。应该怎么变换一下。
谢谢。
[199 byte] By [MadLee-风里麦笛] at [2008-6-2]
# 1
调过来,先y再x
chenlee at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 2
ft.
那么X轴的转动又不对了。
MadLee-风里麦笛 at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 3
同时绕?这个怎么旋转呀?
# 4
保存物体最初的矩阵
旋转任意一轴,保存这个旋转度数
在要旋转别的轴的时候,把物体矩阵变为最初矩阵
再去旋转你想要的那个轴
最后当要输出的时候,把这个两个变化了的矩阵相乘
gddsky at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 5
同楼上,不知道你到底要干什么,这样行不行:

GLfloat v[3];
v[0] = 0;
v[1] = cos(x);
v[2] = sin(x);
glRotate(y, v[0], v[1], v[2]);
glRotate(x, 1, 0, 0);

ed9er-始祖鸟 at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 6
我的同楼上是同sevecol

ed9er-始祖鸟 at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 7
旋转任意一轴,保存这个旋转度数
应该是 矩阵
gddsky at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 8
这个矩阵必须自己算出来吧,有函数能把它从matrix stack里面取出来吗?

ed9er-始祖鸟 at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 9
简单的说吧:
我需要用键盘控制旋转场景,每次按方向键旋转一定角度,
按上下键绕X轴传,按左右键绕Y轴转。
但是当X轴转过90度后,此时Y轴转到了原来Z轴的位置,这时再按左右键看到的是场景绕着
垂直于屏幕的键转动,而我希望不管场景如何,按左右键都能够绕竖直的轴转动。
再加50分,希望各位能够帮忙。最好有源代码。谢谢。
MadLee-风里麦笛 at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 10
//------保存最初变化的矩阵
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;
这个就是我们最终想要得到的矩阵了
gddsky at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 11
MadLee:
你可以保存你想要绕的轴的位置(矢量),旋转后,更新这个矢量,使其永远竖直
然后你在用绕固定轴旋转的方式就行了
# 12
具体到OpenGL中应该怎么操作呢?
最好能给出代码。
谢谢谢谢。
MadLee-风里麦笛 at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 13
Madlee:
我用的是D3D(opengl不熟),看了你说的,我想你旋转的时候是旋转了视矩阵吧,你旋转物体的世界矩阵应该不会有上面你说的那种情况,应为不管你怎么转,整个坐标系是不变的。只有自己的坐标系在转。
# 14
sigh,还是不懂。先回去补补在说
MadLee-风里麦笛 at 2007-10-17 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...