如何计算旋转轴和角度?

时间:2014-09-04 03:36:11

标签: math 3d openframeworks

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

  1. 在x轴上旋转模型90度。
  2. 在z轴上旋转模型180度(相对于第一次旋转)。
  3. 在我正在使用的框架(openFrameworks)中设置模型旋转的方法是调用其setRotation方法。此方法采用一个角度,以及指定旋转轴的浮点x,y和z。如何计算此特定旋转的旋转轴和角度?我无法顺序旋转模型两次,因为对setRotation的任何调用都会覆盖先前的旋转。

    如果我能提供更多信息或清晰度,请告诉我。

    编辑:如果有人有同样的问题,请发帖helped me a lot

1 个答案:

答案 0 :(得分:1)

很奇怪,你不能应用多于一个转换...也许你只是使用错误的功能,但无论如何:

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

    如果您没有这些知识,
  1. google for transform matrices
  2. 生成第一个旋转矩阵并将其存储到M1
    • 可以使用setRotation
  3. 生成第二个旋转矩阵并将其存储到M2
  4. 将它们相乘M=M1*M2
  5. 使用此M代替setRotation
  6. 如果你没有直接访问变换矩阵并且必须只使用setRotation

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