Matrix 在3D中组合多个旋转矩阵

Matrix 在3D中组合多个旋转矩阵,matrix,3d,rotation,transformation,Matrix,3d,Rotation,Transformation,我已经计算了每个轴的旋转角度。如果仅应用三个旋转中的一个,则对象将按预期旋转 如果我乘以旋转矩阵,你通常会这样做,如果你结合旋转,我不会得到想要的结果,因为第一个旋转会影响其他旋转,因此最终结果不是我想要的 我希望将每次旋转应用于对象,就像它以前没有旋转一样 我想这是一个简单的任务,但似乎我没有搜索正确的关键字。(标题也不完美…(开放供建议)) 感谢您的每一个提示/帮助。旋转矩阵的合成并不是一件小事。我建议将旋转矩阵表示为。四元数具有非常有用的性质。将两个四元数相乘将得到第三个四元数,将其转换为

我已经计算了每个轴的旋转角度。如果仅应用三个旋转中的一个,则对象将按预期旋转

如果我乘以旋转矩阵,你通常会这样做,如果你结合旋转,我不会得到想要的结果,因为第一个旋转会影响其他旋转,因此最终结果不是我想要的

我希望将每次旋转应用于对象,就像它以前没有旋转一样

我想这是一个简单的任务,但似乎我没有搜索正确的关键字。(标题也不完美…(开放供建议))


感谢您的每一个提示/帮助。

旋转矩阵的合成并不是一件小事。我建议将旋转矩阵表示为。四元数具有非常有用的性质。将两个四元数相乘将得到第三个四元数,将其转换为矩阵形式,即两个输入矩阵的精确组合。我认为
Boost
库中有这方面的代码,但我个人没有使用过

编辑:可以从(标准化的)轴向量和旋转角度获得旋转矩阵。看看你在维基百科上的经历。这不是一道数学题,这是一个逻辑谬误。为了便于描述,请尝试使用您的手机:

  • 将它面朝上放在桌子上,充电接口在底部
  • 顺时针绕z旋转90度。因此,充电接头现在位于左侧
  • 将x轴(假设充电端口位于顶部或底部,则x轴将是手机的长轴)旋转180度
  • 手机现在是倒置的,充电端口在左边
  • 但是:

  • 将它面朝上放在桌子上,充电接口在底部
  • 绕x旋转180度。因此,充电接头现在位于顶部
  • 顺时针绕z旋转90度
  • 手机现在倒置,充电端口位于右侧
  • 如果指令是围绕x旋转180度,围绕z顺时针旋转90度,那么以下哪项是不正确的?两者都不正确。指示模棱两可

    单个旋转的顺序总是很重要的,因为第二个影响第一个旋转中所做的功,第三个影响第一个和第二个旋转中所做的功,等等。改变顺序只会改变哪个影响哪个


    方向通常直接存储为矩阵或四元数,因为它是明确的,并且可以使操作的顺序保持正确的顺序。

    我使用的库提供了四元数。那部分就完成了;)。所以我必须用三个向量的叉积来得到我要找的四元数表示?我想这和乘以旋转矩阵是一样的?@user2479595您应该能够初始化每个轴的旋转。通常,轴向量和旋转角度足以得到旋转矩阵。一旦你有了3个矩阵,你就可以把它们表示成四元数,把它们相乘,然后把结果表示成另一个旋转矩阵。你不妨看看汤米的答案。我知道顺序很重要,我现在的问题不是万向节锁。我知道我不能直接使用我的三个旋转。问题是如何修改它,以便我可以使用它们。根据我的回答:如果你所拥有的只是“围绕x旋转x度,围绕y旋转y度,围绕z旋转z度”,那么就没有一个“正确”的最终方向。不管你是否能认出它,这正是所谓的万向节锁的问题。但必须有一个是描述我所寻找的。必须有一种方法来改变我当前的价值观。