fc2ブログ

Matrix4x4のまとめ

Unity
11 /10 2017
Matrix4x4のまとめ>
 Matrix4x4関連のプロパティ、メソッドについて


Matrix4x4定数>
 特定のMatrix4x4です。

Matrix4x4.zero ・・・零行列:要素が全て0
Matrix4x4.identity ・・・単位行列:対角要素が全て1で、他の要素が全て0


<Matrix4x4変数>
 Matrix4x4から(読み取り専用で)プロパティを取得します。
 別の変数に代入できます。

(floatで返します)
・Matrix4x4.determinan
 行列式の値を取得します。

(boolで返します)
・Matrix4x4.isIdentity
 Matrix4x4.identityかどうかを返します。
 Matrix4x4 == Matrix4x4.identity: Matrix4x4.isIdentity = True
 Matrix4x4 != Matrix4x4.identity: Matrix4x4.isIdentity = False

(Matrix4x4で返します)
・Matrix4x4.inverse
 逆行列を作成します。
 直交行列(行列式1の正方行列)では、逆行列は転置行列に一致します。

(Matrix4x4で返します)
・Matrix4x4.transpose
 転置行列を作成します。


<Matrix4x4メソッド>
 Matrix4x4を引数にとり、自身に戻り値を返すメソッドです。
 自身が変更されます。

(自身にMatrix4x4で返します)
・Matrix4x4.SetRow(n, V)
 行列Matrix4x4のn(int)行目に、V(Vector4)を設定します。
 n=0,1,2,3です。

(自身にMatrix4x4で返します)
・Matrix4x4.SetColumn(n, V)
 行列Matrix4x4のn(int)列目に、V(Vector4)を設定します。
 n=0,1,2,3です。

(自身にMatrix4x4で返します)
・Matrix4x4.SetTRS(d, q, s) = new Matrix4x4.TRS(d, q, s)
 アフィン変換行列を設定します。
 d(Vector3)で移動、q(Quaternion)で回転、s(Vector3)で拡大縮小を行います。


<Matrix4x4関数>
Matrix4x4を引数にとる関数で、戻り値を返します。
 別の変数に代入できます。

(Stringで返します)
・Matrix4x4.ToString("フォーマット") =
 m00 m01 m02 m03
 m10 m11 m12 m13
 m20 m21 m22 m23
 m30 m31 m32 m33

 行列Matrix4x4の全要素を、フォーマットの書式で表示します。
 4行×4列=計16個の数値が出力されます。
 「m[i, j]:i行目のj列目の要素」になります。
 行列積では、行列の行ベクトルと、列ベクトルの内積が、

(Vector4で返します)
・Matrix4x4.GetRow(n)
 行列Matrix4x4のn(int)行目を取得します。
 n=0,1,2,3です。

(Vector4で返します)
・Matrix4x4.GetColumn(n)
 行列Matrix4x4のn(int)列目を取得します。
 n=0,1,2,3です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
各種パラメータを引数にとる関数で、Matrix4x4で戻り値を返します。
 別の変数に代入できます。

(Matrix4x4で返します)
・Matrix4x4.Scale(s)
 スケーリング行列を作成します。
 s(Vector3)で拡大縮小を行います。

(Matrix4x4で返します)
・Matrix4x4.TRS(d, q, s)
 アフィン変換行列を作成します。
 d(Vector3)で移動、q(Quaternion)で回転、s(Vector3)で拡大縮小を行います。

(Matrix4x4で返します)
・Matrix4x4.Ortho(l, r, d, u, zN, zF)
 平行投影行列を作成します。
 l(float),r(float),d(float),u(float),zN(float),zF(float)で設定します。
 ビューエリアは、水平方向lからrまで、垂直方向dからuまでとなり、
 クリッピングプレーンは、zNからzFまでとなります。

(Matrix4x4で返します)
・Matrix4x4.Perspective(fov, aspect, zN, zF)
 透視投影行列を作成します。
 fov(float),aspect(float),zN(float),zF(float)で設定します。
 ビューエリアは、縦方向の視野角fov(度)とアスペクト比aspect(横/縦)で、
 クリッピングプレーンは、zNからzFまでとなります。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
③ベクトルVector3(vx, vy, vz)を引数にとる関数で、Vector3で戻り値を返します。
 別の変数に代入できます。

(Vector3で返します)
・Matrix4x4.MultiplyPoint(Vector3)
 位置ベクトル射影変換します。
 (せん断を含む)アフィン変換+射影を行う、4×4の汎用行列です。
 平行移動+回転+拡大縮小(+鏡像)+せん断+射影を適用します。
 正投影(平行投影)はアフィン変換に含まれますが、透視投影(中心投影)は射影変換に含まれます。
 アフィン変換=平行投影変換
 射影変換=中心投影変換

 
(Vector3で返します)
・Matrix4x4.MultiplyPoint3x4(Vector3)
 位置ベクトル(せん断を含まない)アフィン変換します。
 3次元のアフィン変換行列は実質3×4行列です。
 平行移動+回転+拡大縮小(+鏡像)を適用します。

(Vector3で返します)
・Matrix4x4.MultiplyVector(Vector3)
 方向ベクトル回転変換します。
 3次元の回転行列は実質3×3行列です。
 回転のみを適用します。

スポンサーサイト



コメント

非公開コメント

gamemaker

ゲーム自作を行っていく過程を書き留めていきます。