Sce.PlayStation.Core は数学関数などゲームプログラムの基本となる機能を提供します。
FMathは数学関数のラッパー関数とコンビニエンス関数を提供するスタティッククラスです。float用の数学関数や、いくつかの便利な関数が定義されています。
Matrix4 Vector4 Vector3 Vector2 Quaternion Rectangleはfloat要素を持つベクトル型を表す構造体です。4次元行列、4次元以下のベクトル、クオータニオン、および矩形が定義されています。
Rgb* Half* Short* UShort* Byte* UByte*はグラフィクスで使用されるデータ型を表す構造体です。整数表現のカラー型、半精度の浮動小数点型、および固定小数点型が定義されています。
角度はラジアン単位で表されます。行列は右手座標系で表されます。また行列の乗算順序はparent*child, matrix*vectorのようになります。Cgシェーダー言語とは行列の乗算順序が逆になることに注意してください。たとえばCgシェーダー言語のセマンティクスにおけるWorldViewProjectionは、Sce.PlayStation.Coreではprojection*view*worldのように計算されます。
以下のコードは、行列の生成と計算と要素アクセスの例です。
Matrix4 m4 = m1.Inverse() ; // member function
Matrix4 m5 = m1.Multiply( m2 ) ; // member function
Matrix4 m6 = m1 * m2 ; // operator
float f1 = m4.M11 ; // attribute
Vector4 v1 = m4.ColumnX ; // property
もし望むならば、メンバー関数のかわりにスタティック関数を使用できます。
また性能向上のために、参照引数をとるオーバーロード関数も使用できます。
Matrix4.Inverse( ref m1, out m4 ) ;
Matrix4.Multiply( ref m1, ref m2, out m5 ) ;
参照引数をとる関数を使用する場合、this 引数や ref 引数と同じ変数を out 引数に指定すると正しい結果が計算されません。
とくに、以下の関数には注意が必要です。