PBRT-E2.1-坐標系統

PBRT-E2.1-坐標系統

來自專欄 Way On PBRT1 人贊了文章

在PBRT中出現的三維的點,向量以及法向量都可以用三個坐標值進行表示: xyz 。坐標值只有在一個坐標系統(Coordinate system)下才有意義,一個坐標系統是由原點以及三個線性獨立的向量構成。原點以及這三個線性獨立的向量稱作是這個坐標系統的標架(Frame),也就是我們所說的坐標軸。

一般在 n 維的情況下,一個標架的原點和 n 個線性無關的基向量定義了一個 n 維的仿射空間(Affine space)

給定一組基向量 mathbf{v}_{i},則該空間內所有的向量 mathbf{v} 都能表示為基向量的線性組合,線性組合的係數為 s_{i}

mathbf{v} = s_{1}mathbf{v}_{1} + dots + s_{n}mathbf{v}_{n}

係數 s_{i} 則為向量mathbf{v}的每一個分量,即 mathbf{v} = (s_{1},...,s_{n})

而該空間內的所有頂點 mathbf{p} 則是通過原點 mathbf{p}_{0} 和基向量 mathbf{v}_{i} 的線性組合進行表示的:

mathbf{p} =mathbf{p}_{0}+ s_{1}mathbf{v}_{1} + dots + s_{n}mathbf{v}_{n}

係數 s_{i} 則為頂點mathbf{p}的每一個分量,即 mathbf{p} = (s_{1},...,s_{n})

這樣看來雖然三維空間內的點和向量都能夠由xyz進行表示,但是其在數學上是不同的實體,並不能夠自由地相互轉換。

一個矛盾之處在於:為了定義一個標架我們需要點和一系列地向量,而它們又只在特定的標架下才有意義。因此我們定義了一個標準標架(Standard frame),其原點的坐標為 (0,...,0)_{n}n 個基向量為 (1,0,0,...,0)_{n}(0,1,0,...,0)_{n}(0,0,1,...,0)_{n}(0,0,0,...,1)_{n} 。其它的標架都會定義在典範坐標系統(Canonical coordinate system)下,這就是所謂的世界空間(World space)

坐標系的手性

在三維空間下坐標軸有以下兩種排布方式:

(左圖)左手系 Left-handed;(右圖)右手系 Right-handed

PBRT中使用的是左手系。

推薦閱讀:

炫舞引擎日常:截圖
Signed Distance Field Shadow in Unity
【GPU精粹與Shader編程】(三) 《GPU Gems 1》全書核心內容提煉總結 · 下篇
改變世界的先驅,是他在50年前真正定義了計算機圖形學和人機共生關係
ZQlib都能幹些什麼之五:紋理合成

TAG:計算機圖形學 |