坐标系变换
Think an invertible matrix as a coordinate.
坐标系变换,例如,现在有一个点P,在A坐标系中的坐标为
做个类比,如果两个讲不同母语的人想要交流,怎么办?这时,如果有一种世界通用语言就好了,例如汉语。这样,当说英语的人向说法语的人问候“你好”的时候,他知道要查字典先把英文 “hello”转换成中文“你好”,然后,说法语的人就可以将“你好”转换成法文“Bonjour”。
这里有两个过程:
- hello
→ 你好- 你好
→ Bonjour
这两个过程中有一个关键点:
你好 —汉语
是的,世界通用语言,我们的汉语,就是key point, 她在不同语系中充当了桥梁的角色。
回到坐标系的话题,使用不同的坐标系就像使用不同的语言,各说各话,相互之间是无法被理解的。如果想要被理解,那就的使用大家都认同的方式交流。这时候,如果引入一个参考坐标系,世界就和平了:
我们可以将P点的坐标先转化为一个参考坐标,然后再从参考坐标转换到B坐标系中的坐标。
- A
→ Global- Global
→ B
现在,我们的问题变成了求某个坐标系X与参考坐标系Global之间的转换方法:
X
↔ Global
不考虑平移
如果考虑不同的坐标系共原点,就像下面这样:
选择坐标系A作为参考坐标系,如何表述:
B
↔ A
答案是:矩阵变换
矩阵变换就像词典翻译一样,将一个坐标系下的点转换成另一个坐标系中的点。
矩阵与线性变换中提到了在同一个坐标系中矩阵变换的作用,例如,将一个向量进行旋转。现在,矩阵变换被不可思议的用作了坐标系变换的工具。变换还是同样的变换,只是站在了不用的角度看待问题:
- 矩阵变换之于同一个坐标系,可以理解为坐标系不变,点的位置改变。
- 矩阵变换之于不同坐标系,可以理解为点的绝对位置不变,坐标系改变。
其实在矩阵与线性变换拓展一节中,我提到了一种转换关系,这里,我给出上图的对应表述:
(1)
[x′y′] =B[xy] ⇒ [xy] =B−1[x′y′] ,B =[b1→b2→] , 且b1→,b2→ 是坐标系B的基向量
其中,矩阵
这一切,在于矩阵
(1) 的转换关系之所以成立,是因为矩阵
上图对应的矩阵B的两个列向量分别为
其实A、B可以是任何坐标系,式(1)仍然成立,只要满足:
- 坐标系A和坐标系B原点均为(0,0)
- 矩阵
B 的各个列向量分别对应B坐标系的各个基向量- 矩阵
B 的各个列向量都是坐标系A中的向量
坐标系B的基向量是坐标系A的基向量的一个线性变换 ,这个线性变换可以用矩阵
下面,用图说话:
以图中的两个向量
现在,令矩阵
于是
虽然这里的讨论是基于二维的,但是,不难想象,这里得出的结论可以扩展到任意维度。
用一句话来阐述这个结论:
将B坐标系的基向量定位到A坐标系,然后将定位之后的基向量作为矩阵
B 的列向量,用矩阵B 对B坐标系中的点P的坐标进行矩阵变换,将得到点P在A坐标系中的坐标。这个过程,就是从坐标系B到坐标系A的一个追溯过程。
加入平移
平移好像没什么好说的,不过就是在前面讨论的基础上引入一个偏移。
下面用图示说明:
上图引入了一个新的坐标系,取名为A’。将这个坐标系取名为A’是有原因的,因为他基本就是坐标系A的一个替身,他们之间除了坐标原点发生偏移之外,其他特征完全一致。
有了前面的基础,我们知道,将坐标系B中的坐标转换为坐标系A’中的坐标其实就是一个从B到A’的追溯过程。只要将坐标系B的基定位到A’坐标系中,以定位之后的基向量为列组成矩阵
也就是说,利用前面讨论的结论,我们能完成:
B↔A′
[x′y′] =B[xy] ⇒ [xy] =B−1[x′y′]
剩下的问题就是:
A′↔A
这个问题就是一个加减偏移量的问题,所以看图就一目了然了。
齐次坐标系与平移
引入齐次坐标的好处之一是可以使用矩阵表达平移:
所以
追溯过程
将坐标系B的基向量定位到坐标系A’中,得到向量
故,将坐标系B中的点
1). 将坐标变换到坐标系A’:
2). 将坐标变换到坐标系A中:
综合起来就是:
反过来,
故,将坐标系A中的点
矩阵变换:坐标系变换 or 位置变换
站在不同的角度看同一个矩阵变换
1). 位置变换:
A坐标系中:
向量
OP→=[22] , 向量b1→=[21] ,b2→=[−11] , 令矩阵B =[b1→b2→] ,则矩阵变换Bx⃗ 会将OP→ 变到OP′→ 。
2). 坐标系变换:
B坐标系中:
向量
OP′→=[22] A坐标系中:
向量
b1→=[21] ,b2→=[−11] , 令矩阵B =[b1→b2→] ,则矩阵变换Bx⃗ 会将OP′→ 从坐标系B变到坐标系A。
总结
于是,对任意坐标向量
1). 坐标系不变,位置变换:
将
2). 位置不变,坐标系变换:
将