FineKernelToolKit 4.2.13
|
モデルの位置や姿勢を管理するクラス [詳解]
#include <CLI/FK_CLI/include/MatAdmin_CLI.h>
公開メンバ関数 | |
拡大縮小関連メソッド | |
bool | SetScale (double scale, fk_Axis axis) |
軸方向絶対倍率設定メソッド | |
bool | SetScale (double x, double y, double z) |
軸方向個別絶対倍率設定メソッド | |
bool | PrdScale (double scale) |
全体相対倍率設定メソッド | |
bool | PrdScale (double scale, fk_Axis axis) |
軸方向相対倍率設定メソッド | |
bool | PrdScale (double x, double y, double z) |
軸方向個別相対倍率設定メソッド | |
double | GetScale (fk_Axis axis) |
軸方向倍率取得メソッド | |
姿勢制御メソッド | |
bool | GlFocus (fk_Vector^ p) |
グローバル座標系注視点設定メソッド1 | |
bool | GlFocus (double x, double y, double z) |
グローバル座標系注視点設定メソッド2 | |
bool | LoFocus (fk_Vector^ p) |
ローカル座標系注視点設定メソッド1 | |
bool | LoFocus (double x, double y, double z) |
ローカル座標系注視点設定メソッド2 | |
bool | GlVec (fk_Vector^ v) |
グローバル座標系方向ベクトル設定メソッド1 | |
bool | GlVec (double x, double y, double z) |
グローバル座標系方向ベクトル設定メソッド2 | |
bool | GlUpvec (fk_Vector^ v) |
グローバル座標系アップベクトル設定メソッド1 | |
bool | GlUpvec (double x, double y, double z) |
グローバル座標系アップベクトル設定メソッド2 | |
bool | LoUpvec (fk_Vector^ v) |
ローカル座標系アップベクトル設定メソッド1 | |
bool | LoUpvec (double x, double y, double z) |
ローカル座標系アップベクトル設定メソッド2 | |
bool | GlAngle (fk_Angle^ angle) |
グローバル座標系オイラー角設定メソッド1 | |
bool | GlAngle (double h, double p, double b) |
グローバル座標系オイラー角設定メソッド2 | |
bool | LoAngle (fk_Angle^ angle) |
ローカル座標系オイラー角設定メソッド1 | |
bool | LoAngle (double h, double p, double b) |
ローカル座標系オイラー角設定メソッド2 | |
プロパティ | |
fk_Vector^ | Position [get] |
位置ベクトルプロパティ | |
fk_Vector^ | Vec [get] |
方向ベクトルプロパティ | |
fk_Vector^ | Upvec [get] |
アップベクトルプロパティ | |
fk_Angle^ | Angle [get] |
オイラー角取得メソッド | |
fk_Matrix^ | Matrix [get] |
変換行列プロパティ | |
fk_Matrix^ | InvMatrix [get] |
逆変換行列プロパティ | |
fk_Matrix^ | BaseMatrix [get] |
移動・回転要素変換行列プロパティ | |
fk_Matrix^ | InvBaseMatrix [get] |
移動・回転要素逆変換行列プロパティ | |
bool | ScaleMode [get] |
拡大縮小状態判定プロパティ | |
double | Scale [get, set] |
全体倍率プロパティ | |
モデルの位置や姿勢を管理するクラス
このクラスは fk_Model クラスの基底クラスで、 モデルの位置や姿勢の制御する機能を提供します。 これは、回転による指定や平行移動、任意位置指定など様々な方法があります。
このクラスのメソッド群を理解する上で欠かせない概念が 「グローバル座標系」と「ローカル座標系」です。 「グローバル座標系」とは、 シーン中に原点と x,y,z 各軸によって構成されている唯一の座標系です。 これに対し「ローカル座標系」とは、各モデルごとに存在する座標系であり、 モデルの中心を原点とし、前方向を -z 方向、上方向を +y 方向、 右方向を +x 方向とした座標系のことです。
グローバル座標系による指定では、 各モデルの位置や向いている方向などに依存しない動作となります。 例えば、-z 方向への平行移動を指示した場合は、 モデルがどちらを向いていても一律に -z 方向へ移動していきます。 感覚的には、モデルの制御を「東西南北」といった 絶対的な方角で指定すると考えればわかりやすいでしょう。
一方、ローカル座標系による指定では各モデルの位置や姿勢が重要となります。 同じように -z 方向への移動を指示した場合、 各モデルは現在モデルが向いている方向へ「前進」していくことになります。 +x 方向を向いているモデルは +x 方向へ、 -y 方向を向いているモデルは -y 方向へ移動していきます。 このように、ローカル座標系の指定は「前後左右」による指定と言えます。
このクラスのメソッドは、 グローバル座標系による制御メソッドは「Gl」というプレフィックスを持ち、 ローカル座標系による制御メソッドは「Lo」というプレフィックスを持ちます。 ほとんどの制御メソッドは「Gl」版と「Lo」版で同一の引数を持ったメソッドが存在しています。 (例外は fk_Model::GlMoveTo() と GlVec() です。 これについてはそれぞれのメソッドの項で説明します。)
あるモデルのローカル座標系に対し、別のモデルを配置する「親子関係」については、 fk_Model を参照して下さい。
bool FK_CLI::fk_MatrixAdmin::SetScale | ( | double | scale, |
fk_Axis | axis | ||
) |
軸方向絶対倍率設定メソッド
モデルの、特定軸方向の拡大・縮小倍率を設定します。 倍率に 0 を入力した場合、エラーとして倍率の変更を行いません。
bool FK_CLI::fk_MatrixAdmin::SetScale | ( | double | x, |
double | y, | ||
double | z | ||
) |
軸方向個別絶対倍率設定メソッド
モデルの、各軸方向の拡大・縮小倍率を設定します。 各倍率のいずれかで 0 を入力した場合、エラーとして倍率の変更を行いません。
[in] | x | x方向の倍率 |
[in] | y | y方向の倍率 |
[in] | z | z方向の倍率 |
bool FK_CLI::fk_MatrixAdmin::PrdScale | ( | double | scale | ) |
全体相対倍率設定メソッド
モデルの現在の全体拡大・縮小倍率に対し、引数で与えられた倍率を掛けます。 倍率に 0 を入力した場合、エラーとして倍率の変更を行いません。
[in] | scale | 掛ける倍率 |
bool FK_CLI::fk_MatrixAdmin::PrdScale | ( | double | scale, |
fk_Axis | axis | ||
) |
軸方向相対倍率設定メソッド
モデルの、特定軸方向の拡大・縮小倍率に対し、引数で与えられた倍率を掛けます。 倍率に 0 を入力した場合、エラーとして倍率の変更を行いません。
bool FK_CLI::fk_MatrixAdmin::PrdScale | ( | double | x, |
double | y, | ||
double | z | ||
) |
軸方向個別相対倍率設定メソッド
モデルの、各軸方向の拡大・縮小倍率に対し、引数で与えられた倍率を掛けます。 各倍率のいずれかで 0 を入力した場合、エラーとして倍率の変更を行いません。
[in] | x | x方向へ掛ける倍率 |
[in] | y | y方向へ掛ける倍率 |
[in] | z | z方向へ掛ける倍率 |
double FK_CLI::fk_MatrixAdmin::GetScale | ( | fk_Axis | axis | ) |
軸方向倍率取得メソッド
モデルの特定軸方向拡大・縮小倍率を取得します。
bool FK_CLI::fk_MatrixAdmin::GlFocus | ( | fk_Vector^ | p | ) |
グローバル座標系注視点設定メソッド1
モデルの方向ベクトルを、 グローバル座標系による位置 p に向くように方向ベクトルを設定します。 モデルをカメラとして解釈すると、 p を注視点としてカメラを向けることになります。
なお、このメソッドを呼んだ時点でのアップベクトルの状態は規定されていません。 アップベクトルを含めた姿勢制御を行うため、 GlUpvec() などと併用しなければなりません。
[in] | p | 注視点位置ベクトル |
bool FK_CLI::fk_MatrixAdmin::GlFocus | ( | double | x, |
double | y, | ||
double | z | ||
) |
グローバル座標系注視点設定メソッド2
モデルの方向ベクトルを、 グローバル座標系による位置 (x, y, z) に向くように方向ベクトルを設定します。 モデルをカメラとして解釈すると、 (x, y, z) を注視点としてカメラを向けることになります。
なお、このメソッドを呼んだ時点でのアップベクトルの状態は規定されていません。 アップベクトルを含めた姿勢制御を行うため、 GlUpvec() などと併用しなければなりません。
[in] | x | 注視点位置ベクトルのx成分 |
[in] | y | 注視点位置ベクトルのy成分 |
[in] | z | 注視点位置ベクトルのz成分 |
bool FK_CLI::fk_MatrixAdmin::LoFocus | ( | fk_Vector^ | p | ) |
ローカル座標系注視点設定メソッド1
モデルの方向ベクトルを、 ローカル座標系による位置 p に向くように方向ベクトルを設定します。 モデルをカメラとして解釈すると、 p を注視点としてカメラを向けることになります。
なお、このメソッドを呼んだ時点でのアップベクトルの状態は規定されていません。 アップベクトルを含めた姿勢制御を行うため、 GlUpvec() などと併用しなければなりません。
[in] | p | 注視点位置ベクトル |
bool FK_CLI::fk_MatrixAdmin::LoFocus | ( | double | x, |
double | y, | ||
double | z | ||
) |
ローカル座標系注視点設定メソッド2
モデルの方向ベクトルを、 ローカル座標系による位置 (x, y, z) に向くように方向ベクトルを設定します。 モデルをカメラとして解釈すると、 (x, y, z) を注視点としてカメラを向けることになります。
なお、このメソッドを呼んだ時点でのアップベクトルの状態は規定されていません。 アップベクトルを含めた姿勢制御を行うため、 GlUpvec() などと併用しなければなりません。
[in] | x | 注視点位置ベクトルのx成分 |
[in] | y | 注視点位置ベクトルのy成分 |
[in] | z | 注視点位置ベクトルのz成分 |
bool FK_CLI::fk_MatrixAdmin::GlVec | ( | fk_Vector^ | v | ) |
グローバル座標系方向ベクトル設定メソッド1
モデルの方向ベクトルを、グローバル座標系において与えられたベクトルに設定します。 ベクトルは正規化されている必要はありませんが、 零ベクトルであってはなりません。
このメソッドを呼んだ時点でのアップベクトルの状態は規定されていません。 アップベクトルを含めた姿勢制御を行うため、 GlUpvec() などと併用しなければなりません。
[in] | v | 方向ベクトル |
bool FK_CLI::fk_MatrixAdmin::GlVec | ( | double | x, |
double | y, | ||
double | z | ||
) |
グローバル座標系方向ベクトル設定メソッド2
モデルの方向ベクトルを、グローバル座標系において与えられたベクトルに設定します。 ベクトルは正規化されている必要はありませんが、 零ベクトルであってはなりません。
このメソッドを呼んだ時点でのアップベクトルの状態は規定されていません。 アップベクトルを含めた姿勢制御を行うため、 GlUpvec() などと併用しなければなりません。
[in] | x | 方向ベクトルのx成分 |
[in] | y | 方向ベクトルのx成分 |
[in] | z | 方向ベクトルのx成分 |
bool FK_CLI::fk_MatrixAdmin::GlUpvec | ( | fk_Vector^ | v | ) |
bool FK_CLI::fk_MatrixAdmin::GlUpvec | ( | double | x, |
double | y, | ||
double | z | ||
) |
グローバル座標系アップベクトル設定メソッド2
モデルのアップベクトルを、グローバル座標系において与えられたベクトルに設定します。 ベクトルは正規化されている必要はありませんが、 零ベクトルであってはなりません。 また、方向ベクトルと平行であった場合もエラーとなります。
[in] | x | アップベクトルのx成分 |
[in] | y | アップベクトルのy成分 |
[in] | z | アップベクトルのz成分 |
bool FK_CLI::fk_MatrixAdmin::LoUpvec | ( | fk_Vector^ | v | ) |
ローカル座標系アップベクトル設定メソッド1
モデルのアップベクトルを、ローカル座標系において与えられたベクトルに設定します。 本メソッドにおいては、z成分の値は意味をなしませんが、 実際には 0 以外の値であっても問題なく動作します。
ベクトルは正規化されている必要はありませんが、 零ベクトルであってはなりません。 また、z軸方向のベクトルと平行であった場合もエラーとなります。
[in] | v | アップベクトル |
bool FK_CLI::fk_MatrixAdmin::LoUpvec | ( | double | x, |
double | y, | ||
double | z | ||
) |
ローカル座標系アップベクトル設定メソッド2
モデルのアップベクトルを、ローカル座標系において与えられたベクトルに設定します。 本メソッドにおいては、z成分の値は意味をなしませんが、 実際には 0 以外の値であっても問題なく動作します。
ベクトルは正規化されている必要はありませんが、 零ベクトルであってはなりません。 また、z軸方向のベクトルと平行であった場合もエラーとなります。
[in] | x | アップベクトルのx成分 |
[in] | y | アップベクトルのy成分 |
[in] | z | アップベクトルのz成分 |
bool FK_CLI::fk_MatrixAdmin::GlAngle | ( | fk_Angle^ | angle | ) |
bool FK_CLI::fk_MatrixAdmin::GlAngle | ( | double | h, |
double | p, | ||
double | b | ||
) |
bool FK_CLI::fk_MatrixAdmin::LoAngle | ( | fk_Angle^ | angle | ) |
bool FK_CLI::fk_MatrixAdmin::LoAngle | ( | double | h, |
double | p, | ||
double | b | ||
) |
|
get |
位置ベクトルプロパティ
モデルの位置ベクトルを参照します。 親モデルが設定されている場合、 親モデルの座標系からの相対的な位置ベクトルとなります。 グローバル座標系での正確な位置ベクトルを取得したい場合は、 fk_Model::InhPosition を利用して下さい。
本プロパティは設定を行うことはできません。 位置指定は fk_Model::GlMoveTo() を利用してください。
|
get |
方向ベクトルプロパティ
モデルの方向ベクトルを参照します。 親モデルが設定されている場合、 親モデルの座標系からの相対的な方向ベクトルとなります。 グローバル座標系での正確な方向ベクトルを取得したい場合は、 fk_Model::InhVec を利用して下さい。
本プロパティは設定を行うことはできません。 方向指定は GlVec() を利用してください。
|
get |
アップベクトルプロパティ
モデルのアップベクトルを参照します。 親モデルが設定されている場合、 親モデルの座標系からの相対的なアップベクトルとなります。 グローバル座標系での正確なアップベクトルを取得したい場合は、 fk_Model::InhUpvec を利用して下さい。
本プロパティは設定を行うことはできません。 方向指定は GlUpvec() を利用してください。
|
get |
オイラー角取得メソッド
モデルの姿勢をオイラー角で参照します。 親モデルが設定されている場合、 親モデルの座標系からの相対的なオイラー角となります。 グローバル座標系での正確なオイラー角を取得したい場合は、 fk_Model::InhAngle を利用して下さい。 オイラー角についての詳細は、 fk_Angle の説明を参照して下さい。
本プロパティは設定を行うことはできません。 オイラー角指定は GlAngle() を利用してください。
|
get |
変換行列プロパティ
モデルの位置と姿勢を表す変換行列を参照します。 ここで取得する変換行列は、 親モデルが存在する場合は親モデルに対する変換となります。 グローバル座標系での変換行列を取得したい場合は、 fk_Model::InhMatrix を利用して下さい。
|
get |
逆変換行列プロパティ
モデルの位置と姿勢を表す変換行列の、逆行列を参照します。 これは、 Matrix プロパティで得られる行列の逆行列となります。 ここで取得する逆変換行列は、 親モデルが存在する場合は親モデルに対する逆変換となります。 グローバル座標系での逆変換行列を取得したい場合は、 fk_Model::InhInvMatrix を利用して下さい。
|
get |
移動・回転要素変換行列プロパティ
モデルの持つ変換要素のうち、 位置と姿勢のみを反映した、 すなわち拡大縮小の要素を省いた変換行列を参照します。 親モデルが存在する場合は親モデルに対する変換となります。 グローバル座標系での変換行列を取得したい場合は、 fk_Model::InhBaseMatrix を利用して下さい。
|
get |
移動・回転要素逆変換行列プロパティ
モデルの持つ変換要素のうち、 位置と姿勢のみを反映した、 すなわち拡大縮小の要素を省いた変換行列の逆行列を参照します。 親モデルが存在する場合は親モデルに対する逆変換となります。 グローバル座標系での逆変換行列を取得したい場合は、 fk_Model::InhInvBaseMatrix を利用して下さい。
|
get |
拡大縮小状態判定プロパティ
モデルの拡大・縮小状態を参照します。 拡大縮小倍率に 1 以外が設定されている場合 true、 されていない場合 false となります。
モデルの拡大・縮小倍率が、 全体および軸方向のいずれかで 1 以外に設定されている場合、 モデルの拡大縮小が行われると解釈します。
|
getset |