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() - 如何在多轴上应用旋转?的主要内容,如果未能解决你的问题,请参考以下文章