齊次坐標 ---向量叉乘, 無窮遠點


1.背景

笛卡爾坐標系: 就是直角坐標系和斜坐標系的統稱。
歐氏空間:

在歐氏(幾何)空間,同一平面的兩條平行線永遠不能相交,這是我們都熟悉的一種場景。 然而,在透視空間里面,兩條平行線可以相交,例如:火車軌道隨着我們的視線越來越窄,最后兩條平行線在無窮遠處交於一點。

歐氏空間(或者笛卡爾空間)描述2D/3D幾何非常適合,但是這種方法卻不適合處理透視空間的問題(實際上,歐氏幾何是透視幾何的一個子集合),2D笛卡爾坐標可以表示為(x,y) 。
如果一個點在無窮遠處,這個點的坐標將會(∞,∞),在歐氏空間中,這就變得沒有意義。平行線在透視空間的無窮遠處交於一點,但是在歐氏空間卻不能表示,數學家發現了一種方式來解決這個問題(那就是齊次坐標)。

2.齊次坐標的定義

“齊次坐標表示是計算機圖形學的重要手段之一,它既能夠用來明確區分向量和點,同時也更易用於進行仿射(線性)幾何變換。”—— F.S. Hill, JR
簡單的說:齊次坐標就是在原有坐標上加上一個維度:

我們可以在一個2D笛卡爾坐標末尾加上一個額外的變量w來形成2D齊次坐標。因此,一個在笛卡爾坐標系下的點(X, Y)在齊次坐標里面變成了(x, y,w),並且有

X = x/w
Y = y/w

例如,笛卡爾坐標系下(1,2)齊次坐標可以表示為(1,2,1),如果點(1,2)移動到無限遠處,在笛卡爾坐標下它變為(∞,∞),然后它的齊次坐標表示為(1,2,0),因為(1/0,2/0)=(∞,∞)。
注意這樣的話,我們可以不用 ” ∞ " 來表示一個無窮遠處的點了

3.點和向量

點是三維空間中的某個坐標,是絕對的,它的值是參照原點的。
向量用於表示力和速度等具有方向和大小的量, 通常用具有長度和方向的線段來表示。

他們都具有三個分量,但對於向量,如果將向量放在坐標系中的任何位置(平移),都不會改變其性質,因為向量表示的是方向和大小,與位置距離無關,它的值是相對與基准點的。下圖是三維頂點和向量的數學符號或稱為列矩陣。

兩個點向量得到一個向量:
設O(0,0)是原點,則A、B的坐標與向量OA、OB的坐標相同,向量BA=向量OB-向量OA

點和向量轉為齊次坐標, 通過將第四個分量定義為0或1,來描述前面三個坐標分量是向量的還是點的坐標。
1.如果第四個分量為 0,則前面 x,y,z 三個坐標分量描述的是一個向量。
2.如果第四個分量為 1,則前面 x,y,z 三個坐標分量描述的是一個點。
普通坐標(Ordinary Coordinate)和齊次坐標(Homogeneous Coordinate)之間進行轉換:

(1)從普通坐標轉換成齊次坐標時
   如果(x,y,z)是個點,則變為(x,y,z,1);
   如果(x,y,z)是個向量,則變為(x,y,z,0)

(2)從齊次坐標轉換成普通坐標時   
   如果是(x,y,z,1),則知道它是個點,變成(x,y,z);
   如果是(x,y,z,0),則知道它是個向量,仍然變成(x,y,z)

通過定義,我們同時得到以下性質:
1)兩點相減的結果是一個向量(因為兩個點第四個分量都為 1,相減之后變為了 0)
2)一個點與一個向量相加的結果是一個點(點的第四個分量為 1,而向量的第四個分量為 0,1+0=1,因此相加的結果是一個點)

4.無窮遠點

在平面幾何中,我們認為“平行直線不會相交”。這個觀點在射影幾何中得到了修正,“平行直線相交於無窮遠點”。無窮遠點並不在我們通常理解的平面之內,而是在平面之外的“無窮遠處”。為了方便說明,這種點通常用∞
來表示。

用齊次坐標證明兩條平行直線相交於無窮遠點
在歐幾里得空間的線性系統方程:

兩條平行直線:
Ax + By + C = 0
Ax + By + D = 0

在笛卡爾坐標系中,如果C≠D該方程組無解。如果C=D,兩條直線就相同了。
在透視空間中,使用齊次坐標“(x/w, y/w)"分別代替(x, y)重寫這個方程。
Ax/w + By/w + C = 0
Ax/w + By/w + D = 0
化為
Ax + By + Cw = 0
Ax + By + Dw = 0

有一個解(x,y,0)。因此兩條平行直線相交於(x,y,0),這個點在無窮遠處。

在二維向量中,點的齊次坐標表示為(x,y,1),寫成一般形式為(Hx,Hy,H)。對於任何不等於0的H,(Hx,Hy,H)都表示普通坐標中的(x,y),所以在二/三維空間中,點沒有唯一的齊次坐標。
例如,齊次坐標(12,9,3)和(8,6,2)都表示普通坐標系中的一點(4,3)。當齊次坐標已知時,若要求解普通坐標(x,y)時,可用H除各個齊次坐標,這個過程稱為標准化(或稱正常化)。

引入齊次坐標后,可以用齊次坐標表示無窮遠點,例如

(1,0,0)可以表示x方向的無窮遠點
(0,1,0)可以表示y方向的無窮遠點

可以通過透視變換將無窮遠處的點變換為與之對應的有限遠點,相當於透視投影中的滅點。

5.叉乘--點與點,直線與直線

點與點的叉乘
結論:在齊次坐標下,可以用兩個點 p, q 的齊次坐標叉乘結果來表達一條直線 l,也就是
直線l = 點p x 點q

直線與直線的叉乘
結論:在齊次坐標下,兩條直線 l, m 的叉乘表示他們的交點 x
交點x = 直線l x 直線m

兩個向量叉乘的方向

兩個向量a和b的叉乘僅在三維空間中有定義,寫作 a x b. a x b 是與向量a, b都垂直的向量,其方向通過右手定則(見下圖)決定。

其模長等於以兩個向量為邊的平行四邊形的面積(見下圖)。

證明
為什么兩條直線 l, m 的叉乘 l x m 等於它們的交點 p,也就是 p = l x m?

原因如下:首先,根據前面叉乘的定義,l x m 的結果向量(記為 p = l x m) 與 l 和 m都垂直,根據點乘的定義,垂直的向量之間的點積為0,因此可以得到:

因此,根據前面點在直線上的結論,可以看到p既在直線l上又在直線m上,所以p = l x m是兩條直線的交點。此處p是齊次坐標。同樣的,可以證明,兩點p, q 的叉乘 可以表示 過兩點的直線l,即 l = p x q。

參考
https://zhuanlan.zhihu.com/p/373969867
https://www.cnblogs.com/CodeBlove/archive/2008/10/25/1319563.html
https://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html
https://jingyan.baidu.com/article/2c8c281dd30bb50008252a03.html
無窮遠點參考
http://www.360doc.com/content/18/0313/11/9200790_736608542.shtml
http://www.360doc.com/content/18/0313/11/9200790_736608542.shtml
叉乘參考
https://blog.csdn.net/yinfourever/article/details/98480841


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM