c - 将绕任意轴的旋转解析为绕 X、Y 和 Z 轴的旋转

标签 c opengl rotation glut

我目前正在尝试利用 GLUT 库在 OpenGL 中实现虚拟轨迹球。 截至目前,我正在通过对鼠标的新旧坐标进行标准弧球计算来计算旋转轴和旋转角度。但我想获得角度 theta1, theta2, theta3 ,这样物体绕 X 轴旋转 theta1 ,绕 Y 轴旋转 theta2 ,绕 Z 轴旋转 theta3 会产生与之前相同的效果。

最佳答案

你想要的是从axis-angle开始二三Euler角度。查看wikipedia rotation conversions 。在那里,您可以从轴角到四元数,然后到欧拉角,或者通过完整的 3x3 旋转矩阵。

另请参阅所谓的 Rodrigues帮助转换的参数。要首先绕 X 旋转,然后绕 Y 旋转,然后绕 Z 旋转,您需要执行 RZ(t3)*RY(t2)*RX(t1)

在您的情况下,构建 3x3 旋转矩阵并使用 OpenGL 基于该矩阵转换模型 View 可能会更容易,而不是 3 个顺序旋转。

关于c - 将绕任意轴的旋转解析为绕 X、Y 和 Z 轴的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7095825/

相关文章:

c - 如何确定标题被处理的次数?

c - 未初始化的结构成员 : best practice

macos - 适用于OS X 10.7(Lion)的OpenGL调试器/错误跟踪器?

c# - 如何避免 TRY 语句导致程序性能不佳?

c - 如何读取 scanf 中的多个整数和字符串输入直到 EOF?

macos - 为什么 WebGL 和 Cocoa 之间的 GL_ALIASED_POINT_SIZE 不同?

CSS 同时旋转和替换图像

c++ - 我如何旋转glm相机

iphone - 尾部斜杠很重要,但被删除了?