Math 如何计算旋转轴和角度?

Math 如何计算旋转轴和角度?,math,3d,openframeworks,Math,3d,Openframeworks,我试图在3D中旋转模型,使其朝向正确的方向。我想要的旋转非常简单,可以分为两个步骤: 将模型绕其x轴旋转90度 将模型沿z轴旋转180度(相对于第一次旋转) 在我使用的框架(openFrameworks)中设置模型旋转的方法是调用其setRotation方法。此方法采用一个角度,并浮动指定旋转轴的x、y和z。如何计算此特定旋转的旋转轴和角度?我无法按顺序旋转模型两次,因为对setRotation的任何调用都会覆盖以前的旋转 请让我知道,如果我可以提供更多的信息或清晰度 编辑:如果有人有同样的问题

我试图在3D中旋转模型,使其朝向正确的方向。我想要的旋转非常简单,可以分为两个步骤:

  • 将模型绕其x轴旋转90度
  • 将模型沿z轴旋转180度(相对于第一次旋转)
  • 在我使用的框架(openFrameworks)中设置模型旋转的方法是调用其setRotation方法。此方法采用一个角度,并浮动指定旋转轴的x、y和z。如何计算此特定旋转的旋转轴和角度?我无法按顺序旋转模型两次,因为对setRotation的任何调用都会覆盖以前的旋转

    请让我知道,如果我可以提供更多的信息或清晰度


    编辑:如果有人有同样的问题,请发这篇文章。

    奇怪的是,你不能应用多个转换。。。也许您只是使用了错误的函数,但无论如何:

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

  • 如果您不了解变换矩阵,请在谷歌上搜索
    • 我怀疑您使用的是4x4同质笛卡尔变换矩阵
  • 生成第一个旋转矩阵并将其存储到
    M1
    • 可以使用setRotation进行此操作
  • 生成第二个旋转矩阵并将其存储到
    M2
  • 将它们相乘
    M=M1*M2
  • 使用此
    M
    代替设置旋转
  • 如果你不能直接访问变换矩阵,只能使用setRotation

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

    到post的链接已断开。这就是为什么人们倾向于在这个网站上实际包含/总结内容。