5

我在世界坐标系(wcs)中有一个用中心点向量和 3 个正交方向单位向量定义的平面,设置为 3x3 矩阵。我已经确定了一个关于这个平面坐标系的旋转矩阵,现在我想找出与这个旋转相匹配的世界坐标系中对应的旋转矩阵。那就是我想要一个新的旋转矩阵,它可以应用于 wcs 中的对象,以匹配我计算出的相对于我的平面的旋转。

我想取平面矩阵的逆矩阵(由于我的平面是正交的,所以用转置操作代替)并将其乘以旋转矩阵,以获得世界坐标系中的等效旋转。这似乎是错误的,因为:

我的平面是来自 wcs 的一个小扰动加上围绕 y 轴大致旋转 90 度:0 0 -1 0 1 0 1 0 0 并且围绕它的旋转是单位矩阵的一个小扰动。我希望这个小旋转映射到 wcs 中的一个小旋转,但不知何故,我也从扔在那里的飞机上得到了 90 度的旋转。我的数学哪里出了问题,解决这个问题的正确方法是什么?

4

1 回答 1

4

你的解释不够清楚,我无法弄清楚你做错了什么,所以我只会告诉你如何从头开始。按照这些指示,您应该能够弄清楚如何解决您的问题。

弄清楚矩阵坐标变换的关键是非常非常清楚什么是线性变换,什么是矩阵,什么是关系。我将从基础开始。我将从重复你知道的东西开始,所以请耐心等待。我只需要确保我们在术语上是一致的。

线性变换是一种F将一个向量空间映射到另一个向量空间(通常是同一个)的函数。

给定一个有限维向量空间和一个基,您可以在该向量空间中以独特的方式写下任何向量作为一组关联坐标。你得到的代表很大程度上取决于基础。我们通常将其写为垂直列。

给定两个有限维向量空间,以及一对关联的基ab,以及它们之间的线性变换F,我们可以写出如下矩阵。

  1. 对于 中的每个,a_i在基础中a写下一个列。F(a_i)b
  2. 连接这些列以获得矩阵。

这个操作将被证明是至关重要的!

因此,矩阵取决于线性变换和一对基选择。我将其表示为.M = Fab

函数组合由矩阵乘法表示。那就是。(矩阵乘法定义的全部意义在于实现这一点。)Fab * Gbc = (F o G)ac

现在,在您的情况下,您有一个从back 到的线性变换 'F' 。您将它表示在基础“b”中,并且您希望它表示在基础“a”中。那就是你拥有并且想要拥有。让是恒等线性变换,它只是将它发送给它自己。然后,您需要做的就是弄清楚矩阵是什么。R3R3FbbFaaIFaa = Iab * Fbb * IbaIabIba

现在您有了坐标系a(通常坐标)和b. 你知道b坐标系中写的是什么a。按照上面的说明用矩阵表示线性算子(我说的那个很关键),你可以立即写下. 矩阵是这个矩阵的逆矩阵。IbaIab

请注意,许多人对与他们猜想的相反的事实感到困惑。但这是很容易体验的东西。我强烈建议您实际尝试一下。起床。旋转 90 度。请注意,当你转向一个方向时,看起来世界会转向另一个方向。您正在经历这样一个事实,即当您的坐标系以一种方式旋转时,事物的表示会相反(即以另一种方式旋转)。Iab


编辑:线性运算符的解释是正确的,但是所述问题涉及围绕不是原点的点的旋转。所有线性算子都将原点发送到原点。这种操作可以将origin发送到其他地方。因此,我们需要从线性函数转向仿射函数。但幸运的是,仿射函数并不是什么大问题。它们实际上是一个常数点加上一个线性部分。这不是可以Mx用矩阵表示的函数,而是用点和矩阵M形式的函数。p + MxpM

首先,介绍一个重要但看似武断的区别非常有帮助。一个点就是一个点。向量是点之间的偏移量,可以表示为一个点减去另一个点。点和向量确实是不同种类的东西,我们应该以不同的方式看待它们。

这就是我们做出区分的原因。如果F是点上的仿射函数,则F是将向量映射到向量的线性函数。(常数位同时移动向量的起点和终点,但不会改变它们彼此之间的偏移量。)这让我们可以轻松地将仿射函数的常数部分和线性部分分开。

当您处理仿射函数时,没有特别的理由只处理以原点为中心的坐标系,而且通常有充分的理由不这样做。因此,坐标系由向量空间的点p和基确定。a(稍微复杂一点,但不多。)在该坐标系中,任意点q可以映射到向量q - p,然后该向量表示在 base 中a。同样,习惯上将这些坐标写成一列。

现在如果F是一个仿射函数,那么您需要做的就是找出 的线性部分F,并添加F发送坐标系原点的位置。

如果您要在一个坐标系中获取仿射函数(p, a),并将其转换为另一个,(q, b)您所做的就是将线性位从基础a转换为基础b,然后找出结果F(p)

所以仿射函数基本上是线性函数,其中包含有关原点所在位置的信息。大部分工作都花在线性函数的矩阵表示上,但你不能忘记弄清楚原点会发生什么。

于 2011-05-20T18:05:23.373 回答