Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es opengles在固定坐标系下的旋转_Opengl Es_Rotation_Transform_Transformation_Coordinate Systems - Fatal编程技术网

Opengl es opengles在固定坐标系下的旋转

Opengl es opengles在固定坐标系下的旋转,opengl-es,rotation,transform,transformation,coordinate-systems,Opengl Es,Rotation,Transform,Transformation,Coordinate Systems,我很难找到如何在不改变轴方向的情况下围绕两个轴旋转对象。 我只需要局部旋转,先绕X轴,然后再绕Y轴(仅举一个例子,不管围绕哪个轴进行多少次变换),而不变换整个坐标系,只变换对象。 问题是如果我在X轴周围使用glRotatef,轴也会旋转,这是我不想要的。 我已经写了很多关于它的文章,但似乎我还是遗漏了一些东西。 谢谢你的帮助 这里有一些示例代码,大致如下 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glRotatef(rotX, 1.0f, 0.0

我很难找到如何在不改变轴方向的情况下围绕两个轴旋转对象。 我只需要局部旋转,先绕X轴,然后再绕Y轴(仅举一个例子,不管围绕哪个轴进行多少次变换),而不变换整个坐标系,只变换对象。 问题是如果我在X轴周围使用glRotatef,轴也会旋转,这是我不想要的。 我已经写了很多关于它的文章,但似乎我还是遗漏了一些东西。 谢谢你的帮助

这里有一些示例代码,大致如下

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(rotX, 1.0f, 0.0f, 0.0f);
glRotatef(rotY, 0.0f, 1.0f, 0.0f);
drawObject();

但这也会变换坐标系。

在绘制对象后,可能需要恢复modelview矩阵。您可以使用OpenGL的内置矩阵堆栈来实现这一点。常见模式如下所示:

// Set up global coordinate system:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// ... add world and view transformations here ...

// Draw your object:
glPushMatrix(); // save the current matrix on the stack
glRotatef(rotX, 1.0f, 0.0f, 0.0f);
glRotatef(rotY, 0.0f, 1.0f, 0.0f);
drawObject();
glPopMatrix(); // restore the previously saved matrix

// Repeat the above for other objects

创建一个全局矩阵。旋转时将xAngle和yAngle添加到矩阵中

Matrix.rotateM(matrix, 0, xAngleADD, matrix[1], matrix[5], matrix[9]);
Matrix.rotateM(matrix, 0, yAngleADD, matrix[0], matrix[4], matrix[8]);
gl.glMultMatrixf(matrix, 0);

谢谢你的建议,我已经试过了,但是没有成功,我想问题是在一个步骤中,我绕X轴旋转坐标系,然后在同一个步骤中绕Y轴旋转,这个旋转是使用已经绕X轴旋转的坐标系执行的,所以这不是我需要的。也许我以前解释得不好或不清楚。或者你认为问题出在其他地方?啊,我明白了,所以你想绕着全局Y轴旋转,而不是局部Y轴。这不是一种表达旋转的常用方式,我不知道如何做到这一点。您可以尝试反转X和Y旋转的顺序,看看这是否对您的应用程序更有意义。是的,您是对的。我知道这并不常见,我只是在尝试一些东西,我已经在这一点上卡住了:)也许我会找到它,我会再次尝试玩它:)谢谢你的回答:)