Computer-graphics-3d-transformation

提供:Dev Guides
移動先:案内検索

3D変換

回転

3D回転は2D回転と同じではありません。 3D回転では、回転軸とともに回転角度を指定する必要があります。 X、Y、Z軸を中心に3D回転を実行できます。 それらは以下のような行列形式で表されます-

R _ \ {x}(\ theta)= \ begin \ {bmatrix} 1&0&0&0 \\ 0&cos \ theta&−sin \ theta&0 \\ 0&sin \ theta&cos \ theta&0 \\ 0&0&0& 1 \\ \ end \ {bmatrix} R _ \ {y}(\ theta)= \ begin \ {bmatrix} cos \ theta&0&sin \ theta&0 \\ 0&1&0&0 \\ -sin \ theta&0&cos \ theta&0 \\ 0&0&0&1 \\ \ end \ {bmatrix} R _ \ {z}(\ theta)= \ begin \ {bmatrix} cos \ theta&-sin \ theta&0&0 \\ sin \ theta&cos \ theta &0&0 \\ 0&0&1&0 \\ 0&0&0&1 \ end \ {bmatrix}

次の図は、さまざまな軸の周りの回転を説明します-

Rotation 3D Rotation

スケーリング

スケーリング変換を使用して、オブジェクトのサイズを変更できます。 スケーリングプロセスでは、オブジェクトのサイズを拡大または縮小します。 スケーリングは、目的の結果を得るために、オブジェクトの元の座標にスケーリング係数を掛けることで実現できます。 次の図は、3Dスケーリングの効果を示しています-

3Dスケーリング

3Dスケーリング操作では、3つの座標が使用されます。 元の座標が(X、Y、Z)であり、スケーリング係数がそれぞれ$(S _ \ {X、} S _ \ {Y、} S _ \ {z})$であり、生成された座標が(X ' 、Y '、Z')。 これは以下に示すように数学的に表すことができます-

$ S = \ begin \ {bmatrix} S _ \ {x}&0&0&0 \\ 0&S _ \ {y}&0&0 \\ 0&0&S _ \ {z}&0 \\ 0&0&0&1 \ end \ { bmatrix} $

P ’= P∙S

$ [\ {X} '\:\:\:\ {Y}' \:\:\:\ {Z} '\:\:\:1] = [X \:\:\:Y \:\ :\:Z \:\:\:1] \:\:\ begin \ {bmatrix} S _ \ {x}&0&0&0 \\ 0&S _ \ {y}&0&0 \\ 0&0&S _ \ {z }&0 \\ 0&0&0&0&1 \ end \ {bmatrix} $

$ = [X.S _ \ {x} \:\:\:Y.S _ \ {y} \:\:\:Z.S _ \ {z} \:\:\:1] $

剪断

オブジェクトの形状を傾斜させる変換は、*せん断変換*と呼ばれます。 2Dせん断のように、3DでX軸、Y軸、またはZ軸に沿ってオブジェクトをせん断できます。

せん断

上図に示すように、座標Pがあります。 あなたはそれをせん断して新しい座標P 'を得ることができます。これは以下のように3Dマトリックス形式で表すことができます-

$ Sh = \ begin \ {bmatrix} 1&sh _ \ {x} ^ \ {y}&sh _ \ {x} ^ \ {z}&0 \\ sh _ \ {y} ^ \ {x}&1&sh_ \ {y} ^ \ {z}&0 \\ sh _ \ {z} ^ \ {x}&sh _ \ {z} ^ \ {y}&1&0 \\ 0&0&0&1 \ end \ {bmatrix} $

P ’= P∙Sh

$ X ’= X + Sh _ \ {x} ^ \ {y} Y + Sh _ \ {x} ^ \ {z} Z $

$ Y '= Sh _ \ {y} ^ \ {x} X + Y + sh _ \ {y} ^ \ {z} Z $

$ Z '= Sh _ \ {z} ^ \ {x} X + Sh _ \ {z} ^ \ {y} Y + Z $

変換行列

変換マトリックスは、変換のための基本的なツールです。 n x m次元の行列にオブジェクトの座標が乗算されます。 通常、変換には3 x 3または4 x 4のマトリックスが使用されます。 たとえば、さまざまな操作について次のマトリックスを考えます。

$ T = \ begin \ {bmatrix} 1&0&0&0 \\ 0&1&0&0 \\ 0&0&1&0 \\ t _ \ {x}&t _ \ {y}&t _ \ {z}&1 \\ \ end \ {bmatrix} $

$ S = \ begin \ {bmatrix} S _ \ {x}&0&0&0 \\ 0&S _ \ {y}&0&0 \\ 0&0&S _ \ {z}&0 \\ 0&0&0&1 \ end \ { bmatrix} $

$ Sh = \ begin \ {bmatrix} 1&sh _ \ {x} ^ \ {y}&sh _ \ {x} ^ \ {z}&0 \\ sh _ \ {y} ^ \ {x}&1&sh_ \ {y} ^ \ {z}&0 \\ sh _ \ {z} ^ \ {x}&sh _ \ {z} ^ \ {y}&1&0 \\ 0&0&0&1 \ end \ {bmatrix} $

翻訳マトリックス

スケーリングマトリックス

せん断マトリックス

$ R _ \ {x}(\ theta)= \ begin \ {bmatrix} 1&0&0&0 \\ 0&cos \ theta&-sin \ theta&0 \\ 0&sin \ theta&cos \ theta&0 \\ 0&0&0&1 \\ \ end \ {bmatrix} $

$ R _ \ {y}(\ theta)= \ begin \ {bmatrix} cos \ theta&0&sin \ theta&0 \\ 0&1&0&0 \\ -sin \ theta&0&cos \ theta&0 \\ 0&0&0&1 \\ \ end \ {bmatrix} $

$ R _ \ {z}(\ theta)= \ begin \ {bmatrix} cos \ theta&-sin \ theta&0&0 \\ sin \ theta&cos \ theta&0&0 \\ 0&0&1&0 \\ 0&0& 0&1 \ end \ {bmatrix} $

回転マトリックス