仿射变换

**仿射轉換**（Affine transformation），又稱**仿射映射**，是指在幾何中，對一個向量空間進行一次線性轉換並接上一個平移，轉換為另一個向量空間。

一個對向量 ${\vec {x}}$ 平移 ${\vec {b}}$ ，與旋轉縮放 $A$ 的仿射映射為

　
: ${\vec {y}}=A{\vec {x}}+{\vec {b}}$

上式在齊次坐標上，等價於下面的式子

　
: ${\begin{bmatrix}{\vec {y}}\\1\end{bmatrix}}={\begin{bmatrix}A&{\vec {b}}\ \\0,\ldots ,0&1\end{bmatrix}}{\begin{bmatrix}{\vec {x}}\\1\end{bmatrix}}$

在碎形的研究裡，收縮平移仿射映射可以製作具有自相似性的碎形。

## 數學定義

一個在兩個仿射空間之間的仿射變換，是在向量上呈現線性之座標點的變換（即為空間中點與點之間的向量）。以符號表示的話， _$f$ ' 使得_ $\varphi $ _，決定任一對點的線性變換：_
 $P,Q\in {\mathcal {A}}$ :

　
: ${\overrightarrow {f(P)~f(Q)}}=\varphi ({\overrightarrow {PQ}})$

或者 $f(Q)-f(P)=\varphi (Q-P)$ .

### 其他定義

我們可以將此定義繼續延伸：
假設選定一原點， $O\in {\mathcal {A}}$ 且 $B$ 表示其圖像 $f(O)\in {\mathcal {B}}$ , 如此即代表對任何向量 ${\vec {x}}$ :
 $f:(O+{\vec {x}})\mapsto (B+\varphi ({\vec {x}})).$

 
假設選定一原點 $O'\in {\mathcal {B}}$ , 此即可以拆解成一仿射變換 $g:{\mathcal {A}}\to {\mathcal {B}}$ 使得 $O\mapsto O'$ , 特定而言

　
: $g:(O+{\vec {x}})\mapsto (O'+\varphi ({\vec {x}})),$ ,

 
總結即，很直觀的， $f$ 包含了一個變換與線性座標。

 
給定同一場中的兩個仿射空間 ${\mathcal {A}}$ 與 ${\mathcal {B}}$ , 一函數 $f:{\mathcal {A}}\to {\mathcal {B}}$ 為一仿射映射若且唯若對任一加權點的集合 $\{(a_{i},\lambda _{i})\}_{i\in I}$ of weighted points in ${\mathcal {A}}$ 於 such that

我們得到

　
: $f\left(\sum _{i\in I}\lambda _{i}a_{i}\right)=\sum _{i\in I}\lambda _{i}f(a_{i})\,.$

此定義等價於 $f$ 保留了 質心.

## 表示

如上所示，仿射變換為兩函數的複合：平移及線性映射。普通向量代數用矩陣乘法呈現線性映射，用向量加法表示平移。正式言之，於有限維度之例中，假如該線性映射被表示為一矩陣「Ａ」，平移被表示為向量 ${\vec {b}}$ ，一仿射映射 $f$ 可被表示為

　
: ${\vec {y}}=f({\vec {x}})=A{\vec {x}}+{\vec {b}}.$

### 增廣矩陣

使用一 增廣矩陣 與一增廣向量，用一矩陣乘法同時表示平移與線性映射是有可能的。此技術需要所有向量在其末端擴長 「1」且所有矩陣都於底部添加一排零，右邊擴長一列轉換向量，及右下角添加一個 「1」。

　
: ${\begin{bmatrix}{\vec {y}}\\1\end{bmatrix}}=\left[{\begin{array}{ccc|c}\,&A&&{\vec {b}}\ \\0&\ldots &0&1\end{array}}\right]{\begin{bmatrix}{\vec {x}}\\1\end{bmatrix}}$

等價於

　
: ${\vec {y}}=A{\vec {x}}+{\vec {b}}.$

以上所言之擴長矩陣被稱為 「仿射變換矩陣」，又或稱為 「投射變換矩陣」 （其可應用於 投影轉換)。

此表示法以 _K_n 之半直積 與 GL (_n_, _k_) 展示了 所有可逆 仿射變換的集合。 此為一個於眾函數集結下進行的一個 群，被稱為 仿射群

普通矩陣向量乘法總將原點映射至原點，因此無法呈現平移（原點必須映射至其他點）。藉由於所有向量上擴增一座標 「1」，我們將原空間映至更高維空間的一個子集合以進行變換。在該空間中，原本之空間佔有了擴長座標一的 1 的子集合。 因此原空間的原點可在 (0,0, ... 0, 1)。原空間的平移可藉由更高維度空間的線性轉換來達成（即為錯切變換）。在高維度中的座標即為 齊次座標的一例。 假如原空間為歐幾里德，則更高維空間為實射影空間。

使用齊次座標的優點為，藉由相對應矩陣之乘積，可將任意數目的仿射變換結合為一。此性質被大量運用於 計算機圖形，計算機視覺 與 機器人學。

## 性質

仿射變換保留了：

1. 點之間的共線性：在同一條直線上的三個或更多的點（稱為共線點）在轉換後依然在同一條直線上（共線）；
2. 直線的平行性：兩條或以上的平行直線，在轉換後依然平行；
3. 集合的凸性：凸集合轉換後依然是凸集合。並且，最初的極值點被映射到轉換後的極值點集；
4. 平行線段的長度的比例：兩條由點 $p_{1},p_{2},p_{3},p_{4}$ 定義的**平行**線段， ${\overrightarrow {p_{1}p_{2}}}$ 與 ${\overrightarrow {p_{3}p_{4}}}$ 的長度的比例等於 ${\overrightarrow {f(p_{1})f(p_{2})}}$ 與 ${\overrightarrow {f(p_{3})f(p_{4})}}$ 的長度的比例；
5. 不同質量的點組成集合的質心。

仿射變換為可逆的若且唯若 $A$ 為可逆的。用矩陣表示，其反元素為：

$$
\left[{\begin{array}{ccc|c}&A^{-1}&&-A^{-1}{\vec {b}}\ \\0,&\ldots &,0&1\end{array}}\right]
$$

可逆仿射變換組成仿射群，其中包含具 n 階的一般線性群為子群，且自身亦為一 $n+1$ 階的一般線性群之子群。
當 A 為常數乘以正交矩陣時，此子集合構成一子群，稱之為相似變換。舉例而言，假如仿射變換於一平面上且假如 $A$ 之行列式為 $1$ 或 $-1$ ，那麼該變換即為等面積變換。此類變換組成被稱為_等仿射群_的子群。一同時為等面積變換與相似變換的變換，即為一平面上保持歐幾里德距離不變的保距映射。

這些群都有一保留了原定向的子群，也就是其對應之 $A$ 的行列式大於零。最後一個例子，即三維空間中剛體的運動組成的群（旋轉和平移），剛體的運動在機器人學中尤為常用。

如果有一固定點，我們可以將其當成原點，則仿射變換被縮還到一線性變換。這使得變換更易於分類與理解。舉例而言，將一變換敘述為特定軸的旋轉，相較於將其形容為平移與旋轉的結合，更能提供變換行為清楚的解釋。只是，這取決於應用與內容。

## 實例

### 實數之仿射變換

函數 _f_ : **R** → **R**, _f_(_x_) = _mx_ + _c_ ，其中 _m_ 與 _c_ 為常數，此即為一般之仿射變換。

### 有限體的仿射變換

以下等式表示了有限體 (28) 中的仿射變換:

　
: $\{\,a'\,\}=M\{\,a\,\}\oplus \{\,v\,\},$

此處 [M] 為矩陣 且 {v} 為向量 :

舉例來講，將以大端序二進位表示的元素 {a} = _y_7 + _y_6 + _y_3 + _y_ = {11001010} 轉換成大端序十六進位，計算如下：

　
: $a_{0}'=a_{0}\oplus a_{4}\oplus a_{5}\oplus a_{6}\oplus a_{7}\oplus 1=0\oplus 0\oplus 0\oplus 1\oplus 1\oplus 1=1$

　
: $a_{1}'=a_{0}\oplus a_{1}\oplus a_{5}\oplus a_{6}\oplus a_{7}\oplus 1=0\oplus 1\oplus 0\oplus 1\oplus 1\oplus 1=0$

　
: $a_{2}'=a_{0}\oplus a_{1}\oplus a_{2}\oplus a_{6}\oplus a_{7}\oplus 0=0\oplus 1\oplus 0\oplus 1\oplus 1\oplus 0=1$

　
: $a_{3}'=a_{0}\oplus a_{1}\oplus a_{2}\oplus a_{3}\oplus a_{7}\oplus 0=0\oplus 1\oplus 0\oplus 1\oplus 1\oplus 0=1$

　
: $a_{4}'=a_{0}\oplus a_{1}\oplus a_{2}\oplus a_{3}\oplus a_{4}\oplus 0=0\oplus 1\oplus 0\oplus 1\oplus 0\oplus 0=0$

　
: $a_{5}'=a_{1}\oplus a_{2}\oplus a_{3}\oplus a_{4}\oplus a_{5}\oplus 1=1\oplus 0\oplus 1\oplus 0\oplus 0\oplus 1=1$

　
: $a_{6}'=a_{2}\oplus a_{3}\oplus a_{4}\oplus a_{5}\oplus a_{6}\oplus 1=0\oplus 1\oplus 0\oplus 0\oplus 1\oplus 1=1$

　
: $a_{7}'=a_{3}\oplus a_{4}\oplus a_{5}\oplus a_{6}\oplus a_{7}\oplus 0=1\oplus 0\oplus 0\oplus 1\oplus 1\oplus 0=1.$

 
於是， {a′} = y7 + y6 + y5 + y3 + y2 + 1 = {11101101} = {ED}。

### 平面幾何之仿射變換

在 ℝ2，左方所示之變換即為以下映射：

　
: ${\begin{bmatrix}x\\y\end{bmatrix}}\mapsto {\begin{bmatrix}0&1\\2&1\end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}+{\begin{bmatrix}-100\\-100\end{bmatrix}}$

將原紅色三角形之三個頂點作變換後給出了新藍色三角形的三個頂點。事實上，所有三角形皆可由仿射變換來達成，所有平行四邊形也可以，但一般四邊形不行。

## 參看

* 仿射轉換的轉換矩陣
* 平移的矩陣表示
* 仿射群
* 仿射幾何
* 線性（第二個意思是在 1 維中的仿射轉換）
* 三維投影