変換行列

線形代数において、線形変換は行列で表すことができる。がからへの写像を行う線形変換であり、がn個の要素を持つ列ベクトルであるとき、以下の式のようなの行列が存在し、の変換行列（へんかんぎょうれつ、Transformation matrix）と呼ばれる。
は行と列を持つのに対し、変換行列はからへの変換であることに注意。行ベクトルを対象とする変換行列の表現もあり、この表記を好む者もいる。

**使用**
行列を用いることで、任意の線形変換を計算に適した一貫した形式で表示することができる。これにより、変換を（行列の乗算により）容易に合成することもできる。
行列によって表現することができるのは線形変換だけではない。n次元のユークリッド空間Rnにおける非線形な変換の一部は、(n+1)次元空間Rn+1における線形変換として表現することができる。これにはアフィン変換（平行移動など）及び射影変換が含まれる。そのため、4×4の変換行列は3次元コンピュータグラフィックスで広く用いられている。この(n+1)次元の変換行列は用途に応じて「アフィン変換行列」、「射影変換行列」またはより一般的に「非線形変換行列」と呼ばれる。n次元の行列に関して、(n+1)次元の行列は拡大行列と説明することができる。
物理科学において、能動変換(:en:active transformation)は、系の物理的な位置を実際に変化させる変換であり、座標系が存在しない場合にも意味を持つ。一方で、受動変換(:en:passive transformation)は、物理系の座標記述における変化（基底変換）である。能動変換と受動変換との区別は重要である。数学者は通常「変換」という場合にはそれは能動変換を指すが、物理学者の場合はどちらも指す場合がある。
言い換えると、「受動的な」変換は同じ物体を2つの異なる座標系から見た場合の記述である。

**変換行列の見つけ方**
線形変換が関数形式で与えられている場合、標準基底の各ベクトルをTで変換し、その結果を行列の列に挿入することで変換行列Tを簡単に決定することができる。言い換えると以下のように表すことができる。
例えば、関数  は線形変換である。上記の過程を適用すると（n = 2とする）、次のようになる。
ベクトルと作用素の行列表現は選択した基底により異なる。基底を変えても相似した行列が得られる。ただし、成分を求める方法は変わらない。
詳しく言うと、ベクトルは、基底ベクトル  において、座標  によって以下のように表現することができる。
ここで、与えられた基底におけるへの変換行列Aの結果を次のように表す。
行列Aの要素は、与えられた基底Eに対してAを全てのに適用し、応答ベクトルを観察することで決定される。
この式は行列Aのj番目の列の要素であるを定義する。

**固有基底と対角行列**
成分が対角行列を形成し、その結果として乗算の計算量が n に減少するような作用素には特別な基底がある。対角行列とは、係数  のうち  以外が全てゼロであり、上記の和において1つの項しか残らないことを意味する。残った対角要素  は固有値として知られており、簡約化された定義式においてと表される。この式は固有値方程式として知られる。固有ベクトルと固有値は、特性多項式を介して導出される。
対角化により、固有基底との相互変換がしばしば可能となる。

**2次元における例**
原点を固定したほとんどの一般的な幾何学的変換は線形であり、回転、拡大縮小、せん断、鏡映、正射影などが含まれる。アフィン変換が純粋な平行移動でない場合は不動な点が存在し、その点を原点と選択することで変換を線形化することができる。2次元では、線形変換は2×2の変換行列を用いて表すことができる。

**伸張**
xy平面における伸張(stretch)は、特定の方向への距離を定数倍して拡大し、その垂直方向には影響を与えない線形変換である。ここではx軸とy軸に沿った伸縮のみを考慮する。x軸に沿った伸張は、ある正の定数kに対して1=x' = kx; 1=y' = yという形をとる（1=k > 1の場合、実際に「伸張」であるが1=k k = 1の場合、この変換は恒等変換、つまり何の影響も与えない）。
x軸に沿って係数kにより引き伸ばす行列は次のように与えられる。
同様に、y軸に沿って係数kにより引き伸ばすと 1=x' = x; 1=y' = kyという形になるため、この変換に関連する行列は次のようになる。

**圧搾**
上記伸長を2つ逆数値で組み合わせると、変換行列はsqueeze mappingを表す。
軸に平行な辺を持つ正方形は、正方形と同じ面積を持つ長方形に変換される。二軸が相互に伸縮しても面積は変化しない。

**回転**
原点周りに反時計回り（正方向）に角度θだけ回転する場合の関数形式は とである。行列の形で書くと、以下のようになる。
同様に、原点周りに時計回り（負方向）する場合の関数形式はとである。行列の形は以下のようになる。
これらの式は、x軸が右向き、y軸が上向きであることを前提としている。

**せん断**
せん断写像（視覚的には傾斜に似る）の場合、2つの行列が考えられる。
x軸に平行なせん断は、とという関数形式をとり、行列の形では以下のように書ける。
y軸に平行なせん断は、とという関数形式をとり、行列の形では以下のように書ける。

**鏡映**
原点を通る直線の鏡映では、直線方向のベクトルをとすると、変換行列は以下のようになる。

**正射影**
ベクトルを原点を通る直線に正射影するには、直線方向のベクトルをとすると、変換行列は次のようになる。
鏡映と同様に、原点を通らない直線への正射影は線形変換ではなくアフィン変換である。
平行射影も線形変換であり、単純に行列で表すことができる。しかし、透視投影は線形変換ではなく、行列で表すにはHomogeneous coordinatesを使用することができる。

**3次元コンピュータグラフィックスにおける使用**

**回転**
単位ベクトル(x,y,z)により定義される任意の軸周りの角度θの回転行列は以下で与えられる。

**鏡映**
ある点を平面（原点を通る）に関して鏡映させるために、を用いることができる。ここでは3×3の単位行列では平面の法線ベクトルとなる3次元単位ベクトルである。a, b, cのL2ノルムが1の場合、変換行列は次のように表すことができる
これらは2次元及び3次元におけるハウスホルダー鏡映の特殊なケースである。原点を通らない直線又は平面に関する鏡映は線形変換ではなく、アフィン変換である。4×4のアフィン変換行列は次のように表すことができる（法線が単位ベクトルであると仮定）。
ここでdは、平面上のある点に対して、または等価な式を満たす。
ベクトルの4番目の成分が1ではなく0である場合、ベクトルの方向のみが鏡映され大きさは変化しない。これは、元の鏡映面と平行で原点を通る平面によって鏡映されたかのように見える。このことは位置ベクトルと法線ベクトルの両方を同じ行列で変換することができる点で便利な性質である。後段のアフィン変換も参照のこと。

**変換の合成と逆変換**
線形変換を表現するために行列を用いる主な理由の1つは、変換の合成や逆変換が容易になることである。
合成は行列の乗算により行われる。
AとBが2つの線形変換の行列であり、列ベクトルに最初にAを適用しその後Bを適用することは以下の式で与えられる。
言い換えると、変換Aと変換Bを続けて行う変換の行列は、単に各々の行列の積である。
Aが可逆行列であるとき、Aとの合成が単位行列になりAを「元に戻す」変換を表す行列A−1が存在する。実用的な応用の中には、一般的な逆行列アルゴリズムを用いたり、逆演算（逆方向への回転など幾何学的な解釈が明らかなもの）を実行することで逆行列を計算する方法がある。変換が複数の合成である場合は、逆行列を逆順に合成する必要がある。鏡映行列はそれ自体の逆行列であるため、別途計算する必要がない。

**他の種類の変換**

**アフィン変換**
単位正方形に様々な2次元アフィン変換行列を適用した場合の効果。鏡映行列は拡大縮小行列の特殊なケースであることに注意。
2次元平面上のアフィン変換は3次元でも実行できる。平行移動はxy平面に平行にせん断することで行われ、回転はz軸を中心に行われる。
アフィン変換を行列で表すにはHomogeneous coordinatesを使用することができる。これは、2次元ベクトル (x, y) を3次元ベクトル (x, y, 1)として表すことを意味し、より高次元の場合も同様である。これにより並進を行列の乗算で表すことができる。関数形式はであり、行列は以下のように表される。
通常の線形変換は全てアフィン変換の集合に含まれており、アフィン変換の簡略化された形式として記述できる。したがって、任意の線形変換は一般化された変換行列によっても表すことができる。アフィン変換の変換行列は対応する線形変換行列を1行1列拡張して右下隅の要素を1に、他の要素を0にすることで得られる。例えば上記の反時計回りの回転行列は次のようになる。
同次座標を含む変換行列を用いると、平行移動は線形となり他のあらゆる種類の変換とシームレスに混在させることができる。これは、実平面が実射影空間の1=w = 1平面に写像されるため、実ユークリッド空間における平行移動は実射影空間におけるせん断として表すことができるためである。平行移動は直交座標で記述される2次元又は3次元ユークリッド空間では非線形変換である（つまり、可換性やその他の特性を維持しながら他の変換と組み合わせることはできない）が、同次座標で記述される3次元又は4次元射影空間では単純な線形変換（せん断）になる。
2つ以上のアフィン変換を合成することで、より多くのアフィン変換が得られる。例えば、ベクトルの平行移動 T、反時計回りの角度θの回転R、要素の拡大縮小S、の平行移動Tが与えられるとき、それらを合成したT'RSTの変換行列は以下のようになる。
アフィン変換を用いると、座標ベクトルの同次成分（通常はwと呼ばれる）は変化しない。したがって、常に1であると仮定して無視しても問題ない。しかし、透視投影を用いる場合は異なる。

**透視投影**
単位正方形に2次元アフィン変換行列と透視変換行列を適用した場合の効果の比較。
3次元コンピュータグラフィックスにおいて重要なもう1つの変換は透視投影である。平行投影は点を平行線に沿って画像平面に投影するために使用されるが、透視投影は投影中心と呼ばれる単一の点から発せられる線に沿って画像平面に点を投影する。このことは物体が投影中心から遠いほど投影範囲が小さくなり、近いほど投影範囲が大きくなることを意味する。
最も単純な透視投影では、原点を投影の中心としての平面を像平面とする。すると、この変換の関数形式は; となる。これを同次座標で表すと次のようになる。
行列の乗算を行うと、同次成分はの値と等しくなり、他の3つは変化しない。したがって、実平面に写像し直すには各成分をにより割る同次除算(homogeneous divide)または透視除算(perspective divide)を実行する必要がある。
これを回転、拡大縮小、平行移動およびせん断と組み合わせて像平面と投影中心を任意の場所に移動することで、より複雑な透視投影を作成できる。

**出典**

**外部リンク**
   The Matrix Page Practical examples in POV-Ray-  Reference page - Rotation of axes-  Linear Transformation Calculator-  Transformation Applet - Generate matrices from 2D transformations and vice versa.-  Coordinate transformation under rotation in 2D-  Excel Fun - Build 3D graphics from a spreadsheet