首页 > 代码库 > 齐次坐标

齐次坐标

来看这篇文章的一定是有着这样的疑问的:

1. 什么是齐次坐标

      2. 这个东西有什么用

(下面不做声明的,我们都认为是直角坐标)

看了几篇东西,不是只解决了问题1就是只解决了问题2,现在我就是总结一下:

对于问题1:

这个首先我们要对在一个坐标系中坐标的表示有深刻的认识,我们在中学都知道要想使用坐标,必须先说明坐标系 的建立方式,比如以哪个点为原点,那条边为x轴之类的,现在想想,这是为什么呢?其实很简单的,因为一个点的坐标比如(1,1)他只反映了相对于原点的位置信息,这其中并没有包含原点的位置信息。学过最基本的线性代数的我们都知道其实坐标就是一个1*2的矩阵,现在我们再来看看坐标的矩阵的本质,我们很容易得到

这就是坐标的矩阵的本质,这个点的坐标乘以一个x轴与y轴组成的单位矩阵应该等于它本身。但是很明显这个式子中没有加入坐标原点的信息,所以只给我们一个这样的东西,我们还是无法想象这个点的位置。其实我们知道,点与点的关系只有平移的关系,所以我们假设存在一个永远不变的坐标系,它的原点是(0,0),那么奇迹发生了,我们在其他坐标系下我们已知了它的原点相对于我们假设原点的偏移量(a,b),也就是说坐标原点的坐标就是(a,b),那么我们将坐标原点引入到我们的矩阵式子中,得到:

这个式子很奇怪,首先为什么要在(x,y)后面加一个1,这是因为如果不加1,我们就无法满足矩阵相乘的性质,还有加1,就正好将原点坐标的信息加入了坐标中,这样我们就可以表示平面的任何坐标系中的点了。但是这不是我们要的齐次坐标,下面我们为了和式子一照应,我们这样去修改,得到:

这样我们得到了齐次坐标(x+a,y+b,1)。有些地方解释为什么是1,也说可以扩大相同的倍数什么的,其实从我们得到的式子中我们就可以很清楚的看到,当矩阵的对角线群斗等比例扩大就可以了,而对角线元素我们要得到的是坐标系的的方向信息与大小无关,所以这里的扩大相同的倍数没有任何意义。

说了这么多,大家都会有一个疑问,我学这个有什么用啊,为什么数据挖掘的线性分类器和超平面会提到这么一个东西啊。那么我们来看看问题二。

对于问题二:

所有的文章里都提到,他的优点:它提供了有效的方法,将二维,三维甚至是高维空间中的点集从一个坐标系变换到另一个坐标系的方法。说白了,就是方便了改变坐标系,变换坐标。

当我们使用普通的二维坐标时,我们发现最基本的变换,平移,旋转,比例变换这件存在着代沟

对于平移:x1 = x + d(x)  y1 = y + d(y)

对于旋转:

所以,我们看到比例和旋转都可用矩阵,就是平移不可以,所以我们采用了齐次坐标,齐次坐标的很多变换公式,我们就参见博客园的一篇博客吧,这里我就不说了,链接地址:http://www.cnblogs.com/Clingingboy/archive/2010/10/17/1853559.html

 

齐次坐标