当前位置: 首页 > 知识库问答 >
问题:

矩阵多次旋转

郏志诚
2023-03-14

我在理解矩阵时遇到了问题。如果我将矩阵绕X轴旋转90度,它会正常工作,但是,如果我将矩阵绕Y轴旋转90度,它实际上会在Z轴上旋转。我猜每次旋转后,轴都会移动。我如何使用原始轴旋转第二次(或更多次)?这叫做局部和全局旋转吗?

共有3个答案

谭晓博
2023-03-14

在实践中,克服这个问题的最佳方法是使用四元数,这是相当多的数学。你是对的;如果你把它绕Y轴旋转90度,而不是绕Z轴旋转,你会绕x轴旋转。

这是一个很好的来源来转换欧拉角四元数:http://www.euclideanspace.com/maths/geometry/rotations/conversions/eulerToQuaternion/

下面是如何用四元数制作旋转矩阵:http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToMatrix/

填充矩阵后,可以通过调用 glMultMatrix( qMatrix); 来乘法。

澹台景辉
2023-03-14

在旋转之间添加“glLoadIdentity”。

百里伟
2023-03-14

您不“旋转”矩阵。您通过乘法应用旋转转换矩阵。是的,每次调用OpenGL矩阵操作函数时,结果都将用作下一次转换乘法的输入。

围绕轴 X 旋转 90° 会将 Y 轴映射到 Z,将 Z 轴映射到 -Y,这就是您观察到的。因此,无论接下来发生什么转变,都要从这个开始。

要么使用glLoadIdentity为每个对象重新构建整个转换,以重置为一个身份,要么使用glPushMatrix / glPopMatrix创建一个“转换块”的层次结构。或者更好的是,完全放弃OpenGL内置矩阵栈,用一个合适的矩阵数学库代替,如GLM、Eigen或类似的。

 类似资料:
  • 假设我使用大小为8的字符数组来表示图像的碰撞掩码。字符的每一位代表一个像素。实际上,对于64x64矩阵,我将使用长[64]阵列。 因此,框将显示为: 45度的示例输出应该是这样的,尽管旋转可以是任何角度。这个形状对于45度旋转可能不准确,因为我是用手做的。 另一个例子是向右旋转10度?这些值可能是错误的,因为从数学上讲,我不知道它将如何精确旋转,但我认为可以安全地假设,如果每个位的覆盖率超过旧形状

  • 本文向大家介绍螺旋打印矩阵,包括了螺旋打印矩阵的使用技巧和注意事项,需要的朋友参考一下 该算法用于以螺旋方式打印数组元素。首先,从第一行开始,先打印全部内容,然后按照最后一列打印,然后再最后一行,依此类推,从而以螺旋方式打印元素。  该算法的时间复杂度为O(MN),M为行数,N为列数。 输入输出 算法 输入: 矩阵矩阵,行和列m和n。 输出:以螺旋方式打印矩阵的元素。 示例 输出结果

  • 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,3,6,9,8,7,4,5] 示例 2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出: [1,

  • 我想在x、y和z方向旋转我的模型Matix,但它以一种意想不到的方式旋转。我用Qt。 第一次旋转后,后续旋转围绕新模型矩阵的基础旋转,而我希望后续旋转围绕原点旋转。

  • 我想用一个整数的方法打印一个螺旋矩阵。然而,我在纸上的代码运行得很好,但是当我运行时,我会得到不同的数字来代替我想要的数字。 在现实中,它应该打印如下内容 如果您能帮忙,我们将不胜感激。

  • 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 解法如下: /** * @param {number} n * @return {number[][]} */ var generateMatrix = f

  • 问题内容: 我需要能够设置矩阵的旋转而不是添加矩阵。我相信设置旋转度的唯一方法是知道矩阵的当前旋转度。 注意:不会这样做,因为矩阵需要保留其信息。 问题答案: 您可以做的就是调用并缓存值。稍后,当您希望它们返回时,只需调用矩阵即可。 更新资料 旋转矩阵和变换矩阵的关系在这里得到了很好的解释

  • 问题内容: 在numpy中,我有N个3x3矩阵的数组。这将是我如何存储它们的示例(我正在提取内容): 我也有一个由3个向量组成的数组,这将是一个示例: 我似乎无法弄清楚如何通过numpy将它们相乘,从而实现如下效果: 与的形状(在投射到阵列)是。但是,由于速度的原因,列表实现是不可能的。 我尝试了各种换位的np.dot,但最终结果没有得到正确的形状。 问题答案: 使用 脚步 : 1)保持第一根轴对