一個使用仿射变换所製造有自相似 性的碎形
仿射变换 ,又称仿射映射 ,是指在几何 中,一个向量空间 进行一次线性变换 并接上一个平移 ,变换为另一个向量空间。
一個對向量
x
→
{\displaystyle {\vec {x}}}
平移
b
→
{\displaystyle {\vec {b}}}
,與旋轉放大縮小
A
{\displaystyle A}
的仿射映射為
y
→
=
A
x
→
+
b
→
{\displaystyle {\vec {y}}=A{\vec {x}}+{\vec {b}}}
上式在齐次坐标 上,等價於下面的式子
[
y
→
1
]
=
[
A
b
→
0
,
…
,
0
1
]
[
x
→
1
]
{\displaystyle {\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}}}
在分形 的研究裡,收縮平移放射映射可以製造製具有自相似性 的分形 。
一個使用仿射变换所製造有自相似 性的碎形
仿射变换 ,又称仿射映射 ,是指在几何 中,一个向量空间 进行一次线性变换 并接上一个平移 ,变换为另一个向量空间。
一個對向量
x
→
{\displaystyle {\vec {x}}}
平移
b
→
{\displaystyle {\vec {b}}}
,與旋轉放大縮小
A
{\displaystyle A}
的仿射映射為
y
→
=
A
x
→
+
b
→
{\displaystyle {\vec {y}}=A{\vec {x}}+{\vec {b}}}
上式在齐次坐标 上,等價於下面的式子
[
y
→
1
]
=
[
A
b
→
0
,
…
,
0
1
]
[
x
→
1
]
{\displaystyle {\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
{\displaystyle f}
'使得
φ
{\displaystyle \varphi }
,決定任一對點的線性變換:
P
,
Q
∈
A
{\displaystyle P,Q\in {\mathcal {A}}}
:
f
(
P
)
f
(
Q
)
→
=
φ
(
P
Q
→
)
{\displaystyle {\overrightarrow {f(P)~f(Q)}}=\varphi ({\overrightarrow {PQ}})}
或者
f
(
Q
)
−
f
(
P
)
=
φ
(
Q
−
P
)
{\displaystyle f(Q)-f(P)=\varphi (Q-P)}
.
其他定義
.
我們可以將此定義繼續延伸:
假設選定一原點 ,
O
∈
A
{\displaystyle O\in {\mathcal {A}}}
且
B
{\displaystyle B}
表示其圖像
f
(
O
)
∈
B
{\displaystyle f(O)\in {\mathcal {B}}}
, 如此即代表對任何向量
x
→
{\displaystyle {\vec {x}}}
:
f
:
(
O
+
x
→
)
↦
(
B
+
φ
(
x
→
)
)
.
{\displaystyle f:(O+{\vec {x}})\mapsto (B+\varphi ({\vec {x}})).}
假設選定一原點
O
′
∈
B
{\displaystyle O'\in {\mathcal {B}}}
,此即可以拆解成一仿射變換
g
:
A
→
B
{\displaystyle g:{\mathcal {A}}\to {\mathcal {B}}}
使得
O
↦
O
′
{\displaystyle O\mapsto O'}
, 特定而言
g
:
(
O
+
x
→
)
↦
(
O
′
+
φ
(
x
→
)
)
,
{\displaystyle g:(O+{\vec {x}})\mapsto (O'+\varphi ({\vec {x}})),}
,
總結即,很直觀的,
f
{\displaystyle f}
包含了一個變換與線性座標。
給定同一場中的兩個仿射空間
A
{\displaystyle {\mathcal {A}}}
與
B
{\displaystyle {\mathcal {B}}}
, 一函數
f
:
A
→
B
{\displaystyle f:{\mathcal {A}}\to {\mathcal {B}}}
為一仿射映射若且唯若對任一加權點的集合
{
(
a
i
,
λ
i
)
}
i
∈
I
{\displaystyle \{(a_{i},\lambda _{i})\}_{i\in I}}
of weighted points in
A
{\displaystyle {\mathcal {A}}}
於 such that
我們得到[ 1]
f
(
∑
i
∈
I
λ
i
a
i
)
=
∑
i
∈
I
λ
i
f
(
a
i
)
.
{\displaystyle f\left(\sum _{i\in I}\lambda _{i}a_{i}\right)=\sum _{i\in I}\lambda _{i}f(a_{i})\,.}
此定義等價於
f
{\displaystyle f}
保留了 質心 .
表示
如上瑣事,仿射變換為兩函數的 composition of two functions: a translation and a 線性映射 . 普通向量代數用矩陣乘法 呈現線性映射, 用 向量加法 表示轉換. 正式言之,於有限維度之例中,假如該線性映射被表示為一矩陣「A」與其轉換之積的額外向量
b
→
{\displaystyle {\vec {b}}}
, acting on a vector
x
→
{\displaystyle {\vec {x}}}
可被表示為
一仿射映射
f
{\displaystyle f}
y
→
=
f
(
x
→
)
=
A
x
→
+
b
→
.
{\displaystyle {\vec {y}}=f({\vec {x}})=A{\vec {x}}+{\vec {b}}.}
增廣矩陣
二維平面上的仿射變換可呈現於三維空間中。轉換是透過於z軸上的裁切與過z軸的旋轉完成
使用一 增廣矩陣 與一增廣向量, 用一矩陣乘法 同時表示轉換與線性映射是有可能的。此技術需要所有向量在其末端擴長 “1”且所有矩陣都於底部添加一排零,右邊擴長一列轉換向量,及右下角添加一個 “1”。
[
y
→
1
]
=
[
A
b
→
0
,
…
,
0
1
]
[
x
→
1
]
{\displaystyle {\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}}}
等價於
y
→
=
A
x
→
+
b
→
.
{\displaystyle {\vec {y}}=A{\vec {x}}+{\vec {b}}.}
以上所言之擴長矩陣被稱為 “仿射變換矩陣”,又或稱為 “投射變換矩陣” (其可應用於 投影轉換 ).
此表示法以 K n 之半直積 與 GL(n , k )展示了 所有可逆 仿射變換的集合。 此為一個於眾函數集結下進行的一個 群 , 被稱為 仿射群
普通矩陣向量乘法總將原點應設置原點,因此無法呈現轉換(原點必須映射至其他點)。藉由於所有向量上擴長一座標 “1”, 有一相當重要的考量—該空間需以更高維空間的一個子集合進行變換。在該空間中,原本之空間佔有了擴長座標一的1的子集合。 因此原空間的原點可在(0,0, ... 0, 1). 原空間的轉換在藉由更高維度空間的線性轉換是可行的 (specifically, a shear transformation). 在高維度中的座標即為 齊次座標 的一例。 假如原空間為歐幾里德 , 則更高維空間為實射影空間 .
使用齊次座標的優點為藉由乘上特定矩陣 結合 任何數目的仿射變換於一。. 此性質被大量運用於 計算機圖形 , 計算機視覺 與機器人學 .
性質
一仿射變換保留了:
# 點之間的共線性;i.e.,通過同一線之點 (即稱為共線點)在變換後仍呈共線。
# 向量沿著一線的比例; i.e.,對相異共線三點
p
1
,
p
2
,
p
3
,
{\displaystyle p_{1},\,p_{2},\,p_{3},}
,
p
1
p
2
→
{\displaystyle {\overrightarrow {p_{1}p_{2}}}}
與
p
2
p
3
→
{\displaystyle {\overrightarrow {p_{2}p_{3}}}}
的比例同於
f
(
p
1
)
f
(
p
2
)
→
{\displaystyle {\overrightarrow {f(p_{1})f(p_{2})}}}
and
f
(
p
2
)
f
(
p
3
)
→
{\displaystyle {\overrightarrow {f(p_{2})f(p_{3})}}}
. .
# 廣義的有權重點集合的質心
一仿射變換為可逆的若且唯若 A為可逆的。在矩陣表示中,其反元素為
[
A
−
1
−
A
−
1
b
→
0
,
…
,
0
1
]
{\displaystyle {\begin{bmatrix}A^{-1}&-A^{-1}{\vec {b}}\ \\0,\ldots ,0&1\end{bmatrix}}}
可逆仿射變換組成仿射群 ,其中包含具n階的一般線性群 為子群,且自身即為一n+1階的一般線性群子群。
相似變換組成一子群,其中A為a scalar乘以正交矩陣 。舉例而言,假如仿射變換於一平面上且假如A之行列式 為1或-1,那麼該變換即為等積變換 。此類變換組成一稱為等仿射群的子集。一同時為等仿射與相似的變換即為一平面參照歐幾里德距離的等距同構。
每一個群都有一變換的子群,子群皆保留了原定向:those where the determinant of A is positive.在最後一例中, this is in 3D the group of rigid body motions (proper rotations and pure translations).
假如有一給定點,我們可以將其當成原始,則仿射變換被縮還至一線性變換。這使得變換更易於分類與理解。舉例而言,將一變換敘述為對應特定軸之特定角度的的旋轉,相較於將其形容為變換與旋轉的集結,更能提供變換行為更清楚的解釋。只是,這取決於應用與內容。
實例
以下等式表示了
§
實數之仿射變換
函數f : R → R , f (x ) = mx + c ,其中 ‘‘m’’ 與 ‘‘c’’為常數, are commonplace affine transformations.
§
有限體的仿射變換
以下等式表示了有限體 (28)中的仿射變換:
{
a
′
}
=
M
{
a
}
⊕
{
v
}
,
{\displaystyle \{\,a'\,\}=M\{\,a\,\}\oplus \{\,v\,\},}
此處[M]為矩陣 且 {v} 為向量 :
此處 [M] 為 矩陣 且 {v } 為 向量
M
{
a
}
=
[
1
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
0
1
1
1
1
1
]
{\displaystyle M\{\,a\,\}={\begin{bmatrix}1&0&0&0&1&1&1&1\\1&1&0&0&0&1&1&1\\1&1&1&0&0&0&1&1\\1&1&1&1&0&0&0&1\\1&1&1&1&1&0&0&0\\0&1&1&1&1&1&0&0\\0&0&1&1&1&1&1&0\\0&0&0&1&1&1&1&1\end{bmatrix}}}
:
{
v
}
=
[
1
1
0
0
0
1
1
0
]
.
{\displaystyle \{\,v\,\}={\begin{bmatrix}1\\1\\0\\0\\0\\1\\1\\0\end{bmatrix}}.}
舉例來講,將以大端序 二進位表示的元素{a} = y 7 + y 6 + y 3 + y = {11001010}轉換成大端序 十六進位,計算如下:
a
0
′
=
a
0
⊕
a
4
⊕
a
5
⊕
a
6
⊕
a
7
⊕
1
=
0
⊕
0
⊕
0
⊕
1
⊕
1
⊕
1
=
1
{\displaystyle 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
⊕
a
1
⊕
a
5
⊕
a
6
⊕
a
7
⊕
1
=
0
⊕
1
⊕
0
⊕
1
⊕
1
⊕
1
=
0
{\displaystyle 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
⊕
a
1
⊕
a
2
⊕
a
6
⊕
a
7
⊕
0
=
0
⊕
1
⊕
0
⊕
1
⊕
1
⊕
0
=
1
{\displaystyle 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
⊕
a
1
⊕
a
2
⊕
a
3
⊕
a
7
⊕
0
=
0
⊕
1
⊕
0
⊕
1
⊕
1
⊕
0
=
1
{\displaystyle 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
⊕
a
1
⊕
a
2
⊕
a
3
⊕
a
4
⊕
0
=
0
⊕
1
⊕
0
⊕
1
⊕
0
⊕
0
=
0
{\displaystyle 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
⊕
a
2
⊕
a
3
⊕
a
4
⊕
a
5
⊕
1
=
1
⊕
0
⊕
1
⊕
0
⊕
0
⊕
1
=
1
{\displaystyle 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
⊕
a
3
⊕
a
4
⊕
a
5
⊕
a
6
⊕
1
=
0
⊕
1
⊕
0
⊕
0
⊕
1
⊕
1
=
1
{\displaystyle 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
⊕
a
4
⊕
a
5
⊕
a
6
⊕
a
7
⊕
0
=
1
⊕
0
⊕
0
⊕
1
⊕
1
⊕
0
=
1.
{\displaystyle 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}.
平面幾何上的仿射轉換
在實數平面上的簡易仿射轉換
實數平面上的一個簡易仿射變換
於單位正方形進行多種2D仿射轉換.
.
在 ℝ2 ,左方變換是透過以下映射完成:
[
x
y
]
↦
[
0
1
2
1
]
[
x
y
]
+
[
−
100
−
100
]
{\displaystyle {\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}}}
將原三角形(紅色)的三角點轉換成新的三角形之點(藍色)。此轉換扭曲並轉譯原三角形。
事實上,所有的三角形都可透過仿射變換彼此相關.這也對任何平行四邊形成立,對所有四邊形則不一定。
参看
^
Schneider, Philip K. & Eberly, David H. Geometric Tools for Computer Graphics . Morgan Kaufmann. 2003: 98. ISBN 978-1-55860-594-7 .