怎樣將點和向量轉為齊次座標?

Tags: 座標, 向量, 矩陣,

當進行 Direct 3D 程式設計時,我們需要先將要變換的點或向量轉為齊次座標,然後再通過矩陣來進行變換操作。那麼,怎樣將點和向量轉為齊次座標呢?

工具/原料

DirectX

一、為什麼要轉換為齊次座標

進行 Direct 3D 程式設計時,需要使用 4×4 的變換矩陣,這種矩陣可以定義所需要的各種變換。

怎樣將點和向量轉為齊次座標

當進行座標變換時,需要將空間中的點或 3D 向量與變換矩陣相乘。但是,空間中的點或向量都只有 x,y,z 三個座標分量,而一個 3 維的點或向量是無法與一個 4×4 的矩陣相乘的。

怎樣將點和向量轉為齊次座標

因此,必須將點或向量擴充套件為一個四元組。這個擴充套件後的點或向量的四元組即稱為齊次座標。

怎樣將點和向量轉為齊次座標

二、怎樣將點或向量轉換為齊次座標

要將點或向量轉換為齊次座標,只需要處理好新增的第四個分量即可。在這裡,我們通過將第四個分量定義為 0 或 1,來描述前面三個座標分量是向量的還是點的座標。

怎樣將點和向量轉為齊次座標

如果第四個分量為 0,則前面 x,y,z 三個座標分量描述的是一個向量。

怎樣將點和向量轉為齊次座標

如果第四個分量為 1,則前面 x,y,z 三個座標分量描述的是一個點。

怎樣將點和向量轉為齊次座標

通過定義,我們同時得到以下性質:

1)兩點相減的結果是一個向量(因為兩個點第四個分量都為 1,相減之後變為了 0)

2)一個點與一個向量相加的結果是一個點(點的第四個分量為 1,而向量的第四個分量為 0,1+0=1,因此相加的結果是一個點)

怎樣將點和向量轉為齊次座標

注意事項

點只有位置屬性,而向量只有大小和方向屬性。

座標, 向量, 矩陣,
相關問題答案