【问题标题】:How to calculate rotation axis and angle?如何计算旋转轴和角度?
【发布时间】:2014-10-28 16:42:12
【问题描述】:

我正在尝试旋转 3D 模型,使其朝向正确的方向。我想要的旋转是相当微不足道的,可以分为两个步骤:

  1. 将模型在其 x 轴上旋转 90 度。
  2. 将模型在其 z 轴上旋转 180 度(相对于第一次旋转)。

在我使用的框架 (openFrameworks) 中设置模型旋转的方法是调用它的 setRotation 方法。此方法采用一个角度,以及指定旋转轴的浮点 x、y 和 z。如何计算此特定旋转的旋转轴和角度?我不能按顺序旋转模型两次,因为任何对 setRotation 的调用都会覆盖之前的旋转。

如果我可以提供更多信息或说明,请告诉我。

编辑:如果有人有同样的问题,这个帖子helped me a lot。

【问题讨论】:

  • 帖子链接已损坏。这就是为什么倾向于实际包含/总结本网站上的内容的原因。

标签: math 3d openframeworks


【解决方案1】:

奇怪的是你不能应用一个以上的变换......也许你只是使用了错误的功能,但无论如何:

如果您可以直接访问变换矩阵(或通过 get、set)

  1. 如果您不了解变换矩阵,请在 Google 上搜索
  2. 生成第一个旋转矩阵并存储到M1
    • 可以为此使用 setRotation
  3. 生成第二个旋转矩阵并存储到M2
  4. 将它们相乘M=M1*M2
  5. 使用这个M 而不是setRotation

如果你不能直接访问变换矩阵,只能使用 setRotation

  • 在这种情况下,您必须使用四元数,它是您调用 setRotation 的 4D 向量
  • google 四元数数学并找到 2 个旋转的应用
  • 我不使用它们,所以我无能为力,但那里也有方程式
  • 将 3x3 旋转矩阵转换为四元数并返回
  • 所以你仍然可以使用上面的算法
  • 获取M
  • 从中提取旋转矩阵(它只是您省略最后一行和最后一列的子矩阵)
  • 从中计算四元数
  • 并使用结果调用 setRotation

【讨论】:

    猜你喜欢
    • 2019-09-08
    • 1970-01-01
    • 2013-02-07
    • 2020-01-01
    • 2015-04-18
    • 2011-04-18
    • 2018-10-24
    • 1970-01-01
    相关资源
    最近更新 更多