FineKernelToolKit 4.2.13
|
干渉判定光線クラス [詳解]
#include <CLI/FK_CLI/include/Ray_CLI.h>
公開メンバ関数 | |
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_CLI::fk_Ray::fk_Ray | ( | ) |
コンストラクタ1
初期状態として、始点を原点、終点を (0, 0, -1) とする光線が生成されます。
コンストラクタ2
引数として、始点と終点が入力できます。 始点と終点が同一だった場合、 始点を原点、終点を (0, 0, -1) とする光線が生成されます。
[in] | S | 始点ベクトル |
[in] | E | 終点ベクトル |
FK_CLI::fk_Ray::~fk_Ray | ( | ) |
デストラクタ
FK_CLI::fk_Ray::!fk_Ray | ( | ) |
ファイナライザ
|
override |
文字列出力メソッド
現在の光線情報を文字列として出力します。
端点設定メソッド
両端点を設定します。 始点と終点が同一だった場合、設定を変更せずに false を返します。
[in] | S | 始点ベクトル |
[in] | E | 終点ベクトル |
端点取得メソッド
始点と終点を取得します。
bool FK_CLI::fk_Ray::IsInter | ( | fk_Model^ | model | ) |
干渉状態取得メソッド
光線とモデルが干渉しているかどうかを判定します。
[in] | model | 判定対象モデル |
Tuple< bool, double > ^ FK_CLI::fk_Ray::GetInter | ( | fk_Model^ | model | ) |
干渉位置取得メソッド
光線とモデルの干渉状態と、干渉位置を表すパラメータを取得します。
[in] | model | 判定対象モデル |
\[ \mathbf{P} = (1 - t)\mathbf{S} + t\mathbf{E} \]
fk_Vector ^ FK_CLI::fk_Ray::GetPos | ( | double | t | ) |
光線位置ベクトル取得メソッド
光線のパラメータから位置ベクトルを取得します。 以下の式は、光線の始点を S, 終点を E とした場合の干渉点位置 P をパラメータ表現したものです。
\[ \mathbf{P} = (1 - t)\mathbf{S} + t\mathbf{E} \]
getInter() によって得られたパラメータから、本関数を利用して位置ベクトルを取得することができます。
[in] | t | 光線パラメータ |
void FK_CLI::fk_Ray::SetParent | ( | fk_Model^ | model | ) |
親モデル設定メソッド
本光線のモデルに対し、親モデルを設定します。 設定後は、親モデルの移動や回転に追従します。
[in] | model | 親モデルインスタンス |
void FK_CLI::fk_Ray::EntryModel | ( | fk_Model^ | model | ) |
干渉判定対象モデル登録メソッド
GetInterList() で取得するモデルを登録します。 複数のモデルに対し同時に干渉判定を行う場合は、 GetInterList() を用いるのが便利です。
[in] | model | 干渉判定対象モデル |
void FK_CLI::fk_Ray::RemoveModel | ( | fk_Model^ | model | ) |
干渉判定対称モデル解除メソッド
entryModel() によって登録したモデルを、対象から解除します。
[in] | model | 干渉判定解除モデル |
List< Tuple< fk_Model^, double >^> ^ FK_CLI::fk_Ray::GetInterList | ( | bool | sort | ) |
一括干渉判定メソッド
EntryModel() によって登録したモデル群に対し、一括して干渉判定を行います。
[in] | sort | true の場合、list の順番が光線に当たった順(パラメータの昇順)になります。 false の場合は EntryModel() で登録した順にならびます。 |
|
getset |
始点プロパティ
光線始点の設定・参照を行います。
|
getset |
終点プロパティ
光線終点の設定・参照を行います。
|
getset |
直線群種類プロパティ
光線種類を設定・参照します。以下の中から選択できます。
なお、ここでの設定は干渉判定と共に、描画にも反映されます。
|
get |
モデルインスタンスプロパティ
|
getset |
光線色プロパティ
光線色を設定・参照します。
|
getset |
直線・半直線延長率プロパティ
直線の両端や半直線の終点側の無限直線の描画時の延長率を設定・参照します。 無限直線の描画は、線分に対しこの延長率で示した倍率まで延長して描画を行います。 デフォルトでは 100 になっています。