アフィン写像

幾何学における**アフィン写像**（アフィンしゃぞう、）はベクトル空間（厳密にはアフィン空間）の間で定義される、平行移動を伴う線型写像である。アフィン  はラテン語で「類似・関連」を意味する  に由来する。

始域と終域が同じであるようなアフィン写像は**アフィン変換**（アフィンへんかん、）と呼ばれる。アフィン写像はアフィン空間の構造を保つ。

## 基本事項
一般に、アフィン変換は線型変換（回転、拡大縮小、せん断）と平行移動の組み合わせである。鏡映もアフィン変換に含まれる。

いくつかの線型変換の組合せは一つの線型変換として得られるから、アフィン変換は一般に
:x \mapsto A x+ b
の形で書けるもので尽くされる。有限次元の場合には、アフィン変換は適当な性質を満たす行列 *A* とベクトル *b* を用いて表すことができる。

幾何学的には、ユークリッド空間内のアフィン変換は以下のような構造を保つ。
# 共線性: （任意の）同一直線上にある3点のアフィン変換による像は、やはり同一直線上にある3点となる。
# 線分比: 同一直線上にある3点 *p*1, *p*2, *p*3 に対して、比|p_2-p_1| / |p_3-p_2|は変換後も変わらない。

## 形式的定義
アフィン空間 (*A*, *V*(*A*)), (*B*, *V*(*B*)) に対し、写像 *f*: *A* &rarr; *B* と *f* が引き起こす線型写像 *V*(*f*): *V*(*A*) &rarr; *V*(*B*) の組 (*f*, *V*(*f*)) をアフィン写像という。ここで *f* が *V*(*f*) を引き起こすとは、*f* と *V*(*f*) との間に条件

# 任意の *a* &isin; *V*(*A*) に対し、a = \overrightarrow{\mathrm{PQ}}\quad(\mathrm{P},\mathrm{Q}\in A) \Rightarrow V(f)(a) = \overrightarrow{f(\mathrm{P})f(\mathrm{Q})}が成り立つ。
# 任意の P &isin; *A*, *a* &isin; *V* に対し、*f*(P + *a*) = *f*(P) + *V*(*f*)(*a*) が成り立つ。ただし、"+ *a*", "+ *V*(*f*)(*a*)" はそれぞれ、*A*, *B* における平行移動を表す。
が満たされることをいう。このアフィン写像を *f* &times; *V*(*f*): (*A*, *V*(*A*)) &rarr; (*B*, *V*(*B*)) あるいは単に *f*: *A* &rarr; *B* で表す。

原点を固定して *A* = O + *V*(*A*), *B* = O&prime; + *V*(*B*) とみるとき、アフィン写像 *f*: *A* &rarr; *B* は具体的に *A* の点 P に対して
: f(\mathrm{P}) = f(\mathrm{O} + \overrightarrow{\mathrm{OP}}) = f(\mathrm{O}) + V(f)(\overrightarrow{\mathrm{OP}}) = \mathrm{O}' + (V(f)(\overrightarrow{\mathrm{OP}}) + \overrightarrow{\mathrm{O}'f(\mathrm{O})})
と書くことができて、特に位置ベクトルの間の関係
: y = V(f)(x) + b \quad (x:=\overrightarrow{\mathrm{OP}},\, y:=\overrightarrow{\mathrm{O}'f(\mathrm{P})},\,b := \overrightarrow{\mathrm{O}'f(\mathrm{O})})
が得られる。つまり、アフィン写像は位置ベクトルの空間としての *V*(*A*) と *V*(*B*) の間で、線型写像 *T* = *V*(*f*) と定ベクトル *b* による平行移動の合成 *y* = *Tx* + *b* として作用することがわかる（位置ベクトルについてみれば *V*(*f*) と *b* の分だけずれている）。

## アフィン変換の表現
通常のベクトルに関する代数学では、行列の積によって線型変換をあらわし、ベクトルの加法で平行移動を表す。あるいは拡大係数行列  を用いれば、双方を行列の積を用いて表すことができる。この場合は、どのベクトルも最後に余分な成分として 1 を付け加え、どの行列も 0 のみからなる余分な行を下に追加して、平行移動を表す列を右に加えることになる（ただし、右下の角には 1 を追加する）。つまり、*A* を行列とし、各ベクトルは縦ベクトルとして

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


と書けば、これは *y* = *Ax* + *b* と書くのと等価である。行列とベクトルに関する通常の積はつねに原点を原点に移すから、したがって原点を他の点に移すことが必要になる平行移動を表現することはできない。任意のベクトルに 1 を追加することにより、本質的には変換される空間を余計な次元をもつ空間の部分集合と看做すことになる。この大きな空間のなかでは、もとの空間は最後の成分が 1 であるようなベクトル全体の成す部分空間となるから、もとの空間の原点は (0,0, ..., 0, 1) として得られる。もとの空間における平行移動は、この大きな空間の中では線型変換（とくに剪断変形）と見ることができる。これは斉次座標  の例になっている。

斉次座標系を用いることは、複数のアフィン変換の組合せを行列の積によって一つに纏めて扱うことができるという点で有利である。これはコンピュータグラフィックスやコンピュータビジョン等で広く用いられる道具である。

## アフィン変換の性質
アフィン変換が可逆であるとき、正則アフィン変換という。アフィン変換が正則となるのは、線型変換部分 *A* が正則であるときであり、そのときに限る。有限次元の場合、拡大係数行列による表現をもちいれば、逆変換は

:
\begin{pmatrix} A^{-1} & -A^{-1}b \\ 0,\ldots,0 & 1 \end{pmatrix}


で与えられる。正則アフィン変換の全体はアフィン変換群を成す。*n*-次元空間上のアフィン変換群 aff*n* は、*n*-次一般線型群 *GL**n* を部分群として含み、それ自身は (*n*+1)-次一般線型群 *GL**n*+1 の部分群を成す。

相似変換の全体は直交変換のスカラー倍で表される変換全体の成すアフィン変換群の部分群である。アフィン変換の線型変換部分 *A* の行列式の値が 1 または &minus;1 であることと、その変換で面積が保たれる（等積変換である）こととは同値であり、そのようなアフィン変換の全体もまた部分群を成す。両方の条件を組み合わせれば等距変換を得るが、そのような変換は線型変換部分 *A* が直交変換となるものであり、その全体は相似変換群と等積変換群双方の部分群を成す。

これらの群はどれも、（線型変換部分 *A* の行列式が正であるがゆえに）向きを保つ変換からなる部分群をもつ。3-次元での等距変換群は剛体の運動（真の回転と純平行移動）全体の成す群である。

任意の行列 *A* について以下の条件は互いに同値である。
* *A* &minus; *I* が可逆行列（*I* は単位行列）。
* *A* は 1 を固有値に持たない。
* 任意のベクトル *b* に対して、アフィン変換 *Ax* + *b* はちょうど一つの不動点を持つ。
* 適当な *b* を選んで、アフィン変換 *Ax* + *b* がちょうど一つの不動点をもつようにすることができる。
* 線型変換部分が *A* であるようなアフィン変換は、適当な点を原点と見て線型変換として書くことができる。

もしアフィン変換が不動点を持てば、それを原点とみなすことにより、アフィン変換を線型変換に簡約化することができ、変換の分類と理解の助けとすることができる。たとえば、変換をある軸に関するある角の回転として記述することは、変換を回転と平行移動の組み合わせとして記述することに比べれば、全体での振舞いを把握するのは容易である。しかしこれは対象とするものと文脈に依存する。「物体」に対する変換を記述するのであれば、離れたところにある点に関する単一の回転として記述するよりも、適当な平行移動を組み合わせて物体の中心を通る軸に関する回転として記述するほうが意味のある場合も多い。たとえば、「200m 北へ行き、反時計回りに 90&deg; 回転する」というほうが、同じ意味の「141m 北東にある点を中心に反時計回りに 90&deg; 回転する」というよりも判りやすい。

不動点を持たない（したがって *A* が 1 を固有値に持つ）平面上のアフィン変換は以下のいずれかである。
* 純平行移動。
* ある方向への直線に関して（必ずしも直交しない）別の与えられた方向への拡大縮小と、拡縮方向へは純でない平行移動との組合せ。スケール因子は別の固有値で、一般化された意味での拡大縮小はスケール因子が 0 である場合（射影）や負である場合（鏡映や映進など）を含む。
* 剪断と剪断方向へは純でない平行移動との組み合わせ（固有値は 1 のみで、対数的重複度は 2 だが幾何的重複度は 1）。

## アフィン変換と線型変換
幾何学的な設定で、アフィン変換はちょうど直線を直線に写す。

線型変換は任意の線型結合を保つ写像であり、アフィン変換は任意のアフィン結合を保つ写像である。ここで**アフィン結合**とは、係数の総和が 1 に等しいような線型結合をいう。

ベクトル空間の**部分アフィン空間**（あるいは**線型多様体**）は部分線型空間の各ベクトルにある定ベクトルを加えることによって得られる、部分線型空間で割った同値類である。ベクトル空間の部分線型空間は、線型結合に関して閉じている部分集合であり、部分アフィン空間はアフィン結合に関して閉じている部分集合である。

たとえば **R***3* において、原点、原点を通る直線、原点を通る平面、空間全体は部分線型空間であり、一般の点、直線、平面、空間全体は部分アフィン空間である。

ベクトルからなる系が、系に属するどのベクトルも他の線型結合に表されることが無いとき線型独立というのと同様、どのベクトルも他のアフィン結合に表されることが無いとき**アフィン独立**であるという。ベクトルからなる集合に対して、その線型結合全体の成す集合をそれらのベクトルが「（線型に）張る（あるいは生成する）」といい、常に部分線型空間を成すのと同様に、アフィン結合の全体の成す集合はそれらが「（アフィン的に）張る（あるいは生成する）」といい、常に部分アフィン空間を成す。たとえば、二点からなる集合がアフィン的に張る部分集合はその二点を含む直線であり、同一直線上にない三点がアフィン的に生成する部分空間はその三点を含む平面である。ベクトルの集合 *v*1, *v*2, ..., *v**n* が線型従属であるとは、ベクトル *a* = (*a*1, *a*2, … ,*a**n*)T で条件 *a* &ne; 0 かつ *a*1*v*1 + *a*2*v*2 + &hellip; + *a**n**v**n* = *0* を満たすものが存在する場合にいう。同様にこれらのベクトルが**アフィン従属**であるとは、同じ条件に加えて

: \sum_{i=1}^n a_i = 0

をも満たす場合をいう。ベクトル *a* はベクトルの集合 *v*1, *v*2, ..., *v**n* にアフィン従属である。

可逆アフィン変換全体の集合は写像の合成を演算として群を成す。アフィン群と呼ばれるこの群は、*K**n* と *GL*(*n*, *k*) との半直積である。

## 平面上のアフィン変換

ユークリッド平面上の一般アフィン変換を可視化するために、*ABCD* および *A*&prime;*B*&prime;*C*&prime;*D*&prime; でラベル付けられた平行四辺形をとる。点の取り方がどのようなものであっても、アフィン変換 *T* で *A*, *B*, *C*, *D* をそれぞれ *A*&prime;, *B*&prime;, *C*&prime;, *D*&prime; へ写すものが存在する。ここで平行四辺形 *ABCD* が面積 0 に退化していないものと仮定すれば、そのようなアフィン変換 *T* は一意に決まる。平行四辺形 *ABCD* を基本として平面全体に格子を描けば、*T*(*A*) = *A*&prime; および、線分 *AB*, *AC* をそれぞれ *A*&prime;*B*&prime;, *A*&prime;*C*&prime; に写すこと、また *T* が *A* を基点とするベクトルのスカラー倍を保つ（たとえば、*A*, *E*, *F* が同一直線上にないならば、長さについて *AF*/*AE* = *A*&prime;*F*&prime;/*A*&prime;*E*&prime; が成り立つ）ことに注意して、任意の点 *P* の像 *T*(*P*) を決定することができる。幾何学的には、*T* は *ABCD* を基本とする格子を *A*&prime;*B*&prime;*C*&prime;*D*&prime; を基本とする格子に写す。

アフィン変換は長さか角のいずれかを保存せず、面積を 

: （*A*&prime;*B*&prime;*C*&prime;*D*&prime; の面積）/（*ABCD* の面積）

で与えられる定数倍する。与えられたアフィン変換 *T* は**正**（; 向きを保つ）か**逆**（; 向きを逆にする）かのいずれかであり、（たとえばクロス積で与えられる）「符号付面積」に対する効果によって決定することができる。

## アフィン変換の例
次の等式

:
\{\,a'\,\} = [M]\{\,a\,\} + \{\,v\,\},


は有限体 **F**2 上のアフィン変換で、"+" は排他的論理和を表しているとする。ここで [*M*] は行列

:
\begin{pmatrix}
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{pmatrix}


とし、ベクトル {*v*} は (1, 1, 0, 0, 0, 1, 1, 0)T とする。このアフィン変換でたとえば、元 {a} = *x*7 + *x*6 + *x*3 + *x* = {11001010}（ビッグ・エンディアン二進表示）= {CA}（ビッグ・エンディアン十六進表示）の変換先は

: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*&prime;} = *x*7 + *x*6 + *x*5 + *x*3 + *x*2 + 1 = {11101101} = {ED} となる。

## 関連項目
*変換行列
*変換 (数学)
*アフィン幾何学
*相似拡大変換
*相似変換
*線型変換
*平坦性

## 外部リンク
* Geometric Operations: Affine Transform, R. Fisher, S. Perkins, A. Walker and E. Wolfart.
* 
* *[http://demonstrations.wolfram.com/AffineTransform/ Affine Transform]* by Bernard Vuilleumier, Wolfram Demonstrations Project.
* Affine Transform on PlanetMath