glRotatef() - 如何在多轴上应用旋转?

Posted

技术标签:

【中文标题】glRotatef() - 如何在多轴上应用旋转?【英文标题】:glRotatef() - How to apply rotation in multiple axis? 【发布时间】:2015-08-16 19:54:42 【问题描述】:

我试图在 Y 轴上将立方体旋转 90 度,然后在 Z 轴上旋转 90 度,但是当我在 Z 轴上应用旋转时,它实际上只改变了 X 轴上的角度。

这是我的代码:

glRotatef(90.0, 0.0, 1.0, 0.0);
glRotatef(90.0, 0.0, 0.0, 1.0);

实现我想要的结果的正确方法是什么 - 即Y 上 90 度,然后 Z 上 90 度?

有没有很好的教程来解释如何通过示例正确使用glRotate()

【问题讨论】:

您是否尝试过交换这些电话?它通常有效。如果您需要围绕局部轴旋转并且它围绕全局轴旋转,反之亦然,您只需交换 2 个变换。 操作/转换的顺序很重要。我建议先尝试在 Z 上评分,然后在 X 上评分。为了掌握它,我会随着时间的推移增加角度,并可能添加键盘快捷键/滑块来玩轴。您还可以组合坐标轴:glRotatef(90.0, 0.0, 1.0, 1.0);,学习起来可能会很有趣。如果您想深入了解我推荐3D Math Primer,因为它可以让您轻松了解线性代数概念(向量/矩阵/四元数),独立于 OpenGL。 太棒了!!!!当我将顺序更改为 Z->X->Y 时,它得到了解决。您要发布答案吗?我当然会接受它,它会在未来作为其他人的参考 【参考方案1】:

只做一次,但在一个函数中设置要旋转的角度

glRotatef(90.0, 0.0, 1.0, 1.0);

【讨论】:

以上是关于glRotatef() - 如何在多轴上应用旋转?的主要内容,如果未能解决你的问题,请参考以下文章

glRotatef 是不是也会旋转法线方向?

OpenGL:glRotatef 旋转啥?

使用 glRotatef() 时的 OpenGL 坐标问题

opengl glrotatef 无法正确旋转

glRotatef() 在 Opengl 中的工作很奇怪

使用 gl.glrotatef 旋转对象