FineKernelToolKit 3.1.0

- 総合概要
- 名前空間
- クラス
- ファイル

- クラス一覧
- クラス階層
- クラスメンバ

プロパティ | 全メンバ一覧
FK_CLI::fk_Boundary クラス

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

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

## 公開メンバ関数
カプセル型制御メソッド
void | SetCapsule (fk_Vector^ startPos, fk_Vector^ endPos, double radius)
| カプセル型設定メソッド [詳解]
double | GetCapsuleRadius (void)
| カプセル型領域規定距離取得メソッド [詳解]
double | GetCapsuleLength (void)
| カプセル型中心軸長取得メソッド [詳解]
fk_Vector^ | GetCapsuleStartPos (void)
| カプセル型中心軸始点取得メソッド [詳解]
fk_Vector^ | GetCapsuleEndPos (void)
| カプセル型中心軸終点取得メソッド [詳解]
基底クラス FK_CLI::fk_MatrixAdmin に属する継承公開メンバ関数
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_BoundaryMode | BMode`[get, set]`
| 境界ボリューム選択プロパティ [詳解]
double | SphereRadius`[get, set]`
| 境界球半径プロパティ [詳解]
fk_Vector^ | AABB`[get, set]`
| 軸平行境界ボックス (AABB) サイズプロパティ [詳解]
fk_Vector^ | OBB`[get, set]`
| 有向境界ボックス (OBB) サイズプロパティ [詳解]
bool | BDraw`[get, set]`
| 境界ボリューム描画有無プロパティ [詳解]
fk_Color^ | BLineColor`[get, set]`
| 境界ボリューム非干渉描画色プロパティ [詳解]
fk_Color^ | BIntLineColor`[get, set]`
| 境界ボリューム干渉状態描画色プロパティ [詳解]
double | BLineWidth`[get, set]`
| 境界ボリューム描画線幅プロパティ [詳解]
基底クラス FK_CLI::fk_MatrixAdmin に属する継承プロパティ
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 の概要を参照して下さい。

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

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

参照
  fk_Model

## 関数詳解

void FK_CLI::fk_Boundary::SetCapsule | ( | fk_Vector^ | startPos,
|  | fk_Vector^ | endPos,
|  | double | radius
| ) |  |

カプセル型設定メソッド

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

引数

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

参照
  GetCapsuleRadius(), GetCapsuleLength(), GetCapsuleStartPos(), GetCapsuleEndPos(), BMode, fk_Model::AdjustCapsule()

double FK_CLI::fk_Boundary::GetCapsuleRadius | ( | void |  | ) |

カプセル型領域規定距離取得メソッド

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

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

参照
  SetCapsule(), fk_Model::AdjustCapsule()

double FK_CLI::fk_Boundary::GetCapsuleLength | ( | void |  | ) |

カプセル型中心軸長取得メソッド

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

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

参照
  SetCapsule(), fk_Model::AdjustCapsule()

fk_Vector ^ FK_CLI::fk_Boundary::GetCapsuleStartPos | ( | void |  | ) |

カプセル型中心軸始点取得メソッド

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

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

参照
  SetCapsule(), fk_Model::AdjustCapsule()

fk_Vector ^ FK_CLI::fk_Boundary::GetCapsuleEndPos | ( | void |  | ) |

カプセル型中心軸終点取得メソッド

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

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

参照
  SetCapsule(), fk_Model::AdjustCapsule()

## プロパティ詳解

fk_BoundaryMode FK_CLI::fk_Boundary::BMode
| get set

境界ボリューム選択プロパティ

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

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

参照
  fk_Model::IsInter()

double FK_CLI::fk_Boundary::SphereRadius
| get set

境界球半径プロパティ

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

参照
  BMode, fk_Model::AdjustSphere()

fk_Vector^ FK_CLI::fk_Boundary::AABB
| get set

軸平行境界ボックス (AABB) サイズプロパティ

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

引数

  [in] | size | AABBのサイズ

参照
  BMode, fk_Model::AdjustAABB(), fk_Vector

fk_Vector^ FK_CLI::fk_Boundary::OBB
| get set

有向境界ボックス (OBB) サイズプロパティ

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

参照
  BMode, fk_Model::AdjustOBB(), fk_Vector

bool FK_CLI::fk_Boundary::BDraw
| get set

境界ボリューム描画有無プロパティ

境界ボリュームに対し、描画の有無を設定・参照します。

参照
  BLineColor, BIntLineColor, BLineWidth

fk_Color^ FK_CLI::fk_Boundary::BLineColor
| get set

境界ボリューム非干渉描画色プロパティ

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

参照
  BIntLineColor, BDraw, fk_Model::IsInter(), fk_Model::InterMode, fk_Color

fk_Color^ FK_CLI::fk_Boundary::BIntLineColor
| get set

境界ボリューム干渉状態描画色プロパティ

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

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

参照
  BLineColor, BDraw, fk_Model::IsInter(), fk_Model::InterMode, fk_Color

double FK_CLI::fk_Boundary::BLineWidth
| get set

境界ボリューム描画線幅プロパティ

境界ボリューム描画の際での、線幅の設定・参照を行います。

参照
  BDraw, BLineColor, BIntLineColor