FineKernelToolKit 4.2.13
|
境界ボリュームを管理するクラス [詳解]
#include <FK/Boundary.h>
公開メンバ関数 | |
fk_Boundary (fk_Type) | |
コンストラクタ | |
virtual | ~fk_Boundary () |
デストラクタ | |
境界ボリューム選択制御関数 | |
void | setBMode (fk_BoundaryMode mode) |
境界ボリューム選択関数 | |
fk_BoundaryMode | getBMode (void) |
境界ボリューム選択状態参照関数 | |
境界球制御関数 | |
void | setSphere (double r) |
境界球半径設定関数 | |
void | setSpherePos (fk_Vector pos) |
境界球位置設定関数 | |
double | getSphere (void) |
境界球半径参照関数 | |
fk_Vector | getSpherePos (void) |
境界球位置参照関数 | |
軸平行境界ボックス (AABB) 制御関数 | |
void | setAABBSize (double x, double y, double z) |
軸平行境界ボックス (AABB) サイズ設定関数1 | |
void | setAABBSize (fk_Vector size) |
軸平行境界ボックス (AABB) サイズ設定関数2 | |
void | setAABBMaxMin (fk_Vector max, fk_Vector min) |
軸平行境界ボックス (AABB) 最大最小設定関数 | |
void | setAABBMax (fk_Vector v) |
軸平行境界ボックス (AABB) 最大値側設定関数 | |
void | setAABBMin (fk_Vector v) |
軸平行境界ボックス (AABB) 最小値側設定関数 | |
fk_Vector | getAABBSize (void) |
軸平行境界ボックス (AABB) サイズ取得関数 | |
fk_Vector | getAABBMax (void) |
軸平行境界ボックス (AABB) 最大値側取得関数 | |
fk_Vector | getAABBMin (void) |
軸平行境界ボックス (AABB) 最小値側取得関数 | |
std::tuple< fk_Vector, fk_Vector > | getAABBMaxMin (void) |
軸平行境界ボックス (AABB) 最大最小取得関数 | |
有向境界ボックス (OBB) 制御関数 | |
void | setOBBSize (double x, double y, double z) |
有向境界ボックス (OBB) サイズ設定関数1 | |
void | setOBBSize (fk_Vector size) |
有向境界ボックス (OBB) サイズ設定関数2 | |
void | setOBBMaxMin (fk_Vector max, fk_Vector min) |
有向境界ボックス (OBB) 最大最小設定関数 | |
void | setOBBMax (fk_Vector v) |
有向境界ボックス (OBB) 最大値側設定関数 | |
void | setOBBMin (fk_Vector v) |
有向境界ボックス (OBB) 最小値側設定関数 | |
fk_Vector | getOBBSize (void) |
有向境界ボックス (OBB) サイズ取得関数 | |
fk_Vector | getOBBMax (void) |
有向境界ボックス (OBB) 最大値側取得関数 | |
fk_Vector | getOBBMin (void) |
有向境界ボックス (OBB) 最小値側取得関数 | |
std::tuple< fk_Vector, fk_Vector > | getOBBMaxMin (void) |
有向境界ボックス (OBB) 最大最小取得関数 | |
カプセル型制御関数 | |
void | setCapsule (fk_Vector sPos, fk_Vector ePos, double r) |
カプセル型設定関数 | |
void | setCapsuleStartPos (fk_Vector argP) |
カプセル型中心軸始点設定関数 | |
void | setCapsuleEndPos (fk_Vector argP) |
カプセル型中心軸終点設定関数 | |
void | setCapsuleRadius (double r) |
カプセル型領域規定距離設定関数 | |
double | getCapsuleRadius (void) |
カプセル型領域規定距離取得関数 | |
double | getCapsuleLength (void) |
カプセル型中心軸長取得関数 | |
std::tuple< fk_Vector, fk_Vector > | getCapsulePos (void) |
カプセル型中心軸両端点取得関数 | |
fk_Vector | getCapsuleStartPos (void) |
カプセル型中心軸始点取得関数 | |
fk_Vector | getCapsuleEndPos (void) |
カプセル型中心軸終点取得関数 | |
境界ボリューム描画制御関数 | |
void | setBDrawToggle (bool mode) |
境界ボリューム描画有無設定関数 | |
bool | getBDrawToggle (void) |
境界ボリューム描画有無取得関数 | |
void | setBLineColor (fk_Color col) |
境界ボリューム非干渉描画色設定関数 | |
fk_Color * | getBLineColor (void) |
境界ボリューム非干渉描画色取得関数 | |
void | setBIntLineColor (fk_Color col) |
境界ボリューム干渉状態描画色設定関数 | |
fk_Color * | getBIntLineColor (void) |
境界ボリューム干渉状態描画色取得関数 | |
void | setBLineWidth (double width) |
境界ボリューム描画線幅設定関数 | |
double | getBLineWidth (void) |
境界ボリューム描画線幅取得関数 | |
![]() | |
fk_MatrixAdmin (fk_Type=fk_Type::MATRIXADMIN) | |
コンストラクタ | |
virtual | ~fk_MatrixAdmin () |
デストラクタ | |
fk_Vector | getPosition (void) const |
位置ベクトル取得関数 | |
fk_Vector | getVec (void) const |
方向ベクトル取得関数 | |
fk_Vector | getUpvec (void) const |
アップベクトル取得関数 | |
fk_Angle | getAngle (void) const |
オイラー角取得関数 | |
fk_Matrix | getMatrix (void) const |
変換行列取得関数 | |
fk_Matrix | getInvMatrix (void) const |
逆変換行列取得関数 | |
fk_OrthoMatrix | getBaseMatrix (void) const |
移動・回転要素変換行列取得関数 | |
fk_OrthoMatrix | getInvBaseMatrix (void) const |
移動・回転要素逆変換行列取得関数 | |
bool | setScale (const double scale) |
全体絶対倍率設定関数 | |
bool | setScale (const double scale, fk_Axis axis) |
軸方向絶対倍率設定関数 | |
bool | setScale (const double x, const double y, const double z) |
軸方向個別絶対倍率設定関数 | |
bool | prdScale (const double scale) |
全体相対倍率設定関数 | |
bool | prdScale (const double scale, fk_Axis axis) |
軸方向相対倍率設定関数 | |
bool | prdScale (const double x, const double y, const double z) |
軸方向個別相対倍率設定関数 | |
double | getScale (void) const |
全体倍率取得関数 | |
double | getScale (fk_Axis axis) const |
軸方向倍率取得関数 | |
bool | getScaleMode (void) const |
拡大縮小状態判定関数 | |
bool | glRotate_ (fk_Vector &origin, fk_Axis axis, double theta) |
グローバル座標系座標軸回転関数1 | |
bool | glRotate_ (double orgX, double orgY, double orgZ, fk_Axis axis, double theta) |
グローバル座標系座標軸回転関数2 | |
bool | glRotate_ (fk_Vector &A, fk_Vector &B, double theta) |
グローバル座標系任意軸回転関数1 | |
bool | glRotate_ (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta) |
グローバル座標系任意軸回転関数2 | |
bool | loRotate_ (fk_Vector &origin, fk_Axis axis, double theta) |
ローカル座標系座標軸回転関数1 | |
bool | loRotate_ (double orgX, double orgY, double orgZ, fk_Axis axis, double theta) |
ローカル座標系座標軸回転関数2 | |
bool | loRotate_ (fk_Vector &A, fk_Vector &B, double theta) |
ローカル座標系任意軸回転関数1 | |
bool | loRotate_ (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta) |
ローカル座標系任意軸回転関数2 | |
bool | glRotateWithVec_ (fk_Vector &origin, fk_Axis axis, double theta) |
グローバル座標系座標軸回転(姿勢付き)関数1 | |
bool | glRotateWithVec_ (double orgX, double orgY, double orgZ, fk_Axis axis, double theta) |
グローバル座標系座標軸回転(姿勢付き)関数2 | |
bool | glRotateWithVec_ (fk_Vector &A, fk_Vector &B, double theta) |
グローバル座標系任意軸回転(姿勢付き)関数1 | |
bool | glRotateWithVec_ (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta) |
グローバル座標系任意軸回転(姿勢付き)関数2 | |
bool | loRotateWithVec_ (fk_Vector &origin, fk_Axis axis, double theta) |
ローカル座標系座標軸回転(姿勢付き)関数1 | |
bool | loRotateWithVec_ (double orgX, double orgY, double orgZ, fk_Axis axis, double theta) |
ローカル座標系座標軸回転(姿勢付き)関数2 | |
bool | loRotateWithVec_ (fk_Vector &A, fk_Vector &B, double theta) |
ローカル座標系任意軸回転(姿勢付き)関数1 | |
bool | loRotateWithVec_ (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta) |
ローカル座標系任意軸回転(姿勢付き)関数2 | |
bool | glTranslate_ (fk_Vector &v) |
グローバル座標系平行移動関数1 | |
bool | glTranslate_ (double x, double y, double z) |
グローバル座標系平行移動関数2 | |
bool | loTranslate_ (fk_Vector &v) |
ローカル座標系平行移動関数1 | |
bool | loTranslate_ (double x, double y, double z) |
ローカル座標系平行移動関数2 | |
bool | glMoveTo_ (fk_Vector &p) |
グローバル座標系位置指定関数1 | |
bool | glMoveTo_ (double x, double y, double z) |
グローバル座標系位置指定関数2 | |
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_BaseObject (fk_Type type=fk_Type::BASEOBJECT) | |
コンストラクタ | |
fk_Type | getObjectType (void) const |
タイプ取得関数 | |
境界ボリュームを管理するクラス
このクラスは、モデルの干渉判定や衝突判定を行うための 「境界ボリューム」を制御する機能を提供します。
「境界ボリューム」とは、モデルが干渉判定や衝突判定を行う際に、 処理を高速に行うための簡易的な形状を指します。 モデル同士の干渉・衝突判定は、 実際にはこの境界ボリューム同士の干渉状態や衝突を検出することになります。 干渉判定と衝突判定に関する詳細は fk_Model の概要を参照して下さい。
境界ボリュームには、現在は以下の4種類が提供されています。
FK::fk_Boundary::fk_Boundary | ( | fk_Type | ) |
コンストラクタ
|
virtual |
デストラクタ
void FK::fk_Boundary::setBMode | ( | fk_BoundaryMode | mode | ) |
境界ボリューム選択関数
この関数は、 干渉判定にどの境界ボリュームを利用するかを選択します。 本関数の設定は各境界ボリュームの設定とは独立しており、 この関数によってモードを変更しても、 各境界ボリュームの大きさ等の設定は初期化されません。
[in] | mode | モデルで干渉判定に利用する境界ボリュームの種類 |
fk_BoundaryMode FK::fk_Boundary::getBMode | ( | void | ) |
void FK::fk_Boundary::setSphere | ( | double | r | ) |
境界球半径設定関数
境界球半径を設定します。 現在モデルに設定されている形状から、 自動的に境界球半径を設定したい場合は fk_Model::adjustSphere() を用いて下さい。
[in] | r | 境界球半径 |
void FK::fk_Boundary::setSpherePos | ( | fk_Vector | pos | ) |
境界球位置設定関数
境界球の中心座標をローカル座標系で設定します。 現在モデルに設定されている形状から、 自動的に境界球中心を設定したい場合は fk_Model::adjustSphere() を用いて下さい。
[in] | pos | 境界球中心座標 |
double FK::fk_Boundary::getSphere | ( | void | ) |
fk_Vector FK::fk_Boundary::getSpherePos | ( | void | ) |
void FK::fk_Boundary::setAABBSize | ( | double | x, |
double | y, | ||
double | z | ||
) |
軸平行境界ボックス (AABB) サイズ設定関数1
軸平行境界ボックス (AABB) のサイズを設定します。 サイズの各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。
[in] | x | AABBのx方向のサイズ |
[in] | y | AABBのy方向のサイズ |
[in] | z | AABBのz方向のサイズ |
void FK::fk_Boundary::setAABBSize | ( | fk_Vector | size | ) |
軸平行境界ボックス (AABB) サイズ設定関数2
軸平行境界ボックス (AABB) のサイズを設定します。 サイズの各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。
[in] | size | AABBのサイズ |
軸平行境界ボックス (AABB) 最大最小設定関数
軸平行境界ボックス (AABB) の各成分の最大値と最小値を設定します。 各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。
[in] | max | AABBの最大値側のベクトル |
[in] | min | AABBの最小値側のベクトル |
void FK::fk_Boundary::setAABBMax | ( | fk_Vector | v | ) |
軸平行境界ボックス (AABB) 最大値側設定関数
軸平行境界ボックス (AABB) の最大値側を設定します。 各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。
[in] | v | AABBの最大値側のベクトル |
void FK::fk_Boundary::setAABBMin | ( | fk_Vector | v | ) |
軸平行境界ボックス (AABB) 最小値側設定関数
軸平行境界ボックス (AABB) の最小値側を設定します。 サイズの各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。
[in] | v | AABBの最大値側のベクトル |
fk_Vector FK::fk_Boundary::getAABBSize | ( | void | ) |
軸平行境界ボックス (AABB) サイズ取得関数
現在設定されている軸平行境界ボックス (AABB) のサイズを取得します。
fk_Vector FK::fk_Boundary::getAABBMax | ( | void | ) |
軸平行境界ボックス (AABB) 最大値側取得関数
現在設定されている軸平行境界ボックス (AABB) の最大値側を取得します。
fk_Vector FK::fk_Boundary::getAABBMin | ( | void | ) |
軸平行境界ボックス (AABB) 最小値側取得関数
現在設定されている軸平行境界ボックス (AABB) の最小値側を取得します。
軸平行境界ボックス (AABB) 最大最小取得関数
軸平行境界ボックス (AABB) の各成分の最大値と最小値を取得します。 各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。
void FK::fk_Boundary::setOBBSize | ( | double | x, |
double | y, | ||
double | z | ||
) |
有向境界ボックス (OBB) サイズ設定関数1
有向境界ボックス (OBB) のサイズを設定します。 サイズの各成分はモデルのローカル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。
[in] | x | OBBのx方向のサイズ |
[in] | y | OBBのy方向のサイズ |
[in] | z | OBBのz方向のサイズ |
void FK::fk_Boundary::setOBBSize | ( | fk_Vector | size | ) |
有向境界ボックス (OBB) サイズ設定関数2
有向境界ボックス (OBB) のサイズを設定します。 サイズの各成分はモデルのローカル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。
[in] | size | OBBのサイズ |
有向境界ボックス (OBB) 最大最小設定関数
有向境界ボックス (OBB) の各成分の最大値と最小値を設定します。 サイズの各成分はモデルのローカル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。
[in] | max | OBBの最大値側のベクトル |
[in] | min | OBBの最小値側のベクトル |
void FK::fk_Boundary::setOBBMax | ( | fk_Vector | v | ) |
有向境界ボックス (OBB) 最大値側設定関数
有向境界ボックス (OBB) の最大値側を設定します。 サイズの各成分はモデルのローカル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。
[in] | v | OBBの最大値側のベクトル |
void FK::fk_Boundary::setOBBMin | ( | fk_Vector | v | ) |
有向境界ボックス (OBB) 最小値側設定関数
有向境界ボックス (OBB) の最小値側を設定します。 サイズの各成分はモデルのローカル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。
[in] | v | OBBの最大値側のベクトル |
fk_Vector FK::fk_Boundary::getOBBSize | ( | void | ) |
有向境界ボックス (OBB) サイズ取得関数
現在設定されている有向境界ボックス (OBB) のサイズを取得します。
fk_Vector FK::fk_Boundary::getOBBMax | ( | void | ) |
有向境界ボックス (OBB) 最大値側取得関数
現在設定されている有向境界ボックス (OBB) の最大値側を取得します。
fk_Vector FK::fk_Boundary::getOBBMin | ( | void | ) |
有向境界ボックス (OBB) 最小値側取得関数
現在設定されている有向境界ボックス (OBB) の最小値側を取得します。
有向境界ボックス (OBB) 最大最小取得関数
有向境界ボックス (OBB) の各成分の最大値と最小値を取得します。 各成分はグローバル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。
カプセル型設定関数
カプセル型は、数学的には線分(中心軸)からある一定距離以内にある領域となります。 この関数は、中心軸の両端点と距離を設定することでカプセル型を規定するものです。 中心軸端点の位置ベクトルは、モデルのローカル座標系に対応します。 自動的にカプセル型のサイズを設定したい場合は fk_Model::adjustCapsule() を用いて下さい。
[in] | sPos | 中心軸端点(始点側)の位置ベクトル |
[in] | ePos | 中心軸端点(終点側)の位置ベクトル |
[in] | r | 中心軸からの領域規定距離 |
void FK::fk_Boundary::setCapsuleStartPos | ( | fk_Vector | argP | ) |
カプセル型中心軸始点設定関数
現在設定されているカプセル型の中心軸の始点位置ベクトルを設定します。
[in] | argP | カプセル型の中心軸の始点位置ベクトル |
void FK::fk_Boundary::setCapsuleEndPos | ( | fk_Vector | argP | ) |
カプセル型中心軸終点設定関数
現在設定されているカプセル型の中心軸の終点位置ベクトルを設定します。
[in] | argP | カプセル型の中心軸の終点位置ベクトル |
void FK::fk_Boundary::setCapsuleRadius | ( | double | r | ) |
カプセル型領域規定距離設定関数
現在設定されているカプセル型の領域規定距離を設定します。
[in] | r | カプセル型の領域規定距離 |
double FK::fk_Boundary::getCapsuleRadius | ( | void | ) |
カプセル型領域規定距離取得関数
現在設定されているカプセル型の領域規定距離を取得します。
double FK::fk_Boundary::getCapsuleLength | ( | void | ) |
カプセル型中心軸長取得関数
現在設定されているカプセル型の中心軸の長さを取得します。
カプセル型中心軸両端点取得関数
現在設定されているカプセル型の中心軸の両端点位置ベクトルを取得します。
fk_Vector FK::fk_Boundary::getCapsuleStartPos | ( | void | ) |
カプセル型中心軸始点取得関数
現在設定されているカプセル型の中心軸の始点位置ベクトルを取得します。
fk_Vector FK::fk_Boundary::getCapsuleEndPos | ( | void | ) |
カプセル型中心軸終点取得関数
現在設定されているカプセル型の中心軸の終点位置ベクトルを取得します。
void FK::fk_Boundary::setBDrawToggle | ( | bool | mode | ) |
境界ボリューム描画有無設定関数
境界ボリュームに対し、描画の有無を制御します。
[in] | mode | true である場合、描画が有効となります。false である場合は無効となります。 |
bool FK::fk_Boundary::getBDrawToggle | ( | void | ) |
境界ボリューム描画有無取得関数
現在の境界ボリューム描画状態を取得します。
void FK::fk_Boundary::setBLineColor | ( | fk_Color | col | ) |
境界ボリューム非干渉描画色設定関数
境界ボリューム描画の際に、非干渉状態である場合の線色を設定します。
[in] | col | 線色 |
fk_Color * FK::fk_Boundary::getBLineColor | ( | void | ) |
void FK::fk_Boundary::setBIntLineColor | ( | fk_Color | col | ) |
境界ボリューム干渉状態描画色設定関数
境界ボリューム描画の際に、干渉状態である場合の線色を設定します。
[in] | col | 線色 |
fk_Color * FK::fk_Boundary::getBIntLineColor | ( | void | ) |
void FK::fk_Boundary::setBLineWidth | ( | double | width | ) |
境界ボリューム描画線幅設定関数
境界ボリューム描画の際の線幅を設定します。
[in] | width | 線幅 |
double FK::fk_Boundary::getBLineWidth | ( | void | ) |