FineKernelToolKit: FK::fk_Boundary クラス

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
FK::fk_Boundary クラス

境界ボリュームを管理するクラス [詳解]

`#include <FK/Boundary.h>`

FK::fk_Boundary の継承関係図
[凡例]
FK::fk_Boundary 連携図
[凡例]

## 公開メンバ関数

| 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::fk_MatrixAdmin に属する継承公開メンバ関数
| 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::fk_BaseObject に属する継承公開メンバ関数
| fk_BaseObject (fk_Type type=fk_Type::BASEOBJECT)
| コンストラクタ
fk_Type | getObjectType (void) const
| タイプ取得関数

## 詳解

境界ボリュームを管理するクラス

このクラスは、モデルの干渉判定や衝突判定を行うための 「境界ボリューム」を制御する機能を提供します。

「境界ボリューム」とは、モデルが干渉判定や衝突判定を行う際に、 処理を高速に行うための簡易的な形状を指します。 モデル同士の干渉・衝突判定は、 実際にはこの境界ボリューム同士の干渉状態や衝突を検出することになります。 干渉判定と衝突判定に関する詳細は fk_Model の概要を参照して下さい。

境界ボリュームには、現在は以下の4種類が提供されています。

- 境界球
  球形状による境界ボリュームです。 処理は最も高速ですが、本来の形状との誤差が大きくなることがあります。 現状では、衝突判定を行いたい場合はこの境界球を用いる必要があります。
- 軸平行境界ボックス (Axis Aligned Bounding Box, AABB)
  直方体による境界ボリュームですが、 常に各面が座標軸と垂直であるという特性を持ちます。 境界球と比較すると元形状にフィッティングしやすく、 判定処理も OBB やカプセル型と比較して高速であるという特性を持ちます。 その反面、モデルが回転した場合に新たに大きさを再設定する必要があることや、 回転によって大きさが変化することなどから、 モデルが回転する場合には扱いづらい面があります。 モデルが方向ベクトルを変化させずに移動するような場合に適しています。
- 有向境界ボックス (Oriented Bounding Box, OBB)
  AABB と同じく直方体による境界ボリュームですが、 こちらはモデルの回転に伴ってボックスの向きも追従します。 境界ボリュームの挙動が想定しやすく扱いやすい特性を持ちますが、 判定処理は全ての境界ボリューム中もっとも重く、 多くのモデルがある状態で多用するとかなり全体の処理が重くなる可能性があります。
- カプセル型
  境界が円柱側面と半球によって構成されている境界ボリュームです。 数学的には、線分から一定距離以内にある点の集合となります。 この線分を本マニュアルでは「中心軸」と呼称します。 中心軸両端点を設定することがやや面倒ですが、 長細いモデルにもフィットしやすく、判定処理も OBB より高速なので、 使い勝手のよい境界ボリュームです。

参照
  fk_Model

## 構築子と解体子

## ◆ fk_Boundary()

FK::fk_Boundary::fk_Boundary | ( | fk_Type |  | ) |

コンストラクタ

## ◆ ~fk_Boundary()

virtual FK::fk_Boundary::~fk_Boundary | ( |  | ) |

virtual

デストラクタ

## 関数詳解

## ◆ setBMode()

void FK::fk_Boundary::setBMode | ( | fk_BoundaryMode | mode | ) |

境界ボリューム選択関数

この関数は、 干渉判定にどの境界ボリュームを利用するかを選択します。 本関数の設定は各境界ボリュームの設定とは独立しており、 この関数によってモードを変更しても、 各境界ボリュームの大きさ等の設定は初期化されません。

覚え書き
  本関数で選択が有効となるのは、現バージョンでは干渉判定のみです。 衝突判定については、本関数での設定に関わらず境界球の設定が用いられます。

引数

  [in] | mode | モデルで干渉判定に利用する境界ボリュームの種類

参照
  getBMode(), fk_Model::isInter()

## ◆ getBMode()

fk_BoundaryMode FK::fk_Boundary::getBMode | ( | void |  | ) |

境界ボリューム選択状態参照関数

現在選択されている境界ボリュームの種類を取得します。

戻り値
  境界ボリューム種類

参照
  setBMode(), fk_Model::isInter()

## ◆ setSphere()

void FK::fk_Boundary::setSphere | ( | double | r | ) |

境界球半径設定関数

境界球半径を設定します。 現在モデルに設定されている形状から、 自動的に境界球半径を設定したい場合は fk_Model::adjustSphere() を用いて下さい。

引数

  [in] | r | 境界球半径

参照
  setSpherePos(), getSphere(), setBMode(), fk_Model::adjustSphere()

## ◆ setSpherePos()

void FK::fk_Boundary::setSpherePos | ( | fk_Vector | pos | ) |

境界球位置設定関数

境界球の中心座標をローカル座標系で設定します。 現在モデルに設定されている形状から、 自動的に境界球中心を設定したい場合は fk_Model::adjustSphere() を用いて下さい。

引数

  [in] | pos | 境界球中心座標

参照
  setSphere(), getSpherePos(), setBMode(), fk_Model::adjustSphere()

## ◆ getSphere()

double FK::fk_Boundary::getSphere | ( | void |  | ) |

境界球半径参照関数

現在設定されている境界球半径を取得します。

戻り値
  境界球半径

参照
  setSphere(), fk_Model::adjustSphere()

## ◆ getSpherePos()

fk_Vector FK::fk_Boundary::getSpherePos | ( | void |  | ) |

境界球位置参照関数

現在設定されている境界球中心座標を取得します。

戻り値
  境界球中心座標

参照
  setSpherePos(), fk_Model::adjustSphere()

## ◆ setAABBSize() [1/2]

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方向のサイズ

参照
  setAABBSize(fk_Vector), getAABBSize(), setBMode(), fk_Model::adjustAABB()

## ◆ setAABBSize() [2/2]

void FK::fk_Boundary::setAABBSize | ( | fk_Vector | size | ) |

軸平行境界ボックス (AABB) サイズ設定関数2

軸平行境界ボックス (AABB) のサイズを設定します。 サイズの各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。

引数

  [in] | size | AABBのサイズ

参照
  setAABBSize(double, double, double), getAABBSize(), setBMode(), fk_Model::adjustAABB()

## ◆ setAABBMaxMin()

void FK::fk_Boundary::setAABBMaxMin | ( | fk_Vector | max,
|  | fk_Vector | min )

軸平行境界ボックス (AABB) 最大最小設定関数

軸平行境界ボックス (AABB) の各成分の最大値と最小値を設定します。 各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。

引数

  [in] | max | AABBの最大値側のベクトル
  [in] | min | AABBの最小値側のベクトル

参照
  setAABBMax(), setAABBMin(), getAABBMax(), getAABBMin(), setBMode(), fk_Model::adjustAABB()

## ◆ setAABBMax()

void FK::fk_Boundary::setAABBMax | ( | fk_Vector | v | ) |

軸平行境界ボックス (AABB) 最大値側設定関数

軸平行境界ボックス (AABB) の最大値側を設定します。 各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。

引数

  [in] | v | AABBの最大値側のベクトル

参照
  setAABBMaxMin(fk_Vector, fk_Vector), setAABBMin(), getAABBMax(), getAABBMin(), setBMode(), fk_Model::adjustAABB()

## ◆ setAABBMin()

void FK::fk_Boundary::setAABBMin | ( | fk_Vector | v | ) |

軸平行境界ボックス (AABB) 最小値側設定関数

軸平行境界ボックス (AABB) の最小値側を設定します。 サイズの各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。

引数

  [in] | v | AABBの最大値側のベクトル

参照
  setAABBMaxMin(fk_Vector, fk_Vector), setAABBMax(), getAABBMax(), getAABBMin(), setBMode(), fk_Model::adjustAABB()

## ◆ getAABBSize()

fk_Vector FK::fk_Boundary::getAABBSize | ( | void |  | ) |

軸平行境界ボックス (AABB) サイズ取得関数

現在設定されている軸平行境界ボックス (AABB) のサイズを取得します。

戻り値
  AABBの大きさ

参照
  setAABBSize(double, double, double), setAABBSize(fk_Vector), fk_Model::adjustAABB()

## ◆ getAABBMax()

fk_Vector FK::fk_Boundary::getAABBMax | ( | void |  | ) |

軸平行境界ボックス (AABB) 最大値側取得関数

現在設定されている軸平行境界ボックス (AABB) の最大値側を取得します。

戻り値
  AABBの最大値側

参照
  setAABBMax(), getAABBMin(), fk_Model::adjustAABB()

## ◆ getAABBMin()

fk_Vector FK::fk_Boundary::getAABBMin | ( | void |  | ) |

軸平行境界ボックス (AABB) 最小値側取得関数

現在設定されている軸平行境界ボックス (AABB) の最小値側を取得します。

戻り値
  AABBの最小値側

参照
  setAABBMin(), getAABBMax(), fk_Model::adjustAABB()

## ◆ getAABBMaxMin()

std::tuple< fk_Vector, fk_Vector > FK::fk_Boundary::getAABBMaxMin | ( | void |  | ) |

軸平行境界ボックス (AABB) 最大最小取得関数

軸平行境界ボックス (AABB) の各成分の最大値と最小値を取得します。 各成分はグローバル座標系に対応します。 自動的に AABB のサイズを設定したい場合は fk_Model::adjustAABB() を用いて下さい。

戻り値
  第1要素に最大値側ベクトル、第2要素に最小値側ベクトルが返ります。

参照
  setAABBMax(), setAABBMin(), getAABBMax(), getAABBMin(), setBMode(), fk_Model::adjustAABB()

## ◆ setOBBSize() [1/2]

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方向のサイズ

参照
  setOBBSize(fk_Vector), getOBBSize(), setBMode(), fk_Model::adjustOBB()

## ◆ setOBBSize() [2/2]

void FK::fk_Boundary::setOBBSize | ( | fk_Vector | size | ) |

有向境界ボックス (OBB) サイズ設定関数2

有向境界ボックス (OBB) のサイズを設定します。 サイズの各成分はモデルのローカル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。

引数

  [in] | size | OBBのサイズ

参照
  setOBBSize(double, double, double), getOBBSize(), setBMode(), fk_Model::adjustOBB()

## ◆ setOBBMaxMin()

void FK::fk_Boundary::setOBBMaxMin | ( | fk_Vector | max,
|  | fk_Vector | min )

有向境界ボックス (OBB) 最大最小設定関数

有向境界ボックス (OBB) の各成分の最大値と最小値を設定します。 サイズの各成分はモデルのローカル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。

引数

  [in] | max | OBBの最大値側のベクトル
  [in] | min | OBBの最小値側のベクトル

参照
  setOBBSize(double, double, double, double, double, double), setOBBMax(), setOBBMin(), getOBBMax(), getOBBMin(), setBMode(), fk_Model::adjustOBB()

## ◆ setOBBMax()

void FK::fk_Boundary::setOBBMax | ( | fk_Vector | v | ) |

有向境界ボックス (OBB) 最大値側設定関数

有向境界ボックス (OBB) の最大値側を設定します。 サイズの各成分はモデルのローカル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。

引数

  [in] | v | OBBの最大値側のベクトル

参照
  setOBBMaxMin(fk_Vector, fk_Vector), setOBBMin(), getOBBMax(), getOBBMin(), setBMode(), fk_Model::adjustOBB()

## ◆ setOBBMin()

void FK::fk_Boundary::setOBBMin | ( | fk_Vector | v | ) |

有向境界ボックス (OBB) 最小値側設定関数

有向境界ボックス (OBB) の最小値側を設定します。 サイズの各成分はモデルのローカル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。

引数

  [in] | v | OBBの最大値側のベクトル

参照
  setOBBMaxMin(fk_Vector, fk_Vector), setOBBMax(), getOBBMax(), getOBBMin(), setBMode(), fk_Model::adjustOBB()

## ◆ getOBBSize()

fk_Vector FK::fk_Boundary::getOBBSize | ( | void |  | ) |

有向境界ボックス (OBB) サイズ取得関数

現在設定されている有向境界ボックス (OBB) のサイズを取得します。

戻り値
  IBBの大きさ

参照
  setOBBSize(double, double, double), setOBBSize(fk_Vector), fk_Model::adjustOBB()

## ◆ getOBBMax()

fk_Vector FK::fk_Boundary::getOBBMax | ( | void |  | ) |

有向境界ボックス (OBB) 最大値側取得関数

現在設定されている有向境界ボックス (OBB) の最大値側を取得します。

戻り値
  OBBの最大値側

参照
  setOBBMax(), getOBBMin(), fk_Model::adjustOBB()

## ◆ getOBBMin()

fk_Vector FK::fk_Boundary::getOBBMin | ( | void |  | ) |

有向境界ボックス (OBB) 最小値側取得関数

現在設定されている有向境界ボックス (OBB) の最小値側を取得します。

戻り値
  OBBの最小値側

参照
  setOBBMin(), getOBBMax(), fk_Model::adjustOBB()

## ◆ getOBBMaxMin()

std::tuple< fk_Vector, fk_Vector > FK::fk_Boundary::getOBBMaxMin | ( | void |  | ) |

有向境界ボックス (OBB) 最大最小取得関数

有向境界ボックス (OBB) の各成分の最大値と最小値を取得します。 各成分はグローバル座標系に対応します。 自動的に OBB のサイズを設定したい場合は fk_Model::adjustOBB() を用いて下さい。

戻り値
  第1要素に最大値側ベクトル、第2要素に最小値側ベクトルが返ります。

参照
  setOBBMax(), setOBBMin(), getOBBMax(), getOBBMin(), setBMode(), fk_Model::adjustOBB()

## ◆ setCapsule()

void FK::fk_Boundary::setCapsule | ( | fk_Vector | sPos,
|  | fk_Vector | ePos,
|  | double | r )

カプセル型設定関数

カプセル型は、数学的には線分(中心軸)からある一定距離以内にある領域となります。 この関数は、中心軸の両端点と距離を設定することでカプセル型を規定するものです。 中心軸端点の位置ベクトルは、モデルのローカル座標系に対応します。 自動的にカプセル型のサイズを設定したい場合は fk_Model::adjustCapsule() を用いて下さい。

引数

  [in] | sPos | 中心軸端点(始点側)の位置ベクトル
  [in] | ePos | 中心軸端点(終点側)の位置ベクトル
  [in] | r | 中心軸からの領域規定距離

参照
  getCapsuleRadius(), getCapsuleLength(), getCapsuleStartPos(), getCapsuleEndPos(), setBMode(), fk_Model::adjustCapsule()

## ◆ setCapsuleStartPos()

void FK::fk_Boundary::setCapsuleStartPos | ( | fk_Vector | argP | ) |

カプセル型中心軸始点設定関数

現在設定されているカプセル型の中心軸の始点位置ベクトルを設定します。

引数

  [in] | argP | カプセル型の中心軸の始点位置ベクトル

参照
  setCapsule(), getCapsuleStartPos(), fk_Model::adjustCapsule()

## ◆ setCapsuleEndPos()

void FK::fk_Boundary::setCapsuleEndPos | ( | fk_Vector | argP | ) |

カプセル型中心軸終点設定関数

現在設定されているカプセル型の中心軸の終点位置ベクトルを設定します。

引数

  [in] | argP | カプセル型の中心軸の終点位置ベクトル

参照
  setCapsule(), getCapsuleEndPos(), fk_Model::adjustCapsule()

## ◆ setCapsuleRadius()

void FK::fk_Boundary::setCapsuleRadius | ( | double | r | ) |

カプセル型領域規定距離設定関数

現在設定されているカプセル型の領域規定距離を設定します。

引数

  [in] | r | カプセル型の領域規定距離

参照
  setCapsule(), getCapsuleRadius(), setCapsule()

## ◆ getCapsuleRadius()

double FK::fk_Boundary::getCapsuleRadius | ( | void |  | ) |

カプセル型領域規定距離取得関数

現在設定されているカプセル型の領域規定距離を取得します。

戻り値
  カプセル型の領域規定距離

参照
  setCapsule(), fk_Model::adjustCapsule()

## ◆ getCapsuleLength()

double FK::fk_Boundary::getCapsuleLength | ( | void |  | ) |

カプセル型中心軸長取得関数

現在設定されているカプセル型の中心軸の長さを取得します。

戻り値
  カプセル型の中心軸の長さ

参照
  setCapsule(), fk_Model::adjustCapsule()

## ◆ getCapsulePos()

std::tuple< fk_Vector, fk_Vector > FK::fk_Boundary::getCapsulePos | ( | void |  | ) |

カプセル型中心軸両端点取得関数

現在設定されているカプセル型の中心軸の両端点位置ベクトルを取得します。

戻り値
  カプセル型の中心軸の両端点位置ベクトル

参照
  setCapsule(), fk_Model::adjustCapsule()

## ◆ getCapsuleStartPos()

fk_Vector FK::fk_Boundary::getCapsuleStartPos | ( | void |  | ) |

カプセル型中心軸始点取得関数

現在設定されているカプセル型の中心軸の始点位置ベクトルを取得します。

戻り値
  カプセル型の中心軸の始点位置ベクトル

参照
  setCapsule(), fk_Model::adjustCapsule()

## ◆ getCapsuleEndPos()

fk_Vector FK::fk_Boundary::getCapsuleEndPos | ( | void |  | ) |

カプセル型中心軸終点取得関数

現在設定されているカプセル型の中心軸の終点位置ベクトルを取得します。

戻り値
  カプセル型の中心軸の両端点位置ベクトル

参照
  setCapsule(), fk_Model::adjustCapsule()

## ◆ setBDrawToggle()

void FK::fk_Boundary::setBDrawToggle | ( | bool | mode | ) |

境界ボリューム描画有無設定関数

境界ボリュームに対し、描画の有無を制御します。

引数

  [in] | mode | true である場合、描画が有効となります。false である場合は無効となります。

参照
  getBDrawToggle(), setBLineColor(), setBIntLineColor(), setBLineWidth()

## ◆ getBDrawToggle()

bool FK::fk_Boundary::getBDrawToggle | ( | void |  | ) |

境界ボリューム描画有無取得関数

現在の境界ボリューム描画状態を取得します。

戻り値
  現在の境界ボリューム描画が有効の場合 true を、 無効の場合 false を返します。

参照
  setBDrawToggle()

## ◆ setBLineColor()

void FK::fk_Boundary::setBLineColor | ( | fk_Color | col | ) |

境界ボリューム非干渉描画色設定関数

境界ボリューム描画の際に、非干渉状態である場合の線色を設定します。

引数

  [in] | col | 線色

参照
  getBLineColor(), setBIntLineColor(), setBDrawToggle(), fk_Model::isInter(), fk_Model::setInterMode()

## ◆ getBLineColor()

fk_Color * FK::fk_Boundary::getBLineColor | ( | void |  | ) |

境界ボリューム非干渉描画色取得関数

境界ボリューム描画の際に、非干渉状態である場合の線色を取得します。

戻り値
  線色

参照
  setBLineColor(), getBIntLineColor()

## ◆ setBIntLineColor()

void FK::fk_Boundary::setBIntLineColor | ( | fk_Color | col | ) |

境界ボリューム干渉状態描画色設定関数

境界ボリューム描画の際に、干渉状態である場合の線色を設定します。

覚え書き
  この線色で描画される条件は、 fk_Model::setInterMode() による設定によって異なります。

引数

  [in] | col | 線色

参照
  getBIntLineColor(), setBLineColor(), setBDrawToggle(), fk_Model::isInter(), fk_Model::setInterMode()

## ◆ getBIntLineColor()

fk_Color * FK::fk_Boundary::getBIntLineColor | ( | void |  | ) |

境界ボリューム干渉状態描画色取得関数

境界ボリューム描画の際に、干渉状態である場合の線色を取得します。

戻り値
  線色

参照
  setBIntLineColor(), getBLineColor()

## ◆ setBLineWidth()

void FK::fk_Boundary::setBLineWidth | ( | double | width | ) |

境界ボリューム描画線幅設定関数

境界ボリューム描画の際の線幅を設定します。

引数

  [in] | width | 線幅

参照
  setBDrawToggle(), setBLineColor(), setBIntLineColor()

## ◆ getBLineWidth()

double FK::fk_Boundary::getBLineWidth | ( | void |  | ) |

境界ボリューム描画線幅取得関数

境界ボリューム描画の際の線幅を取得します。

戻り値
  線幅

参照
  setBLineWidth()