gpt4 book ai didi

c++ - OpenGL - 为 glRotate() 找到旋转 vector

转载 作者:行者123 更新时间:2023-11-28 06:50:31 25 4
gpt4 key购买 nike

我一直在研究在 OpenGL 中实现滚动、俯仰和偏航式旋转的问题,但在线提供的相关资料有限。问题的关键是在对象旋转时找到更新的局部轴。例如,围绕 X 旋转会导致局部 Y 轴和 Z 轴发生变化。随后的旋转将围绕更新的轴进行。我在这里找到了一些数学公式来找到更新的 vector :

http://nehe.gamedev.net/article/camera_class_tutorial/18010/

但是,新 vector 是以点为单位给出的,例如,绕 Y 轴旋转 45 度会改变 X 轴,X 轴现在通过点 (0.71, 0, 0.71)。现在的问题是如何找到可以传递给 glRotatef(angle, x, y, z) 的 (x, y, z) 点。请注意,x、y、z 位于通过它们和原点的 vector 上。

我正在考虑对通过 (0.71, 0, 0.71) 和原点的直线取法线,然后再次取法线以获得 (x, y, z)。

任何人都可以对此提出改进建议或替代方法吗?

最佳答案

我建议你使用四元数。一开始在概念上有点难以掌握,但是一旦掌握了要点,实现起来就非常简单了。此外,四元数旋转可以让你避免万向节锁定:)

OpenGL 四元数教程网站:

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/

关于c++ - OpenGL - 为 glRotate() 找到旋转 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24044740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com