【问题标题】:Problems converting axis angle to quaternion将轴角转换为四元数的问题
【发布时间】:2012-09-14 18:50:32
【问题描述】:

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

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

如果我在向量的情况下正确理解该函数,例如 (0.0f,0.0f,-1.0f),相机应该在深度轴上指向前方,并且没有滚动。但我不知道为什么,在这种情况下它会创建这个四元数: x:-0 y:-0 z:-0 w:1 它什么都不做,并且 x,y,z 值仅在传递给 angleAxis() 的角度参数不为 0 时不同于 0。为什么会发生这种情况?如果我通过角度 0,它不应该简单地创建一个只有偏航和俯仰而没有滚动的旋转吗?

【问题讨论】:

    标签: quaternions


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-05
      • 2011-04-19
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 2012-03-14
      相关资源
      最近更新 更多