你的解释不够清楚,我无法弄清楚你做错了什么,所以我只会告诉你如何从头开始。按照这些指示,您应该能够弄清楚如何解决您的问题。
弄清楚矩阵坐标变换的关键是非常非常清楚什么是线性变换,什么是矩阵,什么是关系。我将从基础开始。我将从重复你知道的东西开始,所以请耐心等待。我只需要确保我们在术语上是一致的。
线性变换是一种F
将一个向量空间映射到另一个向量空间(通常是同一个)的函数。
给定一个有限维向量空间和一个基,您可以在该向量空间中以独特的方式写下任何向量作为一组关联坐标。你得到的代表很大程度上取决于基础。我们通常将其写为垂直列。
给定两个有限维向量空间,以及一对关联的基a
和b
,以及它们之间的线性变换F
,我们可以写出如下矩阵。
- 对于 中的每个,
a_i
在基础中a
写下一个列。F(a_i)
b
- 连接这些列以获得矩阵。
这个操作将被证明是至关重要的!
因此,矩阵取决于线性变换和一对基选择。我将其表示为.M = Fab
函数组合由矩阵乘法表示。那就是。(矩阵乘法定义的全部意义在于实现这一点。)Fab * Gbc = (F o G)ac
现在,在您的情况下,您有一个从back 到的线性变换 'F' 。您将它表示在基础“b”中,并且您希望它表示在基础“a”中。那就是你拥有并且想要拥有。让是恒等线性变换,它只是将它发送给它自己。然后,您需要做的就是弄清楚矩阵是什么。R3
R3
Fbb
Faa
I
Faa = Iab * Fbb * Iba
Iab
Iba
现在您有了坐标系a
(通常坐标)和b
. 你知道b
坐标系中写的是什么a
。按照上面的说明用矩阵表示线性算子(我说的那个很关键),你可以立即写下. 矩阵是这个矩阵的逆矩阵。Iba
Iab
请注意,许多人对与他们猜想的相反的事实感到困惑。但这是很容易体验的东西。我强烈建议您实际尝试一下。起床。旋转 90 度。请注意,当你转向一个方向时,看起来世界会转向另一个方向。您正在经历这样一个事实,即当您的坐标系以一种方式旋转时,事物的表示会相反(即以另一种方式旋转)。Iab
编辑:线性运算符的解释是正确的,但是所述问题涉及围绕不是原点的点的旋转。所有线性算子都将原点发送到原点。这种操作可以将origin发送到其他地方。因此,我们需要从线性函数转向仿射函数。但幸运的是,仿射函数并不是什么大问题。它们实际上是一个常数点加上一个线性部分。这不是可以Mx
用矩阵表示的函数,而是用点和矩阵M
形式的函数。p + Mx
p
M
首先,介绍一个重要但看似武断的区别非常有帮助。一个点就是一个点。向量是点之间的偏移量,可以表示为一个点减去另一个点。点和向量确实是不同种类的东西,我们应该以不同的方式看待它们。
这就是我们做出区分的原因。如果F
是点上的仿射函数,则F
是将向量映射到向量的线性函数。(常数位同时移动向量的起点和终点,但不会改变它们彼此之间的偏移量。)这让我们可以轻松地将仿射函数的常数部分和线性部分分开。
当您处理仿射函数时,没有特别的理由只处理以原点为中心的坐标系,而且通常有充分的理由不这样做。因此,坐标系由向量空间的点p
和基确定。a
(稍微复杂一点,但不多。)在该坐标系中,任意点q
可以映射到向量q - p
,然后该向量表示在 base 中a
。同样,习惯上将这些坐标写成一列。
现在如果F
是一个仿射函数,那么您需要做的就是找出 的线性部分F
,并添加F
发送坐标系原点的位置。
如果您要在一个坐标系中获取仿射函数(p, a)
,并将其转换为另一个,(q, b)
您所做的就是将线性位从基础a
转换为基础b
,然后找出结果F(p)
。
所以仿射函数基本上是线性函数,其中包含有关原点所在位置的信息。大部分工作都花在线性函数的矩阵表示上,但你不能忘记弄清楚原点会发生什么。