Core 概要

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

使用例2

もし望むならば、メンバー関数のかわりにスタティック関数を使用できます。

また性能向上のために、参照引数をとるオーバーロード関数も使用できます。

Matrix4.Inverse( ref m1, out m4 ) ;
Matrix4.Multiply( ref m1, ref m2, out m5 ) ;

引数の制限について

参照引数をとる関数を使用する場合、this 引数や ref 引数と同じ変数を out 引数に指定すると正しい結果が計算されません。

とくに、以下の関数には注意が必要です。

  • Matrix4.Transpose()
  • Matrix4.Inverse*()
  • Matrix4.Multiply*()
  • Matrix4.Transform*()
  • Vector3.Cross()
  • Vector3.Rotate*()
  • Vector3.Perpendicular()
  • Vector2.Rotate()
  • Vector2.Perpendicular()
  • Quaternion.Multiply()
  • Quaternion.Transform()