转载:https://blog.csdn.net/oemt_301/article/details/103529972
在相机变换中经常会遇到利用齐次坐标进行运算的情况,以前都是感觉模模糊糊。今天看了一些文章,对它有了进一步的自我理解。
先下结论:
(x, y, z, 1) 表示坐标点:表示坐标系中一个固定的坐标点
(x, y, z, 0) 表示向量:表示坐标系中一个有向线段
这里可以看出,区别就是0与1。点的重点在点,向量的重点在方向。
有上面两者的定义,可以大概说点是一个固定的值,即在坐标系中可以找到该点即可;而向量主要表现在方向上,即基向量可以表示一个向量,对基向量乘以任意值,那么这个向量所表达的意义还是不变的。
而这里为什么齐次坐标中最后一项“1”,可以表示一个固定点,这里我们对坐标点乘以任意值w(w≠0),那么点变为(wx, wy, wz, w),这里可以看到不管w是任何值,我们只需要将改变后的坐标点最后一项变为1,即对坐标点同时除以w,便可以将该坐标点还原,假设如何最后一项是零的话,那么便会失去该性质。
而对于向量,这里再次强调,它只是表示一个有向线段,不管这个线段有多长,只要我们知道它的方向,我们便可以表示出该向量。而0即区分可坐标点,同时也可以表示该向量。
也可这样理解(可能不严谨),点的长度要一定,向量的长度可以随意。
以上是自我理解,下面是一些较严谨的证明,这里依然一xyz坐标系为例。
对于一个向量V,可以用一组坐标表示(vx, vy, vz),使得V = vx×x + vy×y + vz×z (1)
对于一个点P,也可以用一组坐标表示(px, py, pz),使得P-O = px×x + py×y + pz×z (2)
对式(2)经过变换,可得P = px×x + py×y + pz×z + O (3)
对式(1)以矩阵形式表示为:V = (vx vy vz 0)T * (x y z o)
对式(3)以矩阵形式表示为:P = (px py pz 1)T * (x y z o)
这是(x y z o)可以看做坐标基矩阵。
参考:https://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html
https://blog.csdn.net/yinfourever/article/details/98480841