仿射空間與仿射變換

仿射空間與仿射變換

By Z.H. Fu
切問錄 [maplewizard.github.io](http://maplewizard.github.io )

爲何須要仿射變換?  

  仿射空間與仿射變換在計算機圖形學中有着很重要的應用。在線性空間中,咱們用矩陣乘向量的方法,能夠表示各式各樣的線性變換,完成諸多的功能,可是有一種極其經常使用的變換卻不能用線性變換的方式表示,那就是平移,一個圖形的平移是非線性的!(這一點只須要看平移前各點與原點的連線和平移後各點與原點之間的連線可知,或者記平移變換爲\(\mathcal{F}\),有\(\mathcal{F}(\boldsymbol{v_1}+\boldsymbol{v_2})\not =\mathcal{F}(\boldsymbol{v_1})+\mathcal{F}(\boldsymbol{v_2}))\)git

放射空間與仿射組合

  爲了用數學的方式來描述這種變換,就須要用到仿射變換(平移不是線性變換而是仿射變換)。下面先講仿射空間。形象地來說,仿射空間就是沒有原點的線性空間。在線性空間中,兩個點相加,能夠定義爲原點到兩個點的向量線性相加,而在仿射空間中,因爲沒有原點,所以不能定義相加,沒有線性組合。但咱們能夠定義一個仿射組合來用若干基表出某個點。咱們定義仿射組合:
\[\boldsymbol{p}=\sum_{i=1}^N \lambda_i \boldsymbol{v_i}\quad\quad(\sum_{i=1}^N \lambda_i=1)\]
咱們不妨在線性空間中來看這個式子,假設就兩個向量\(\boldsymbol{v_1,v_2}\)咱們任意指定一個原點\(\boldsymbol{q}\),設\(\boldsymbol{v_1}\)的係數爲\(\lambda\),則\(\boldsymbol{v_2}\)的係數爲\(1-\lambda\),那麼\(\boldsymbol{p}=\boldsymbol{q}+\lambda(\boldsymbol{v_1}-\boldsymbol{q})+(1-\lambda)(\boldsymbol{v_2}-\boldsymbol{q})=\lambda \boldsymbol{v_1}+(1-\lambda)(\boldsymbol{v_2})\)。經過推導,原點\(\boldsymbol{q}\)被消去了,也就是說,仿射組合跟原點的選擇沒有任何關係!github

仿射變換

  有了仿射組合,就能夠仿照線性組合來定義仿射變換:算法

給定兩個仿射空間\(\mathcal{A},\mathcal{B}\),一個函數\(f:\mathcal{A}\rightarrow \mathcal{B}\)是仿射變換,當且僅當對仿射組合
\[\sum_{i=1}^N \lambda_i \boldsymbol{v_i}\quad\quad(\sum_{i=1}^N \lambda_i=1)\]都有
\[f(\sum_{i=1}^N \lambda_i \boldsymbol{v_i})=\sum_{i=1}^N \lambda_if(\boldsymbol{v_i})\quad\quad(\sum_{i=1}^N \lambda_i=1)\]app

這種係數又叫質心座標,哪一個點的係數大,就至關於質量大,質心就離那個點近。仿射變換獲得的結果就是給定點按質量加權的質心,質心的仿射變換等於每一個點進行放射變換後再求質心。函數

用線性變換表示仿射變換

下面來看如何表示仿射變換,咱們定義\(\mathbb{R}^n\)中一個向量\(\boldsymbol{v}\)的齊次形式爲\(\mathbb{R}^{n+1}\)中的\(\overset{\sim}{\boldsymbol{v}}=\left[\begin{aligned}\boldsymbol{v} \\ 1\end{aligned}\right]\)那麼,仿射組合與係數和爲1的要求可統一表示爲
\[\left[\begin{aligned}\boldsymbol{y} \\ 1\end{aligned}\right]=c_1\left[\begin{aligned}\boldsymbol{v_1} \\ 1\end{aligned}\right]+c_2\left[\begin{aligned}\boldsymbol{v_2} \\ 1\end{aligned}\right]+\cdots+c_n\left[\begin{aligned}\boldsymbol{v_n} \\ 1\end{aligned}\right]\]
也就是說,仿射組合能夠寫成高一維對應齊次座標的線性組合形式。
下面一個摘自維基百科的圖形象地說明了這一過程spa

其它

  咱們再來看看質心座標(Barycentric Coordinates),採用質心座標的好處在於它可以表示每一點受周圍點的影響,質心座標的係數越大,影響越大,所以在線性插值時,能夠直接用質心座標來乘以每一點的值,得出的就是插值後的結果,在計算機圖形學中進行渲染時,顏色差值就用這種算法。orm

PS:這是個人一個備份,更多的內容請到 http://maplewizard.github.ioblog

參考文獻

[1]D C.Clay Linear Algebra and its application 4th edition
[2]http://en.wikipedia.org/wiki/Affine_space
[3]http://en.wikipedia.org/wiki/Affine_transformationip

相關文章
相關標籤/搜索