FineKernelToolKit
2.8.10
|
一般4元正方行列を管理するクラス [詳細]
Public メソッド | |
fk_Matrix (void) | |
コンストラクタ | |
fk_Matrix (const fk_Matrix &) | |
コピーコンストラクタ | |
単項演算子 | |
fk_Matrix | operator! (void) const |
逆行列取得演算子 | |
比較演算子 | |
bool | operator== (const fk_Matrix &) const |
同値比較演算子 | |
bool | operator!= (const fk_Matrix &) const |
異値比較演算子 | |
代入演算子 | |
fk_Matrix & | operator= (const fk_Matrix &) |
単純代入演算子 | |
fk_Matrix & | operator= (const fk_OrthoMatrix &) |
fk_OrthoMatrix 型からの単純代入演算子 | |
fk_Matrix & | operator+= (const fk_Matrix &) |
行列和代入演算子1 | |
fk_Matrix & | operator+= (const fk_OrthoMatrix &) |
行列和代入演算子2 | |
fk_Matrix & | operator-= (const fk_Matrix &) |
行列差代入演算子1 | |
fk_Matrix & | operator-= (const fk_OrthoMatrix &) |
行列差代入演算子2 | |
fk_Matrix & | operator*= (const fk_Matrix &) |
行列積代入演算子1 | |
fk_Matrix & | operator*= (const fk_OrthoMatrix &) |
行列積代入演算子2 | |
メンバ関数 | |
bool | isRegular (void) const |
正則判定関数 | |
bool | isSingular (void) const |
特異判定関数 | |
bool | inverse (void) |
逆行列化関数 | |
void | makeScale (double x, double y, double z) |
拡大縮小行列生成関数1 | |
void | makeScale (const fk_Vector &v) |
拡大縮小行列生成関数2 | |
フレンド | |
二項演算子 | |
fk_HVector | operator* (const fk_Matrix &, const fk_HVector &) |
ベクトル変換二項演算子 | |
fk_Matrix | operator* (const fk_Matrix &, const fk_Matrix &) |
行列積二項演算子 | |
fk_Matrix | operator+ (const fk_Matrix &, const fk_Matrix &) |
行列和二項演算子 | |
fk_Matrix | operator- (const fk_Matrix &, const fk_Matrix &) |
行列差二項演算子 |
一般4元正方行列を管理するクラス
このクラスは、一般4元正方行列に関する様々な機能を提供します。 このクラスは、 fk_OrthoMatrix クラスから派生しており、 多くの重要な機能は fk_OrthoMatrix から継承していますので、 そちらの解説も合わせて参照して下さい。
直交行列のみを扱う場合は fk_OrthoMatrix を利用して下さい。 任意元の正方行列を扱う場合は fk_GenMatrix を利用して下さい。
fk_Matrix::fk_Matrix | ( | void | ) |
コンストラクタ
単位行列を生成します。
fk_Matrix::fk_Matrix | ( | const fk_Matrix & | ) |
コピーコンストラクタ
fk_Matrix fk_Matrix::operator! | ( | void | ) | const |
逆行列取得演算子
以下のコードは、M_org の逆行列を M_new に代入します。
M_new = !M_org;
このとき、M_org は変化しません。 もし M_org が特異行列であった場合は、M_new は M_org と同値となります。
fk_OrthoMatrixを再定義しています。
bool fk_Matrix::operator== | ( | const fk_Matrix & | ) | const |
同値比較演算子
fk_Matrix では、以下のように記述することで、 M1 と M2 が等しいかどうかを判断できます。
if(M1 == M2) {
:
:
}
ここでの比較は、各成分の比較において FK_MATRIX_EPS までの数値誤差を許容しています。
bool fk_Matrix::operator!= | ( | const fk_Matrix & | ) | const |
異値比較演算子
fk_Matrix では、以下のように記述することで、 M1 と M2 が等しくないかどうかを判断できます。
if(M1 != M2) {
:
:
}
ここでの比較は、各成分の比較において FK_MATRIX_EPS までの数値誤差を許容しています。
fk_Matrix& fk_Matrix::operator= | ( | const fk_OrthoMatrix & | ) |
fk_OrthoMatrix 型からの単純代入演算子
fk_OrthoMatrixを再定義しています。
行列和代入演算子1
以下のコードは、M1 と M2 の行列和を 前の M1 の値は破棄して改めて M1 に設定します。
M1 += M2;
これは、以下のコードと同義です。
M1 = M1 + M2;
fk_Matrix& fk_Matrix::operator+= | ( | const fk_OrthoMatrix & | ) |
行列和代入演算子2
「行列和代入演算子1」と同義ですが、 右辺が fk_OrthoMatrix 型の場合に対応する演算子です。
行列差代入演算子1
以下のコードは、M1 と M2 の行列差を 前の M1 の値は破棄して改めて M1 に設定します。
M1 -= M2;
これは、以下のコードと同義です。
M1 = M1 - M2;
fk_Matrix& fk_Matrix::operator-= | ( | const fk_OrthoMatrix & | ) |
行列差代入演算子2
「行列差代入演算子1」と同義ですが、 右辺が fk_OrthoMatrix 型の場合に対応する演算子です。
行列積代入演算子1
以下のコードは、M1 と M2 の行列積を 前の M1 の値は破棄して改めて M1 に設定します。
M1 *= M2;
これは、以下のコードと同義です。
M1 = M1 * M2;
fk_Matrix& fk_Matrix::operator*= | ( | const fk_OrthoMatrix & | ) |
bool fk_Matrix::isRegular | ( | void | ) | const |
正則判定関数
行列が正則であるかどうかを判定します。 正則行列とは、逆行列が存在する行列のことです。
bool fk_Matrix::isSingular | ( | void | ) | const |
特異判定関数
行列が特異であるかどうかを判定します。 特異行列とは、逆行列が存在しない行列のことです。 これは「非正則行列」と同義になります。
bool fk_Matrix::inverse | ( | void | ) |
逆行列化関数
現在設定されている行列に対し、正則行列であれば自身を逆行列化します。 特異(非正則)行列である場合は「失敗」とし、成分値を変更しません。
fk_OrthoMatrixを再定義しています。
void fk_Matrix::makeScale | ( | double | x, |
double | y, | ||
double | z | ||
) |
拡大縮小行列生成関数1
各座標軸方向への拡大縮小率を個別に設定した行列を生成します。
[in] | x | x方向の拡大縮小率 |
[in] | y | y方向の拡大縮小率 |
[in] | z | z方向の拡大縮小率 |
void fk_Matrix::makeScale | ( | const fk_Vector & | v | ) |
拡大縮小行列生成関数2
各座標軸方向への拡大縮小率を個別に設定した行列を生成します。 引数のベクトルの各成分が、軸方向の拡大縮小率と対応します。
[in] | v | 拡大縮小率ベクトル |
fk_HVector operator* | ( | const fk_Matrix & | , |
const fk_HVector & | |||
) | [friend] |
ベクトル変換二項演算子
4次元ベクトル V1 の、行列 M による変換ベクトル V2 を求めるには、 以下のように記述します。 V1, V2 は共に fk_HVector 型の変数で、M は fk_Matrix 型の変数です。
V2 = M * V1;
FK では行列体系として MV 系を採用しており、 行列のベクトル変換の際には行列が左側、ベクトルが右側である必要があります。
以下のコードは、fk_HVector 型の変数 V_org を fk_Matrix 型の変数 M によって変換した値を、 fk_HVector 型変数 V_new に代入します。
V_new = M * V_org;
FK では行列体系として MV 系を採用しており、 行列のベクトル変換の際には行列が左側、ベクトルが右側である必要があります。
行列積二項演算子
行列 M1, M2 の行列積 M3 を求めるには、 以下のように記述します。 M1, M2, M3 はいずれも fk_Matrix 型の変数です。
M3 = M1 * M2;
行列和二項演算子
行列 M1, M2 の行列和 M3 を求めるには、 以下のように記述します。 M1, M2, M3 はいずれも fk_Matrix 型です。
M3 = M1 + M2;