我正在准备测试,但我需要帮助理解绕轴的旋转。在一个问题中,我假设有一个函数 drawHouse()
,它在 xy 平面上绘制一个线框房屋,如下图所示:
我们有多种代码段选择,并询问哪一个会导致这座改造后的房子:
正确答案如下:但我不确定命令是从后到前执行还是从前到后执行:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glScalef(2, 1, 1);
glRotatef(90, 0, 0, 1);
glRotatef(180, 1, 0, 0);
drawHouse();
问题是我不知道在哪个轴上旋转哪种方式,所以如果有人能给我一个简短的总结,我将不胜感激。
最佳答案
大概您有 gl
的文档函数以及应用转换的顺序。如果您从固定轴的角度来看转换,那么只有当转换以相反的顺序发生时,解决方案才有意义,即从 glRotatef(180, 1, 0, 0);
开始。 。所以转换将是
- 绕 X 轴旋转 180 度,让房子朝下
- 绕 Z 轴旋转 90 度,使房屋位于 X 轴上,如最终图像所示,不拉伸(stretch)
- 沿 X 轴缩放 *2,拉伸(stretch)房屋
关于c++ - 绕轴 3D 旋转的说明。 (简单编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10409543/