c++ - 绕轴 3D 旋转的说明。 (简单编码)

标签 c++ 3d matrix rotation

我正在准备测试,但我需要帮助理解绕轴的旋转。在一个问题中,我假设有一个函数 drawHouse(),它在 xy 平面上绘制一个线框房屋,如下图所示:

house before transformation

我们有多种代码段选择,并询问哪一个会导致这座改造后的房子:

enter image description here

正确答案如下:但我不确定命令是从后到前执行还是从前到后执行:

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glScalef(2, 1, 1); 
glRotatef(90, 0, 0, 1); 
glRotatef(180, 1, 0, 0); 
drawHouse(); 

问题是我不知道在哪个轴上旋转哪种方式,所以如果有人能给我一个简短的总结,我将不胜感激。

Original question is 22 on here, PDF

最佳答案

大概您有 gl 的文档函数以及应用转换的顺序。如果您从固定轴的角度来看转换,那么只有当转换以相反的顺序发生时,解决方案才有意义,即从 glRotatef(180, 1, 0, 0); 开始。 。所以转换将是

  1. 绕 X 轴旋转 180 度,让房子朝下
  2. 绕 Z 轴旋转 90 度,使房屋位于 X 轴上,如最终图像所示,不拉伸(stretch)
  3. 沿 X 轴缩放 *2,拉伸(stretch)房屋

关于c++ - 绕轴 3D 旋转的说明。 (简单编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10409543/

相关文章:

opengl-es - 如何在 OpenGL ES 中将深度缓冲区 "push"后退一点?

java - 易于学习的 Java 3D IDE

android - 有关 android.graphics.Camera 和 android.graphics.Matrix 的文档或教程?

python - 在稀疏矩阵中找到非零 block 并进行处理

c++ - Windows socket api 绑定(bind)函数编译问题

c++ - 用于新运算符分配的公共(public)内存

c++ - 将YUV420p QVideoFrame转换为灰度OpenCV垫

c++ - opencv - 拼接2张以上图像

r - 在 R 中 append 两个矩阵而不会丢失dimnames

matrix - 行优先和列优先顺序真的是编程语言的属性吗