轉載:https://blog.csdn.net/oemt_301/article/details/103529972
在相機變換中經常會遇到利用齊次坐標進行運算的情況,以前都是感覺模模糊糊。今天看了一些文章,對它有了進一步的自我理解。
先下結論:
(x, y, z, 1) 表示坐標點:表示坐標系中一個固定的坐標點
(x, y, z, 0) 表示向量:表示坐標系中一個有向線段
這里可以看出,區(qū)別就是0與1。點的重點在點,向量的重點在方向。
有上面兩者的定義,可以大概說點是一個固定的值,即在坐標系中可以找到該點即可;而向量主要表現(xiàn)在方向上,即基向量可以表示一個向量,對基向量乘以任意值,那么這個向量所表達的意義還是不變的。
而這里為什么齊次坐標中最后一項“1”,可以表示一個固定點,這里我們對坐標點乘以任意值w(w≠0),那么點變?yōu)?wx, wy, wz, w),這里可以看到不管w是任何值,我們只需要將改變后的坐標點最后一項變?yōu)?,即對坐標點同時除以w,便可以將該坐標點還原,假設如何最后一項是零的話,那么便會失去該性質。
而對于向量,這里再次強調,它只是表示一個有向線段,不管這個線段有多長,只要我們知道它的方向,我們便可以表示出該向量。而0即區(qū)分可坐標點,同時也可以表示該向量。
也可這樣理解(可能不嚴謹),點的長度要一定,向量的長度可以隨意。
以上是自我理解,下面是一些較嚴謹?shù)淖C明,這里依然一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