我目前正在尝试利用 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/