変換行列
From Wikipedia, the free encyclopedia
行列を用いることで、任意の線形変換を計算に適した一貫した形式で表示することができる[1]。これにより、変換を(行列の乗算により)容易に合成することもできる。
行列によって表現することができるのは線形変換だけではない。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番目の列の要素であるを定義する[4]。
固有基底と対角行列
成分が対角行列を形成し、その結果として乗算の計算量が n に減少するような作用素には特別な基底がある。対角行列とは、係数 のうち 以外が全てゼロであり、上記の和において1つの項しか残らないことを意味する。残った対角要素 は固有値として知られており、簡約化された定義式においてと表される。この式は固有値方程式として知られる[5]。固有ベクトルと固有値は、特性多項式を介して導出される。
対角化により、固有基底との相互変換がしばしば可能となる。
2次元における例
原点を固定したほとんどの一般的な幾何学的変換は線形であり、回転、拡大縮小、せん断、鏡映、正射影などが含まれる。アフィン変換が純粋な平行移動でない場合は不動な点が存在し、その点を原点と選択することで変換を線形化することができる。2次元では、線形変換は2×2の変換行列を用いて表すことができる。
伸張
xy平面における伸張(stretch)は、特定の方向への距離を定数倍して拡大し、その垂直方向には影響を与えない線形変換である。ここではx軸とy軸に沿った伸縮のみを考慮する。x軸に沿った伸張は、ある正の定数kに対してx' = kx; y' = yという形をとる(k > 1の場合、実際に「伸張」であるがk < 1は厳密には「圧縮」である。しかしこの場合も同様に伸張と呼ぶ。また、k = 1の場合、この変換は恒等変換、つまり何の影響も与えない)。
x軸に沿って係数kにより引き伸ばす行列は次のように与えられる。
同様に、y軸に沿って係数kにより引き伸ばすと x' = x; y' = kyという形になるため、この変換に関連する行列は次のようになる。
圧搾
上記伸長を2つ逆数値で組み合わせると、変換行列は圧搾写像を表す。 軸に平行な辺を持つ正方形は、正方形と同じ面積を持つ長方形に変換される。二軸が相互に伸縮しても面積は変化しない。
回転
原点周りに反時計回り(正方向)に角度θだけ回転する場合の関数形式は とである。行列の形で書くと、以下のようになる[6]。
同様に、原点周りに時計回り(負方向)する場合の関数形式はとである。行列の形は以下のようになる。
これらの式は、x軸が右向き、y軸が上向きであることを前提としている。
せん断
せん断写像(視覚的には傾斜に似る)の場合、2つの行列が考えられる。
x軸に平行なせん断は、とという関数形式をとり、行列の形では以下のように書ける。
y軸に平行なせん断は、とという関数形式をとり、行列の形では以下のように書ける。
鏡映
原点を通る直線の鏡映では、直線方向のベクトルをとすると、変換行列は以下のようになる。
正射影
ベクトルを原点を通る直線に正射影するには、直線方向のベクトルをとすると、変換行列は次のようになる。
鏡映と同様に、原点を通らない直線への正射影は線形変換ではなくアフィン変換である。
平行射影も線形変換であり、単純に行列で表すことができる。しかし、透視投影は線形変換ではなく、行列で表すには同次座標を使用することができる。
3次元コンピュータグラフィックスにおける使用
回転
単位ベクトル(x,y,z)により定義される任意の軸周りの角度θの回転行列は以下で与えられる[7]。
鏡映
ある点を平面(原点を通る)に関して鏡映させるために、を用いることができる。ここでは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が存在する。実用的な応用の中には、一般的な逆行列アルゴリズムを用いたり、逆演算(逆方向への回転など幾何学的な解釈が明らかなもの)を実行することで逆行列を計算する方法がある。変換が複数の合成である場合は、逆行列を逆順に合成する必要がある。鏡映行列はそれ自体の逆行列であるため、別途計算する必要がない。

