将轴角度转换为四元数的问题

时间:2012-09-14 18:50:32

标签: quaternions

我有一个矢量,从我的相机指向我想指向的物体,所以我想制作一个旋转相机的四元数,使其指向该矢量。所以我这样做(使用glm)

glm::quat rotation=glm::angleAxis(0.0f,vector);

如果我在例如(0.0f,0.0f,-1.0f)的矢量的情况下正确理解该功能,则摄像机应该在深度轴上指向前方,并且没有滚动。但我不知道为什么,在这种情况下它会创建这个四元数: X:-0 Y:-0 Z:-0 宽:1 如果传递给angleAxis()的角度参数不同于0,则x,y,z值仅与0不同。为什么会发生这种情况?如果我通过角度0,不应该仅仅创建一个只有偏航和俯仰的旋转,而不是滚动?

1 个答案:

答案 0 :(得分:1)

已经回答:(在gameDev论坛上,来自用户clb)

不,你的理解是不对的。角度轴旋转以给定角度围绕给定轴生成旋转。如果您没有指定角度,您将始终获得身份。这是因为旋转零角度,无论是任何轴,当然都不会旋转。

您正在考虑的是LookAt旋转。我不确定glm中的函数签名是什么,但我确定它们具有类似的功能。使用LookAt旋转将一个方向矢量定向为面向另一个矢量。