【发布时间】:2013-04-18 04:11:44
【问题描述】:
我需要一个给定 Yaw、Pitch 和 Roll 的函数,可以在“世界坐标”中生成 Front(或 Look At)、Right 和 Up 向量。
在我的特定世界空间中,从原点 (0,0,0) 开始,X 向左为正,Z 为远离观察者/原点的正数,Y 为向上正数。
例如,给定...(以度为单位的角度)
-
偏航=0,俯仰=0,滚动=0, 预期的输出是:
- 前面 = (0.0,0.0,1.0)
- 右 = (-1.0,0.0,0.0)
- 向上 = (0.0,1.0,0.0)
-
偏航=90,俯仰=0,滚动=0, 预期的输出是:
- 前面 = (1.0,0.0,0.0)
- 右 = (0,0,0.0,1.0)
- 向上 = (0.0,1.0,0.0)
-
偏航=0,俯仰=90,横滚=0, 预期的输出是:
- 前面 = (0.0,1.0,0.0)
- 右 = (-1.0,0.0,0.0)
- 向上 = (0.0,0.0,-1.0)
-
偏航=0,俯仰=0,横滚=90, 预期的输出是:
- 前面 = (0.0,0.0,1.0)
- 右 = (0.0,1.0,0.0)
- 向上 = (1.0,0.0,0.0)
我使用的语言是 C++,如果最有意义的话,我很乐意使用 glm 来解决这个问题。如果我可以通过四元数到达那里,我也可以使用该解决方案,因为我发现其他教程描述了如何从欧拉角获得四元数。
【问题讨论】:
-
什么是没有旋转的向量?
-
我想你在问,如果我给它一个 yaw=0,pitch=0,roll=0,预期的结果是什么。这种情况下的预期结果是:front=(0.0,0.0,1.0) right=(-1.0,0.0,0.0) up=(0.0,1.0,0.0) 谢谢。
-
这和yaw=90的结果是一样的
-
抱歉 Vaugh - 我有一个错字,我已经在上面修复它并添加了 yaw=0 示例