線形代数における中心的なオブジェクト。ベクトルをベクトルにマッピングする
線型代数
では 、 線型変換は 行列 で表すことができます 。 がに マッピングされる線型変換 で 、が要素を 持つ 列ベクトル である場合 、
ある行列 に対して 、 は の 変換行列 と呼ばれます 。 [ 要出典 ] には行と列 があります が、変換は から への変換であること に注意してください。 行ベクトル を含む変換行列の代替表現があり 、一部の著者はそれを好んでいます。 [1] [2]
T
{\displaystyle T}
R
ん
{\displaystyle \mathbb {R} ^{n}}
R
メートル
{\displaystyle \mathbb {R} ^{m}}
x
{\displaystyle \mathbf {x} }
ん
{\displaystyle n}
T
(
x
)
=
あ
x
{\displaystyle T(\mathbf {x} )=A\mathbf {x} }
メートル
×
ん
{\displaystyle m\times n}
あ
{\displaystyle A}
T
{\displaystyle T}
あ
{\displaystyle A}
メートル
{\displaystyle m}
ん
{\displaystyle n}
T
{\displaystyle T}
R
ん
{\displaystyle \mathbb {R} ^{n}}
R
メートル
{\displaystyle \mathbb {R} ^{m}}
用途
行列は、任意の 線形変換を 計算に適した一貫した形式で表示することを可能にします。 [3] これにより、変換を簡単に 構成する こともできます(行列を乗算することによって)。
行列で表現できるのは線形変換だけではありません。n 次元ユークリッド空間 R n 上で非線形な変換の一部は、 n +1 次元空間 R n +1 上で線形変換として表現できます 。これらには、 アフィン変換( 平行移動 など ) と 射影変換の 両方が含まれます。このため、4×4 変換行列は 3D コンピュータ グラフィックス で広く使用されています。これらの n +1 次元変換行列は、その用途に応じて、 アフィン変換行列 、 射影変換行列 、またはより一般的には 非線形変換行列と呼ばれます。n 次元 行列に関して 、 n +1 次元行列は 拡張行列 として記述できます。
物理科学 において 、 能動的な変換とは、 システム の物理的位置を実際に変更し、 座標系 がなくても意味をなす変換のことです。 一方、受動的な 変換 とは、物理システムの座標記述の変更 ( 基底の変更) です。能動的な変換と受動的な 変換 の区別は重要です。デフォルトでは、 変換 というと 、 数学者は 通常、能動的な変換を意味しますが、 物理学者は どちらを意味する場合もあります。
言い換えれば、 受動 変換とは、2 つの異なる座標フレームから見た
同じ オブジェクトの記述を指します。
関数形式の線形変換がある場合、 標準基底 の各ベクトルを T で変換し、その結果を行列の列に挿入することで、変換行列 A を簡単に決定できます 。言い換えると、
T
(
x
)
{\displaystyle T(x)}
あ
=
[
T
(
e
1
)
T
(
e
2
)
⋯
T
(
e
ん
)
]
{\displaystyle A={\begin{bmatrix}T(\mathbf {e} _{1})&T(\mathbf {e} _{2})&\cdots &T(\mathbf {e} _{n}) \end{bmatrix}}}
例えば、関数は 線形変換です。上記のプロセスを適用すると( この場合
n = 2と仮定)、次の式が得られます。
T
(
x
)
=
5
x
{\displaystyle T(x)=5x}
T
(
x
)
=
5
x
=
5
私
x
=
[
5
0
0
5
]
x
{\displaystyle T(\mathbf {x} )=5\mathbf {x} =5I\mathbf {x} ={\begin{bmatrix}5&0\\0&5\end{bmatrix}}\mathbf {x} }
ベクトルと演算子の行列表現は、選択した基底によって異なります。基底が変わっても、 同様の 行列が生成されます。ただし、成分を見つける方法は同じです。
詳しく言うと、ベクトルは 座標を持つ 基底ベクトルで 表すことができます 。
ヴ
{\displaystyle \mathbf {v} }
え
=
[
e
1
e
2
⋯
e
ん
]
{\displaystyle E={\begin{bmatrix}\mathbf {e} _{1}&\mathbf {e} _{2}&\cdots &\mathbf {e} _{n}\end{bmatrix}}}
[
ヴ
]
え
=
[
ヴ
1
ヴ
2
⋯
ヴ
ん
]
T
{\displaystyle [\mathbf {v} ]_{E}={\begin{bmatrix}v_{1}&v_{2}&\cdots &v_{n}\end{bmatrix}}^{\mathrm {T} }}
ヴ
=
ヴ
1
e
1
+
ヴ
2
e
2
+
⋯
+
ヴ
ん
e
ん
=
∑
私
ヴ
私
e
私
=
え
[
ヴ
]
え
{\displaystyle \mathbf {v} =v_{1}\mathbf {e} _{1}+v_{2}\mathbf {e} _{2}+\cdots +v_{n}\mathbf {e} _ {n}=\sum _{i}v_{i}\mathbf {e} _{i}=E[\mathbf {v} ]_{E}}
ここで、与えられた基底における への変換行列 A の結果を次のように表します 。
ヴ
{\displaystyle \mathbf {v} }
あ
(
ヴ
)
=
あ
(
∑
私
ヴ
私
e
私
)
=
∑
私
ヴ
私
あ
(
e
私
)
=
[
あ
(
e
1
)
あ
(
e
2
)
⋯
あ
(
e
ん
)
]
[
ヴ
]
え
=
あ
⋅
[
ヴ
]
え
=
[
e
1
e
2
⋯
e
ん
]
[
1つの
1
、
1
1つの
1
、
2
⋯
1つの
1
、
ん
1つの
2
、
1
1つの
2
、
2
⋯
1つの
2
、
ん
⋮
⋮
⋱
⋮
1つの
ん
、
1
1つの
ん
、
2
⋯
1つの
ん
、
ん
]
[
ヴ
1
ヴ
2
⋮
ヴ
ん
]
{\displaystyle {\begin{aligned}A(\mathbf {v} )&=A\left(\sum _{i}v_{i}\mathbf {e} _{i}\right)=\sum _{ i}{v_{i}A(\mathbf {e} _{i})}\\&={\begin{bmatrix}A(\mathbf {e} _{1})&A(\mathbf {e} _{2})&\cdots &A(\mathbf {e} _{n})\end{bmatrix}}[\mathbf {v} ]_{E}= A\cdot [\mathbf {v} ]_{E}\\[3pt]&={\begin{bmatrix}\mathbf {e} _{1}&\mathbf {e} _{2}&\cdots &\mathbf {e} _{n}\end{bmatrix}}{\begin{bmatrix}a_{1,1}&a_{1,2}&\cdots &a_{1,n} \\a_{2,1}&a_{2,2}&\cdots &a_{2,n}\\\vdots &\vdots &\ddots &\vdots \\a_{n,1}&a_{n,2} &\cdots &a_{n,n}\\\end{bmatrix}}{\begin{bmatrix}v_{1}\\v_{2}\\\vdots \\v_{n}\end{bmatrix}}\終了{aligned}}}
行列 A の要素は 、与えられた基底 Eに対して、 Aを あらゆるに 適用し 、応答ベクトルを観察すること
によって決定される。
1つの
私
、
じゅう
{\displaystyle a_{i,j}}
e
じゅう
=
[
0
0
⋯
(
ヴ
じゅう
=
1
)
⋯
0
]
T
{\displaystyle \mathbf {e} _{j}={\begin{bmatrix}0&0&\cdots &(v_{j}=1)&\cdots &0\end{bmatrix}}^{\mathrm {T} }}
あ
e
じゅう
=
1つの
1
、
じゅう
e
1
+
1つの
2
、
じゅう
e
2
+
⋯
+
1つの
ん
、
じゅう
e
ん
=
∑
私
1つの
私
、
じゅう
e
私
。
{\displaystyle A\mathbf {e} _{j}=a_{1,j}\mathbf {e} _{1}+a_{2,j}\mathbf {e} _{2}+\cdots +a_ {n,j}\mathbf {e} _{n}=\sum _{i}a_{i,j}\mathbf {e} _{i}.}
この式は行列 Aの j 列目の 必要な要素を定義する 。 [4]
1つの
私
、
じゅう
{\displaystyle a_{i,j}}
固有基底と対角行列
しかし、演算子には特別な基底があり、その成分は 対角行列 を形成し、したがって乗算の複雑さは n に減少します。対角であるということは、 を除くすべての係数 がゼロであり、 上記の和に 1 つの項のみが残ることを意味します。生き残った対角要素 は 固有値 と呼ばれ 、 定義方程式内で で指定され、 に減少します。結果として得られる方程式は、 固有値方程式 として知られています 。 [5] 固有ベクトルと固有値は、 特性多項式 を介してこの方程式から導出されます 。
1つの
私
、
じゅう
{\displaystyle a_{i,j}}
1つの
私
、
私
{\displaystyle a_{i,i}}
∑
1つの
私
、
じゅう
e
私
{\textstyle \sum a_{i,j}\mathbf {e} _{i}}
1つの
私
、
私
{\displaystyle a_{i,i}}
λ
私
{\displaystyle \lambda_{i}}
あ
e
私
=
λ
私
e
私
{\displaystyle A\mathbf {e} _{i}=\lambda _{i}\mathbf {e} _{i}}
対角化を 使用すると 、 固有基数との間で
変換 できる 場合が多くあります。
2次元の例
原点を固定する最も一般的な 幾何学的変換は 線形であり、回転、拡大縮小、せん断、反射、正射影が含まれます。アフィン変換が純粋な平行移動でない場合は、ある点が固定され、その点を原点として選択して変換を線形にすることができます。2 次元では、線形変換は 2×2 変換行列を使用して表すことができます。
ストレッチ
xy 平面での伸縮は 、特定の方向のすべての距離を一定の係数で拡大する線形変換ですが、垂直方向の距離には影響しません。ここでは、 x 軸と y 軸に沿った伸縮のみを考慮します。 x 軸に沿った伸縮は、 正の定数 kに対して x' = kx ; y' = y という形式になります。( k > 1 の場合、これは実際には「伸縮」です。 k < 1 の場合、技術的には「圧縮」ですが、それでも伸縮と呼びます。また、 k = 1 の場合、変換は恒等変換、つまり効果がありません。)
x軸に沿って
係数 k で伸縮する行列は次のように表されます。
[
け
0
0
1
]
{\displaystyle {\begin{bmatrix}k&0\\0&1\end{bmatrix}}}
同様に、 y軸に沿った 係数 kによる伸縮は x' = x ; y' = kyの 形をとるので、この変換に関連する行列は次のようになる。
[
1
0
0
け
]
{\displaystyle {\begin{bmatrix}1&0\\0&k\end{bmatrix}}}
圧迫
上記の 2 つの伸縮を逆数値で組み合わせると、変換行列は 圧縮マッピング を表します。
つまり
、軸に平行な辺を持つ正方形は、正方形と同じ面積を持つ長方形に変換されます。伸縮と圧縮の逆数により、面積は不変になります。
[
け
0
0
1
/
け
]
。
{\displaystyle {\begin{bmatrix}k&0\\0&1/k\end{bmatrix}}.}
回転
原点を中心に時計回り (正方向)に角度θだけ 回転する 場合、 関数形は およびとなる 。これを行列形式で書くと次のようになる。 [6]
x
′
=
x
コス
θ
+
ええ
罪
θ
{\displaystyle x'=x\cos\theta +y\sin\theta }
ええ
′
=
−
x
罪
θ
+
ええ
コス
θ
{\displaystyle y'=-x\sin \theta +y\cos \theta }
[
x
′
ええ
′
]
=
[
コス
θ
罪
θ
−
罪
θ
コス
θ
]
[
x
ええ
]
{\displaystyle {\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}\cos \theta &\sin \theta \\-\sin \theta &\cos \theta \end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}}
同様に、 原点を中心に 反時計回り (負の方向)に回転する場合、関数形式は次のようになり、行列形式は次 のようになります。
x
′
=
x
cos
θ
−
y
sin
θ
{\displaystyle x'=x\cos \theta -y\sin \theta }
y
′
=
x
sin
θ
+
y
cos
θ
{\displaystyle y'=x\sin \theta +y\cos \theta }
[
x
′
y
′
]
=
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
[
x
y
]
{\displaystyle {\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}\cos \theta &-\sin \theta \\\sin \theta &\cos \theta \end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}}
これらの式では、 x 軸が右を向き、 y 軸が上を向いていることを前提としています 。
剪断
シアマッピング (視覚的には傾斜に似ています)
の場合、2 つの可能性があります。
x 軸 に平行なせん断は 、およびを持ちます 。これを行列形式で記述すると、次のようになります。
x
′
=
x
+
k
y
{\displaystyle x'=x+ky}
y
′
=
y
{\displaystyle y'=y}
[
x
′
y
′
]
=
[
1
k
0
1
]
[
x
y
]
{\displaystyle {\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}1&k\\0&1\end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}}
y 軸に平行なせん断は および を 持ち 、これは行列形式を持ちます。
x
′
=
x
{\displaystyle x'=x}
y
′
=
y
+
k
x
{\displaystyle y'=y+kx}
[
x
′
y
′
]
=
[
1
0
k
1
]
[
x
y
]
{\displaystyle {\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}1&0\\k&1\end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}}
反射
原点を通る直線の反射については、 直線の方向の
ベクトル をとします。次に、変換行列を使用します。
l
=
(
l
x
,
l
y
)
{\displaystyle \mathbf {l} =(l_{x},l_{y})}
A
=
1
‖
l
‖
2
[
l
x
2
−
l
y
2
2
l
x
l
y
2
l
x
l
y
l
y
2
−
l
x
2
]
{\displaystyle \mathbf {A} ={\frac {1}{\lVert \mathbf {l} \rVert ^{2}}}{\begin{bmatrix}l_{x}^{2}-l_{y}^{2}&2l_{x}l_{y}\\2l_{x}l_{y}&l_{y}^{2}-l_{x}^{2}\end{bmatrix}}}
正射影
ベクトルを原点を通る直線に直交投影するには、 を 直線の方向の
ベクトル とします。次に、変換行列を使用します。
u
=
(
u
x
,
u
y
)
{\displaystyle \mathbf {u} =(u_{x},u_{y})}
A
=
1
‖
u
‖
2
[
u
x
2
u
x
u
y
u
x
u
y
u
y
2
]
{\displaystyle \mathbf {A} ={\frac {1}{\lVert \mathbf {u} \rVert ^{2}}}{\begin{bmatrix}u_{x}^{2}&u_{x}u_{y}\\u_{x}u_{y}&u_{y}^{2}\end{bmatrix}}}
反射と同様に、原点を通らない線への正射影は線形変換ではなくアフィン変換です。
平行投影 も線形変換であり、単純に行列で表すことができます。ただし、透視投影は線形変換ではないため、これを行列で表すには 同次座標を 使用できます。
3Dコンピュータグラフィックスの例
回転
単位ベクトル ( x 、 y 、 z ) で定義される任意の軸を中心に 角度 θを 回転させる行列は [ 7]
[
x
x
(
1
−
cos
θ
)
+
cos
θ
y
x
(
1
−
cos
θ
)
−
z
sin
θ
z
x
(
1
−
cos
θ
)
+
y
sin
θ
x
y
(
1
−
cos
θ
)
+
z
sin
θ
y
y
(
1
−
cos
θ
)
+
cos
θ
z
y
(
1
−
cos
θ
)
−
x
sin
θ
x
z
(
1
−
cos
θ
)
−
y
sin
θ
y
z
(
1
−
cos
θ
)
+
x
sin
θ
z
z
(
1
−
cos
θ
)
+
cos
θ
]
.
{\displaystyle {\begin{bmatrix}xx(1-\cos \theta )+\cos \theta &yx(1-\cos \theta )-z\sin \theta &zx(1-\cos \theta )+y\sin \theta \\xy(1-\cos \theta )+z\sin \theta &yy(1-\cos \theta )+\cos \theta &zy(1-\cos \theta )-x\sin \theta \\xz(1-\cos \theta )-y\sin \theta &yz(1-\cos \theta )+x\sin \theta &zz(1-\cos \theta )+\cos \theta \end{bmatrix}}.}
反射
点を平面 (原点を通る)に反射させるには、 を使用します。 ここで、 は 3×3 単位行列、 は 平面のベクトル法線の 3 次元 単位ベクトル です。 、 、 の L 2 ノルム が 1 の場合、変換行列は次のように表すことができます。
a
x
+
b
y
+
c
z
=
0
{\displaystyle ax+by+cz=0}
A
=
I
−
2
N
N
T
{\displaystyle \mathbf {A} =\mathbf {I} -2\mathbf {NN} ^{\mathrm {T} }}
I
{\displaystyle \mathbf {I} }
N
{\displaystyle \mathbf {N} }
a
{\displaystyle a}
b
{\displaystyle b}
c
{\displaystyle c}
A
=
[
1
−
2
a
2
−
2
a
b
−
2
a
c
−
2
a
b
1
−
2
b
2
−
2
b
c
−
2
a
c
−
2
b
c
1
−
2
c
2
]
{\displaystyle \mathbf {A} ={\begin{bmatrix}1-2a^{2}&-2ab&-2ac\\-2ab&1-2b^{2}&-2bc\\-2ac&-2bc&1-2c^{2}\end{bmatrix}}}
これらは 2 次元および 3 次元のハウスホルダー反射 の特殊なケースであることに注意してください 。原点を通らない線または平面に関する反射は線形変換ではなく、 アフィン変換 です。4×4 アフィン変換行列として、次のように表すことができます (法線が単位ベクトルであると仮定)。
ここで、 平面上の任意の点、または同等の 点については です 。
[
x
′
y
′
z
′
1
]
=
[
1
−
2
a
2
−
2
a
b
−
2
a
c
−
2
a
d
−
2
a
b
1
−
2
b
2
−
2
b
c
−
2
b
d
−
2
a
c
−
2
b
c
1
−
2
c
2
−
2
c
d
0
0
0
1
]
[
x
y
z
1
]
{\displaystyle {\begin{bmatrix}x'\\y'\\z'\\1\end{bmatrix}}={\begin{bmatrix}1-2a^{2}&-2ab&-2ac&-2ad\\-2ab&1-2b^{2}&-2bc&-2bd\\-2ac&-2bc&1-2c^{2}&-2cd\\0&0&0&1\end{bmatrix}}{\begin{bmatrix}x\\y\\z\\1\end{bmatrix}}}
d
=
−
p
⋅
N
{\displaystyle d=-\mathbf {p} \cdot \mathbf {N} }
p
{\displaystyle \mathbf {p} }
a
x
+
b
y
+
c
z
+
d
=
0
{\displaystyle ax+by+cz+d=0}
ベクトルの 4 番目の成分が 1 ではなく 0 の場合、ベクトルの方向のみが反映され、大きさは変更されません。これは、原点を通る平行平面で鏡映されたのと同じです。これは、位置ベクトルと法線ベクトルの両方を同じ行列で変換できるため、便利なプロパティです。 詳細については、以下の
同次座標とアフィン変換を参照してください。
線形変換を表すために行列を使用する主な理由の 1 つは、変換を簡単に構成 および反転
できることです。
合成は行列の乗算 によって行われます 。 行ベクトルと列ベクトルは 、行が左側、列が右側の行列によって操作されます。テキストは左から右に読み取られるため、変換行列を合成する場合は列ベクトルが優先されます。
A と B が 2 つの線形変換の行列である 場合、最初に A を 適用し、次に B を 列ベクトルに適用した場合の効果は 次のように表されます。
x
{\displaystyle \mathbf {x} }
B
(
A
x
)
=
(
B
A
)
x
.
{\displaystyle \mathbf {B} (\mathbf {A} \mathbf {x} )=(\mathbf {BA} )\mathbf {x} .}
言い換えれば、変換 A とそれに続く変換 B を組み合わせた行列は、個々の行列の積にすぎません。
A が 可逆行列 である 場合、 A との合成が 単位行列 であるため、 A を 「元に戻す」変換を表す 行列 A −1 が存在します。一部の実際のアプリケーションでは、一般的な反転アルゴリズムを使用するか、逆操作 (反対方向に回転するなど、明らかな幾何学的解釈がある) を実行してから逆の順序で合成することで、反転を計算できます。反射行列は、 それ自体が逆であり 、個別に計算する必要がないため、特殊なケースです。
単位正方形にさまざまな 2D アフィン変換行列を適用した場合の効果。反射行列はスケーリング行列の特殊なケースであることに注意してください。
2D 平面上のアフィン変換は、3 次元で実行できます。変換は xy 平面に平行にせん断することによって行われ、回転は z 軸を中心に実行されます。
アフィン変換を 行列で表すには、 同次座標 を使います 。つまり、2 ベクトル ( x , y ) を 3 ベクトル ( x , y , 1 ) として表し、高次元でも同様です。このシステムを使用すると、変換は行列の乗算で表すことができます。関数形式は次のよう になります。
x
′
=
x
+
t
x
;
y
′
=
y
+
t
y
{\displaystyle x'=x+t_{x};y'=y+t_{y}}
[
x
′
y
′
1
]
=
[
1
0
t
x
0
1
t
y
0
0
1
]
[
x
y
1
]
.
{\displaystyle {\begin{bmatrix}x'\\y'\\1\end{bmatrix}}={\begin{bmatrix}1&0&t_{x}\\0&1&t_{y}\\0&0&1\end{bmatrix}}{\begin{bmatrix}x\\y\\1\end{bmatrix}}.}
通常の線形変換はすべてアフィン変換のセットに含まれており、アフィン変換の簡略化された形式として記述できます。したがって、任意の線形変換は、一般的な変換行列によって表すこともできます。後者は、対応する線形変換行列を 1 行 1 列拡張し、右下隅を除いて余分なスペースをゼロで埋めることによって得られます。右下隅は 1 に設定する必要があります。たとえば、 上記の 反時計回りの 回転行列は 次 のようになります。
[
cos
θ
−
sin
θ
0
sin
θ
cos
θ
0
0
0
1
]
{\displaystyle {\begin{bmatrix}\cos \theta &-\sin \theta &0\\\sin \theta &\cos \theta &0\\0&0&1\end{bmatrix}}}
同次座標を含む変換行列を使用すると、平行移動は線形になり、したがって他のすべてのタイプの変換とシームレスに混在させることができます。これは、実平面が 実射影空間の w = 1平面にマッピングされるため、実 ユークリッド空間 での平行移動を実射影空間でのせん断として表すことができるからです。平行移動は、直交座標で記述される 2 次元または 3 次元ユークリッド空間では非線形変換ですが ( つまり、 可換性 やその他の特性を維持しながら他の変換と組み合わせることはできません )、 同次座標で記述される 3 次元または 4 次元射影空間では単純な線形変換 ( せん断 ) になります。
2つ以上のアフィン変換を組み合わせる ことで、より多くのアフィン変換が得られます 。たとえば、ベクトル T' の移動、 反時計回り の角度θの 回転 R 、係数による スケーリング S 、ベクトルの 移動 Tが与えられた場合、 T'RST の 結果 Mは 次のようになります。 [8]
(
t
x
′
,
t
y
′
)
,
{\displaystyle (t'_{x},t'_{y}),}
(
s
x
,
s
y
)
{\displaystyle (s_{x},s_{y})}
(
t
x
,
t
y
)
,
{\displaystyle (t_{x},t_{y}),}
[
s
x
cos
θ
−
s
y
sin
θ
t
x
s
x
cos
θ
−
t
y
s
y
sin
θ
+
t
x
′
s
x
sin
θ
s
y
cos
θ
t
x
s
x
sin
θ
+
t
y
s
y
cos
θ
+
t
y
′
0
0
1
]
{\displaystyle {\begin{bmatrix}s_{x}\cos \theta &-s_{y}\sin \theta &t_{x}s_{x}\cos \theta -t_{y}s_{y}\sin \theta +t'_{x}\\s_{x}\sin \theta &s_{y}\cos \theta &t_{x}s_{x}\sin \theta +t_{y}s_{y}\cos \theta +t'_{y}\\0&0&1\end{bmatrix}}}
アフィン変換を使用する場合、座標ベクトルの同次成分 (通常は w と呼ばれる) は変更されません。したがって、同次成分は常に 1 であると想定して無視しても問題ありません。ただし、透視投影を使用する場合はそうではありません。
透視投影
単位正方形に 2D アフィン変換行列と透視変換行列を適用した場合の効果の比較。
3D コンピュータ グラフィックス で重要な別の種類の変換は、 透視投影 です 。平行投影は、平行線に沿って点を画像平面に投影するために使用されますが、透視投影は、投影の中心と呼ばれる単一の点から発する線に沿って点を画像平面に投影します。つまり、オブジェクトは、投影の中心から遠い場合は投影が小さくなり、近い場合は投影が大きくなります ( 逆関数 も参照)。
最も単純な透視投影では、原点を投影の中心として、平面を 画像平面として使用します。この変換の関数形式は次のようになります 。これを 同次座標 で次のように表すことができます 。
z
=
1
{\displaystyle z=1}
x
′
=
x
/
z
{\displaystyle x'=x/z}
y
′
=
y
/
z
{\displaystyle y'=y/z}
[
x
c
y
c
z
c
w
c
]
=
[
1
0
0
0
0
1
0
0
0
0
1
0
0
0
1
0
]
[
x
y
z
1
]
=
[
x
y
z
z
]
{\displaystyle {\begin{bmatrix}x_{c}\\y_{c}\\z_{c}\\w_{c}\end{bmatrix}}={\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&1&0\end{bmatrix}}{\begin{bmatrix}x\\y\\z\\1\end{bmatrix}}={\begin{bmatrix}x\\y\\z\\z\end{bmatrix}}}
行列の乗算 を実行すると 、同次成分は の値に等しくなり 、他の 3 つは変化しません。したがって、実平面に戻すには、 各成分を で割る 同次除算 または 透視除算 を実行する必要があります。
w
c
{\displaystyle w_{c}}
z
{\displaystyle z}
w
c
{\displaystyle w_{c}}
[
x
′
y
′
z
′
1
]
=
1
w
c
[
x
c
y
c
z
c
w
c
]
=
[
x
/
z
y
/
z
1
1
]
{\displaystyle {\begin{bmatrix}x'\\y'\\z'\\1\end{bmatrix}}={\frac {1}{w_{c}}}{\begin{bmatrix}x_{c}\\y_{c}\\z_{c}\\w_{c}\end{bmatrix}}={\begin{bmatrix}x/z\\y/z\\1\\1\end{bmatrix}}}
これを回転、拡大縮小、平行移動、およびせん断と組み合わせて、画像平面と投影の中心を任意の場所に移動することで、より複雑な透視投影を作成できます。
参照
参考文献
^ ラファエル・アルツィ (1965) 線状幾何学
^ JWP ヒルシュフェルド (1979) 有限体の射影幾何学 、 クラレンドン プレス
^ Gentle , James E. (2007). 「行列変換と因数分解」。 行列代数: 統計における理論、計算、および応用 。Springer。ISBN 9780387708737 。
^ ニアリング、ジェームズ (2010)。「第 7.3 章 演算子の例」 (PDF) 。物理学のための数学ツール 。ISBN 978-0486482125 . 2012年 1月1日 閲覧 。
^ ニアリング、ジェームズ (2010)。「第 7.9 章: 固有値と固有ベクトル」 (PDF) 。物理学のための数学ツール 。ISBN 978-0486482125 . 2012年 1月1日 閲覧 。
^ 「講義ノート」 (PDF) . ocw.mit.edu . 2024年7月28日 閲覧 。
^ Szymanski, John E. (1989). 電子技術者のための基礎数学:モデルと応用 . Taylor & Francis. p. 154. ISBN 0278000681 。
^ Cédric Jules (2015 年 2 月 25 日). 「2D 変換行列のベーキング」.
外部リンク
マトリックスページPOV-Ray の実例
参照ページ - 軸の回転
線形変換計算機
変換アプレット - 2D 変換から行列を生成したり、その逆を行ったりします。
2D での回転による座標変換
Excel Fun - スプレッドシートから 3D グラフィックスを作成する