FineKernelToolKit: FK_CLI::fk_Ray クラス

FineKernelToolKit 4.3.0

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

干渉判定光線クラス [詳解]

`#include <CLI/FK_CLI/include/Ray_CLI.h>`

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

## 公開メンバ関数

| fk_Ray ()
| コンストラクタ1
| fk_Ray (fk_Vector^ S, fk_Vector^ E)
| コンストラクタ2
| ~fk_Ray ()
| デストラクタ
| !fk_Ray ()
| ファイナライザ
String ^ | ToString () override
| 文字列出力メソッド
bool | Set (fk_Vector^ S, fk_Vector^ E)
| 端点設定メソッド
Tuple< fk_Vector^, fk_Vector^> ^ | Get (void)
| 端点取得メソッド
bool | IsInter (fk_Model^ model)
| 干渉状態取得メソッド
Tuple< bool, double > ^ | GetInter (fk_Model^ model)
| 干渉位置取得メソッド
fk_Vector ^ | GetPos (double t)
| 光線位置ベクトル取得メソッド
void | SetParent (fk_Model^ model)
| 親モデル設定メソッド
void | EntryModel (fk_Model^ model)
| 干渉判定対象モデル登録メソッド
void | RemoveModel (fk_Model^ model)
| 干渉判定対称モデル解除メソッド
List< Tuple< fk_Model^, double >^> ^ | GetInterList (bool sort)
| 一括干渉判定メソッド

## プロパティ

fk_Vector^ | Start`[get, set]`
| 始点プロパティ
fk_Vector^ | End`[get, set]`
| 終点プロパティ
fk_LineType | Type`[get, set]`
| 直線群種類プロパティ
fk_Model^ | Model`[get]`
| モデルインスタンスプロパティ
fk_Color^ | Color`[get, set]`
| 光線色プロパティ
double | Scale`[get, set]`
| 直線・半直線延長率プロパティ

## 詳解

干渉判定光線クラス

このクラスは、空間中のモデルと干渉判定を行う光線を扱う機能を提供します。 モデルとの干渉計算に用いる形状は厳密なものではなく、 fk_Boundary クラスによる境界ボリュームとなります。 fk_Model 側で設定されている境界ボリュームの種類と大きさに対し、干渉計算を行います。 本クラスのインタンスは独立した光線として各モデルと干渉判定を行うことができます。 あるいは、 entryModel() を用いて判定対象となるモデルを登録しておき、 getInterList() によって一括して干渉モデルを得ることも可能です。

光線は直線、半直線、有向線分から選択することができます。

参照
  fk_Model, fk_Boundary, fk_Math, fk_Plane

## 構築子と解体子

## ◆ fk_Ray() [1/2]

FK_CLI::fk_Ray::fk_Ray | ( |  | ) |

コンストラクタ1

初期状態として、始点を原点、終点を (0, 0, -1) とする光線が生成されます。

## ◆ fk_Ray() [2/2]

FK_CLI::fk_Ray::fk_Ray | ( | fk_Vector^ | S,
|  | fk_Vector^ | E )

コンストラクタ2

引数として、始点と終点が入力できます。 始点と終点が同一だった場合、 始点を原点、終点を (0, 0, -1) とする光線が生成されます。

引数

  [in] | S | 始点ベクトル
  [in] | E | 終点ベクトル

## ◆ ~fk_Ray()

FK_CLI::fk_Ray::~fk_Ray | ( |  | ) |

デストラクタ

## ◆ !fk_Ray()

FK_CLI::fk_Ray::!fk_Ray | ( |  | ) |

ファイナライザ

## 関数詳解

## ◆ ToString()

String ^ FK_CLI::fk_Ray::ToString | ( |  | ) |

override

文字列出力メソッド

現在の光線情報を文字列として出力します。

戻り値
  光線情報の文字列

## ◆ Set()

bool FK_CLI::fk_Ray::Set | ( | fk_Vector^ | S,
|  | fk_Vector^ | E )

端点設定メソッド

両端点を設定します。 始点と終点が同一だった場合、設定を変更せずに false を返します。

引数

  [in] | S | 始点ベクトル
  [in] | E | 終点ベクトル

戻り値
  設定に成功すれば true を、失敗すれば false を返します。

## ◆ Get()

Tuple< fk_Vector^, fk_Vector^> ^ FK_CLI::fk_Ray::Get | ( | void |  | ) |

端点取得メソッド

始点と終点を取得します。

戻り値
  第1要素を始点、第2要素を終点とするタプル型を返します。

## ◆ IsInter()

bool FK_CLI::fk_Ray::IsInter | ( | fk_Model^ | model | ) |

干渉状態取得メソッド

光線とモデルが干渉しているかどうかを判定します。

引数

  [in] | model | 判定対象モデル

戻り値
  干渉していれば true を、していなければ false を返します。

参照
  GetInter(), GetPos()

## ◆ GetInter()

Tuple< bool, double > ^ FK_CLI::fk_Ray::GetInter | ( | fk_Model^ | model | ) |

干渉位置取得メソッド

光線とモデルの干渉状態と、干渉位置を表すパラメータを取得します。

引数

  [in] | model | 判定対象モデル

戻り値
  第1要素は、干渉していれば true を、していなければ false を返します。 第2要素は、干渉位置パラメータ t を返します。 以下の式は、光線の始点を S, 終点を E とした場合の干渉点位置 P をパラメータ表現したものです。

  \[ \mathbf{P} = (1 - t)\mathbf{S} + t\mathbf{E} \]

参照
  isInter(), getPos()

## ◆ GetPos()

fk_Vector ^ FK_CLI::fk_Ray::GetPos | ( | double | t | ) |

光線位置ベクトル取得メソッド

光線のパラメータから位置ベクトルを取得します。 以下の式は、光線の始点を S, 終点を E とした場合の干渉点位置 P をパラメータ表現したものです。

\[ \mathbf{P} = (1 - t)\mathbf{S} + t\mathbf{E} \]

getInter() によって得られたパラメータから、本関数を利用して位置ベクトルを取得することができます。

引数

  [in] | t | 光線パラメータ

戻り値
  パラメータ t が示す位置ベクトル

参照
  getInter()

## ◆ SetParent()

void FK_CLI::fk_Ray::SetParent | ( | fk_Model^ | model | ) |

親モデル設定メソッド

本光線のモデルに対し、親モデルを設定します。 設定後は、親モデルの移動や回転に追従します。

引数

  [in] | model | 親モデルインスタンス

## ◆ EntryModel()

void FK_CLI::fk_Ray::EntryModel | ( | fk_Model^ | model | ) |

干渉判定対象モデル登録メソッド

GetInterList() で取得するモデルを登録します。 複数のモデルに対し同時に干渉判定を行う場合は、 GetInterList() を用いるのが便利です。

引数

  [in] | model | 干渉判定対象モデル

参照
  IsInter(), GetInter(), RemoveModel(), GetInterList()

## ◆ RemoveModel()

void FK_CLI::fk_Ray::RemoveModel | ( | fk_Model^ | model | ) |

干渉判定対称モデル解除メソッド

entryModel() によって登録したモデルを、対象から解除します。

引数

  [in] | model | 干渉判定解除モデル

参照
  EntryModel(), GetInterList()

## ◆ GetInterList()

List< Tuple< fk_Model^, double >^> ^ FK_CLI::fk_Ray::GetInterList | ( | bool | sort | ) |

一括干渉判定メソッド

EntryModel() によって登録したモデル群に対し、一括して干渉判定を行います。

引数

  [in] | sort | true の場合、list の順番が光線に当たった順(パラメータの昇順)になります。 false の場合は EntryModel() で登録した順にならびます。

戻り値
  干渉していたモデルの情報を返します。 要素中の第1要素は、干渉していたモデルのインスタンスが入ります。 第2要素は、干渉箇所のパラメータが入ります。 パラメータの詳細は GetInter() の説明を参照して下さい。

参照
  entryModel(), removeModel(), getInter(), getPos()

## プロパティ詳解

## ◆ Start

fk_Vector^ FK_CLI::fk_Ray::Start

getset

始点プロパティ

光線始点の設定・参照を行います。

## ◆ End

fk_Vector^ FK_CLI::fk_Ray::End

getset

終点プロパティ

光線終点の設定・参照を行います。

## ◆ Type

fk_LineType FK_CLI::fk_Ray::Type

getset

直線群種類プロパティ

光線種類を設定・参照します。以下の中から選択できます。

- 直線: fk_LineType.OPEN
- 半直線: fk_LineType.HALF
- 有向線分: fk_LineType.CLOSE

なお、ここでの設定は干渉判定と共に、描画にも反映されます。

## ◆ Model

fk_Model^ FK_CLI::fk_Ray::Model

get

モデルインスタンスプロパティ

## ◆ Color

fk_Color^ FK_CLI::fk_Ray::Color

getset

光線色プロパティ

光線色を設定・参照します。

## ◆ Scale

double FK_CLI::fk_Ray::Scale

getset

直線・半直線延長率プロパティ

直線の両端や半直線の終点側の無限直線の描画時の延長率を設定・参照します。 無限直線の描画は、線分に対しこの延長率で示した倍率まで延長して描画を行います。 デフォルトでは 100 になっています。