座標 / ベクトル / 行列関連のレコード及び計算ルーチン

FireMonkey において最もリファクタリングが激しいのは座標 / ベクトル / 行列関連のレコード及び計算ルーチンです。基本的にはレコードのオーバーロードされた演算子やメソッドで計算を行います。

[座標 (整数) 計算用のレコード]

レコード名は TPoint です。座標 (整数) 計算のルーチンは FMX.Types にありますが、バージョンによって実装が異なります

機能 座標 (整数) 計算用レコード
XE2 System.Types.TPoint
XE3 System.Types.TPoint
XE4 System.Types.TPoint
XE5 /
Appmethod 1.13
System.Types.TPoint
XE6 /
Appmethod 1.14
System.Types.TPoint

[座標 (実数) 計算用のレコード]

レコード名は TPointF です。座標 (実数) 計算のルーチンは FMX.Types にありますが、バージョンによって実装が異なります

機能 座標 (実数) 計算用レコード
XE2 System.Types.TPointF
XE3 System.Types.TPointF
XE4 System.Types.TPointF
XE5 /
Appmethod 1.13
System.Types.TPointF
XE6 /
Appmethod 1.14
System.Types.TPointF

[3D 座標計算用のレコード]

レコード名は TPoint3D ですが、バージョンによってユニットスコープが異なる事があります。3D 座標計算のルーチンは FMX.Types3D にありますが、バージョンによって実装が異なります

機能 3D 座標計算用レコード
XE2 FMX.Types3D.TPoint3D
演算子のオーバーロードがないので計算自体は FMX.Types3D にあるルーチンを使う。
XE3 System.Types.TPoint3D
XE4 System.Types.TPoint3D
XE5 /
Appmethod 1.13
System.Types.TPoint3D
XE6 /
Appmethod 1.14
System.Math.Vectors.TPoint3D

[ベクトル計算用のレコード]

レコード名は TVector ですが、バージョンによってユニットスコープが異なる事があります。ベクトル計算のルーチンは FMX.Types にありますが、バージョンによって実装が異なります

機能 ベクトル計算用レコード
XE2 System.Types.TVector
演算子のオーバーロードがないので計算自体は FMX.Types にあるルーチンを使う。
XE3 System.Types.TVector
XE4 System.Types.TVector
XE5 /
Appmethod 1.13
System.Types.TVector
XE6 /
Appmethod 1.14
System.Math.Vectors.TVector

[3D ベクトル計算用のレコード]

レコード名は TVector3D ですが、バージョンによってユニットスコープが異なる事があります。3D ベクトル計算のルーチンは FMX.Types3D にありますが、バージョンによって実装が異なります

機能 3D ベクトル計算用レコード
XE2 FMX.Types3D.TVector3D
演算子のオーバーロードがないので計算自体は FMX.Types3D にあるルーチンを使う。
XE3 System.Types.TVector3D
XE4 System.Types.TVector3D
XE5 /
Appmethod 1.13
System.Types.TVector3D
XE6 /
Appmethod 1.14
System.Math.Vectors.TVector3D

[3x3 行列計算用のレコード]

レコード名は TMatrix ですが、バージョンによってユニットスコープが異なる事があります。3x3 行列計算のルーチンは FMX.Types にありますが、バージョンによって実装が異なります

機能 3x3 行列計算用レコード
XE2 System.Types.TMatrix
演算子のオーバーロードがないので計算自体は FMX.Types にあるルーチンを使う。
XE3 System.Types.TMatrix
演算子のオーバーロードがないので計算自体は FMX.Types にあるルーチンを使う。
XE4 System.Types.TMatrix
演算子のオーバーロードがないので計算自体は FMX.Types にあるルーチンを使う。
XE5 /
Appmethod 1.13
System.Types.TMatrix
XE6 /
Appmethod 1.14
System.Math.Vectors.TMatrix

[4x4 行列 (3D) 計算用のレコード]

レコード名は TMatrix3D ですが、バージョンによってユニットスコープが異なる事があります。4x4 行列 (3D) 計算のルーチンは FMX.Types3D にありますが、バージョンによって実装が異なります

機能 4x4 行列 (3D) 計算用レコード
XE2 FMX.Types3D.TMatrix3D
演算子のオーバーロードがないので計算自体は FMX.Types3D にあるルーチンを使う。
XE3 System.Types.TMatrix3D
演算子のオーバーロードがないので計算自体は FMX.Types3D にあるルーチンを使う。
XE4 System.Types.TMatrix3D
XE5 /
Appmethod 1.13
System.Types.TMatrix3D
XE6 /
Appmethod 1.14
System.Math.Vectors.TMatrix3D

[四元数 (クォータニオン) 計算用のレコード]

レコード名は TQuaternion3D ですが、バージョンによってユニットスコープが異なる事があります。四元数 (クォータニオン) 計算のルーチンは FMX.Types3D にありますが、バージョンによって実装が異なります

機能 四元数 (クォータニオン) 計算用レコード
XE2 FMX.Types3D.TQuaternion3D
演算子のオーバーロードがないので計算自体は FMX.Types3D にあるルーチンを使う。
XE3 System.Types.TQuaternion3D
演算子のオーバーロードがないので計算自体は FMX.Types3D にあるルーチンを使う。
XE4 System.Types.TQuaternion3D
演算子のオーバーロードがないので計算自体は FMX.Types3D にあるルーチンを使う。
XE5 /
Appmethod 1.13
System.Types.TQuaternion3D
XE6 /
Appmethod 1.14
System.Math.Vectors.TQuaternion3D

[2D 関係のルーチン (FireMonkey)]

2D 関係のルーチンは FMX.Types にありますが、バージョンによって増減があります。

機能 2D 関係のルーチン
XE2 FMX.Types (XE2 固有のルーチンが多い)
XE3 FMX.Types
XE4 FMX.Types
XE5 /
Appmethod 1.13
FMX.Types (計算ルーチンは殆ど存在しない)
XE6 /
Appmethod 1.14
FMX.Types (計算ルーチンは殆ど存在しない)

[3D 関係のルーチン (FireMonkey)]

3D 関係のルーチンは FMX.Types3D にありますが、バージョンによって増減があります。

機能 3D 関係のルーチン
XE2 FMX.Types3D (XE2 固有のルーチンが多い)
XE3 FMX.Types3D
XE4 FMX.Types3D
XE5 /
Appmethod 1.13
FMX.Types3D (計算ルーチンは殆ど存在しない)
XE6 /
Appmethod 1.14
FMX.Types3D (計算ルーチンは殆ど存在しない)

基本的に、独立したルーチンは各レコードにある演算子のオーバーロード及びメソッドへ集約されていく傾向があります。つまり、FireMoneky 固有の実装ではなく (VCL でも使える) RTL での汎用的な実装の方向へ進んでいます。

See Also:


 BACK