コンピュータグラフィックスとアニメーション

平面上のグラフは、コンピューター上に頂点のセットとして保存できます。グラフは、頂点を描画し、頂点を直線で接続することによって取得できます(GPUパイプラインでの三角形のフラグメントとラスタライズ操作)。n個の頂点がある場合。 、それらは2 \ times nマトリックスに格納されバツ頂点Y座標はマトリックスの最初の行に格納され、座標は2番目の行に格納され、連続する頂点の各ペアは直線で接続されます。

たとえば、頂点の座標をに格納するには

  (0,0)、(1,1)、(1、-1)

の三角形の場合、各頂点に対応する数のペアを行列の列として格納します。

T = \ begin {bmatrix} 0&1&1&0 \\ 0&1&-1&0 \ end {bmatrix}

追加の頂点の(0,0)コピーがT最後の列に格納されるため、前の頂点(1、-1)を引き戻すことができます(0,0)

次の図に沿っています

\ begin {bmatrix} 0 \\ 0 \ end {bmatrix} \ rightarrow \ begin {bmatrix} 1 \\ 1 \ end {bmatrix} \ rightarrow \ begin {bmatrix} 1 \\ -1 \ end {bmatrix} \ rightarrow \ begin {bmatrix} 0 \\ 0 \ end {bmatrix}

次の図に示すように、軌道が描画されます。

頂点の位置を変更してグラフを再描画することにより、グラフを変換できます。変換が線形の場合、次の2つの原則を満たす変換です。

  • 原点を変更した後も原点のままです
  • 直線変換後も直線です

これは行列の乗算によって実現でき、そのような一連の変換でアニメーションを取得できます。

たとえば、最初の

ズームインおよびズームアウト(スケーリング)

形は

L(\ vec {x})= c \ vec {x}

線形演算子はc> 1、時間が拡大されると0 <c <1、時間が短縮されると、演算子行列Lは次のように表すことができます。

cE = \ begin {bmatrix} c&0 \\ 0&c \ end {bmatrix}

以下に示すように:

 

二番目

反射

それがあればL_xベクトルの変換で\ vec {x}約 バツ軸対称性は、L_x2つの原則上記満たし、それが線形変換であり、L_x線形演算子、及びのように表すことができる2 \ times 2マトリックスA.

 なぜなら

 \\ L_x(e_1)= e_1 \\ L_x(e_2)= --e_2

など

A = \ begin {bmatrix} 1&0 \\ 0&-1 \ end {bmatrix}

同様に、y軸上の鏡像の変換L_y次のとおりです。

A = \ begin {bmatrix} -1&0 \\ 0&1 \ end {bmatrix}

以下に示すように:

 

3番目のタイプ、回転

回転

Lを初期位置からベクトル\ theta回転させる変換とします。これは線形変換でもあり、上記の2つの原則を満たします。変換行列は次のとおりです。

A = \ begin {bmatrix} cos(\ theta)&-sin(\ theta)\\ sin(\ theta)&cos(\ theta)\ end {bmatrix}

 

最後の1つ、翻訳

翻訳

ベクトル\ vec {x}の並進変換は次のようになります

 L(\ vec {x})= \ vec {x} + \ vec {\ alpha}

\ vec {\ alpha}定数ベクトルです。

の場合\ vec {\ alpha} \ neq \ vec {0}、原点が移動するため、線形変換ではありません。そして2 \ times 2、行列として表現することはできません ただし、コンピュータグラフィックスでは、すべての変換を行列の乗算として表現する必要があります。この問題を回避するために、同次座標となる新しい座標系が導入され、この新しい座標で変換を線形変換として表現できます。

同次座標系はR ^ 2、中央のベクトルをR ^ 3、最初の2つの座標が中央のベクトルと同じで、3番目の座標が1であるベクトルと等しくすることによって構築されます。

\ begin {bmatrix} x_1 \\ x_2 \ end {bmatrix} \ rightarrow \ begin {bmatrix} x_1 \\ x_2 \\ 1 \ end {bmatrix}

同次座標ベクトル(x_1、x_2、1)^ Tで表されるを描画する必要がある場合は、その3番目の座標を無視して、順序対を描画し(x_1、x_2)ます。

上で説明した現在の変換は3 \ times 3、行列として表現する必要があります。この目的のために、単位行列の3番目の行と3番目の列に要素(拡大鏡など)を2 \ times 2追加することで、行列3 \ times 3拡張できます。2 \ times 2

\ begin {bmatrix} 3&0 \\ 0&3 \ end {bmatrix}

3 \ times 3マトリックスはに置き換えられまし

\ begin {bmatrix} 3&0&0 \\ 0&3&0 \\ 0&0&1 \ end {bmatrix}

注意:

\ begin {bmatrix} 3&0&0 \\ 0&3&0 \\ 0&0&1 \ end {bmatrix} \ begin {bmatrix} x_1 \\ x_2 \\ 1 \ end {bmatrix} = \ begin {bmatrix} 3x_1 \\ 3x_2 \\ 1 \ end {bmatrix}

変換がR ^ 2ベクトル内のベクトルを変換する場合

\ vec {a} = \ begin {bmatrix} 6 \\ 2 \ end {bmatrix}

次に、行列の2つの行の3番目の列の\ vec {\ alpha}要素を要素3 \ times 3置き換えるだけで、同次座標系で変換の行列表現を取得できますあれは

A \ vec {x} = \ begin {bmatrix} 1&0&6 \\ 0&1&2 \\ 0&0&1 \ end {bmatrix} \ begin {bmatrix} x_1 \\ x_2 \\ 1 \ end {bmatrix} = \ begin {bmatrix} x_1 + 6 \\ x_2 + 2 \\ 1 \ end {bmatrix}


これが包括的なレンダリングです。G2D設計のせん断変換は、実際には線形空間変換です。

終わり

おすすめ

転載: blog.csdn.net/tugouxp/article/details/112135848