将一个坐标系的旋转矩阵转换为另一个坐标系

Mat*_*key 5 math coordinate-systems

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

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

我的平面是来自wcs的小扰动加上围绕y轴的90度旋转:0 0 -1 0 1 0 1 0 0并且围绕它的旋转是单位矩阵的小扰动.我希望这个小旋转能够映射到wcs中的一个小旋转,但不知何故,我也从那里投掷的飞机上获得90度旋转.在我的数学中我哪里出错了,这是怎么回事?

bti*_*lly 4

你的解释不够清楚,我无法弄清楚你做错了什么,所以我只会告诉你如何从头开始。按照这些说明进行操作,您应该能够找出解决问题的方法。

搞清楚矩阵坐标变换的关键是要非常非常清楚什么是线性变换、什么是矩阵以及它们之间的关系。我将从基础开始。我将首先重复你知道的事情,所以请耐心等待。我只需要确保我们在术语上达成一致。

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

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

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

  1. 对于a_i中的每个,将其作为一列aF(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


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

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

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

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

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

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

因此,仿射函数基本上是线性函数,添加了有关原点位置的信息。大部分工作都花在线性函数的矩阵表示上,但您不能忘记弄清楚原点发生了什么。