FineKernelToolKit 4.2.13
|
グラフ構造を制御するクラス [詳解]
#include <CLI/FK_CLI/include/Graph_CLI.h>
公開メンバ関数 | |
fk_Graph (unsigned int num) | |
コンストラクタ | |
~fk_Graph () | |
デストラクタ | |
!fk_Graph () | |
ファイナライザ | |
fk_GraphNode ^ | GetNode (unsigned int ID) |
ノード取得メソッド | |
List< fk_GraphNode ^> ^ | GetAllNode (void) |
全ノード取得メソッド | |
fk_GraphEdge ^ | GetEdge (unsigned int ID) |
辺情報取得メソッド | |
List< fk_GraphEdge ^> ^ | GetAllEdge (void) |
全辺取得メソッド | |
bool | IsConnect (fk_GraphNode^ v1, fk_GraphNode^ v2) |
辺存在確認メソッド | |
接続変更メソッド | |
fk_GraphEdge ^ | MakeEdge (bool mode, fk_GraphNode^ v1, fk_GraphNode^ v2) |
辺生成メソッド | |
bool | DeleteEdge (fk_GraphEdge^ e) |
辺削除メソッド | |
経路コスト制御メソッド | |
bool | MakeCostTable (unsigned int tableID, fk_CostType type) |
コストテーブル生成メソッド | |
bool | SetCostDirection (unsigned int tableID, fk_CostDirection direction) |
コスト算出方向指定関数 | |
bool | SetEdgeCostID (unsigned int tableID, unsigned int edgeCostID) |
辺コストID対応指定メソッド | |
unsigned int | GetNodeCostID (unsigned int tableID) |
ノード内コストID参照メソッド | |
void | SetStart (unsigned int tableID, fk_GraphNode^ node) |
出発ノード設定メソッド | |
void | AddGoal (unsigned int tableID, fk_GraphNode^ node) |
目標ノード追加メソッド | |
void | RemoveGoal (unsigned int tableID, fk_GraphNode^ node) |
目標ノード除外メソッド | |
void | ClearGoal (unsigned int tableID) |
目標ノード初期化メソッド | |
bool | InitCostTable (unsigned int tableID) |
コストテーブル初期化メソッド | |
fk_CostStatus | UpdateCostTable (unsigned int tableID) |
コストテーブル更新メソッド | |
fk_CostStatus | GetCostStatus (unsigned int tableID) |
コストテーブル状態取得メソッド | |
List< fk_GraphNode^> ^ | GetOnePath (unsigned int tableID) |
最短経路取得メソッド | |
![]() | |
void | SetShaderAttribute (String^ name, int dim, IEnumerable< int >^ array) |
シェーダー内 attribute 変数設定メソッド1 | |
void | SetShaderAttribute (String^ name, int dim, IEnumerable< float >^ array) |
シェーダー内 attribute 変数設定メソッド2 | |
void | SetShaderAttribute (String^ name, int dim, IEnumerable< double >^ array) |
シェーダー内 attribute 変数設定メソッド3 | |
void | SetShaderAttribute (String^ name, int dim, IEnumerable< fk_Vector^>^ array) |
シェーダー内 attribute 変数設定メソッド4 | |
void | SetShaderAttribute (String^ name, int dim, IEnumerable< fk_TexCoord^>^ array) |
シェーダー内 attribute 変数設定メソッド5 | |
void | SetShaderAttribute (String^ name, int dim, IEnumerable< fk_HVector^>^ array) |
シェーダー内 attribute 変数設定メソッド6 | |
![]() | |
bool | SetAttrII (int key, int value) |
キーが int 型、値が int 型である属性設定メソッド | |
bool | SetAttrID (int key, double value) |
キーが int 型、値が double 型である属性設定メソッド | |
bool | SetAttrIS (int key, String^ value) |
キーが int 型、値が String 型である属性設定メソッド | |
bool | SetAttrSI (String^ key, int value) |
キーが String 型、値が int 型である属性設定メソッド | |
bool | SetAttrSD (String^ key, double value) |
キーが String 型、値が double 型である属性設定メソッド | |
bool | SetAttrSS (String ^ key, String^ value) |
キーが String 型、値が String 型である属性設定メソッド | |
int | GetAttrII (int key) |
キーが int 型、値が int 型である属性参照メソッド | |
double | GetAttrID (int key) |
キーが int 型、値が double 型である属性参照メソッド | |
String ^ | GetAttrIS (int key) |
キーが int 型、値が String 型である属性参照メソッド | |
int | GetAttrSI (String^ key) |
キーが String 型、値が int 型である属性参照メソッド | |
double | GetAttrSD (String^ key) |
キーが String 型、値が double 型である属性参照メソッド | |
String ^ | GetAttrSS (String^ key) |
キーが String 型、値が String 型である属性参照メソッド | |
bool | ExistAttrII (int key) |
キーが int 型、値が int 型である属性存在参照メソッド | |
bool | ExistAttrID (int key) |
キーが int 型、値が double 型である属性存在参照メソッド | |
bool | ExistAttrIS (int key) |
キーが int 型、値が String 型である属性存在参照メソッド | |
bool | ExistAttrSI (String^ key) |
キーが String 型、値が int 型である属性存在参照メソッド | |
bool | ExistAttrSD (String^ key) |
キーが String 型、値が double 型である属性存在参照メソッド | |
bool | ExistAttrSS (String^ key) |
キーが String 型、値が String 型である属性存在参照メソッド | |
bool | DeleteAttrII (int key) |
キーが int 型、値が int 型である属性消去メソッド | |
bool | DeleteAttrID (int key) |
キーが int 型、値が double 型である属性消去メソッド | |
bool | DeleteAttrIS (int key) |
キーが int 型、値が String 型である属性消去メソッド | |
bool | DeleteAttrSI (String^ key) |
キーが String 型、値が int 型である属性消去メソッド | |
bool | DeleteAttrSD (String^ key) |
キーが String 型、値が double 型である属性消去メソッド | |
bool | DeleteAttrSS (String^ key) |
キーが String 型、値が String 型である属性消去メソッド | |
プロパティ | |
unsigned int | NodeSize [get] |
ノード数取得プロパティ | |
unsigned int | MaxEdgeID [get] |
辺ID最大値取得プロパティ | |
![]() | |
fk_RealShapeType^ | RealShapeType [get] |
形状データ構造プロパティ | |
グラフ構造を制御するクラス
このクラスは、グラフ構造を制御する機能を提供します。 グラフ構造には多くの応用用途がありますが、 本クラスではその中でも経路探索を念頭に置いた機能を多く提供しています。
グラフ構造は、「ノード」と「辺」の2種類の要素によって構成されます。 ノードは任意の位置を持つ頂点集合であり、 辺は任意の2点を接続する線分です。 辺は無向線分としても有向線分としても考えることができ、 経路としてとらえると無向線分は両通行経路、有向線分は一方通行経路となります。
ノードを表すクラスは fk_GraphNode, 辺を表すクラスは fk_GraphEdge であり、 これらのクラスの機能も合わせて利用します。
fk_Graph のノードと辺は、「コスト」を格納することができます。 グラフ内の全要素のコストをまとめて「コストテーブル」と呼びます。 コストテーブルは、経路探索アルゴリズムで重要なデータであり、 fk_Graph はコストを扱うために有用な機能を多く提供しています。
コストテーブルは、int 型と double 型のいずれかを選択でき、 かつ両方の型それぞれで複数のコストテーブルを格納することができます。 各コストテーブルは ID により管理します。
FK_CLI::fk_Graph::fk_Graph | ( | unsigned int | num | ) |
FK_CLI::fk_Graph::~fk_Graph | ( | ) |
デストラクタ
FK_CLI::fk_Graph::!fk_Graph | ( | ) |
ファイナライザ
fk_GraphNode ^ FK_CLI::fk_Graph::GetNode | ( | unsigned int | ID | ) |
ノード取得メソッド
ノードを表すインスタンスを ID より取得します。
[in] | ID | ノード ID |
List< fk_GraphNode ^> ^ FK_CLI::fk_Graph::GetAllNode | ( | void | ) |
全ノード取得メソッド
全てのノードインスタンスを取得します。
fk_GraphEdge ^ FK_CLI::fk_Graph::GetEdge | ( | unsigned int | ID | ) |
辺情報取得メソッド
辺を表すインスタンスを ID より取得します。
[in] | ID | 辺 ID |
List< fk_GraphEdge ^> ^ FK_CLI::fk_Graph::GetAllEdge | ( | void | ) |
全辺取得メソッド
全ての辺インスタンスを取得します。
bool FK_CLI::fk_Graph::IsConnect | ( | fk_GraphNode^ | v1, |
fk_GraphNode^ | v2 | ||
) |
辺存在確認メソッド
2つのノードの間に辺が存在するかどうかを判定します。 なお、ノード間の辺は複数存在する場合もあり、2本以上存在する場合も true を返します。
[in] | v1 | 辺の頂点となるノード。 |
[in] | v2 | 辺の頂点となるノード。 |
fk_GraphEdge ^ FK_CLI::fk_Graph::MakeEdge | ( | bool | mode, |
fk_GraphNode^ | v1, | ||
fk_GraphNode^ | v2 | ||
) |
辺生成メソッド
2点のノード間に辺を作成します。 なお、既に2点間に辺が存在する場合でも、エラーとならずに新たに辺を追加生成します。
[in] | mode | true の場合無向、false の場合有向となります。 辺が経路を表す場合は、有向辺は一方通行を表します。 |
[in] | v1 | 辺の始点となるノード。 |
[in] | v2 | 辺の終点となるノード。 |
bool FK_CLI::fk_Graph::DeleteEdge | ( | fk_GraphEdge^ | e | ) |
辺削除メソッド
辺を削除します。
[in] | e | 削除する辺のインスタンス |
bool FK_CLI::fk_Graph::MakeCostTable | ( | unsigned int | tableID, |
fk_CostType | type | ||
) |
コストテーブル生成メソッド
コストテーブルを作成します。 指定した ID で既に作成済であった場合は false を返し、初期化は行いません。
[in] | tableID | コストテーブル ID |
[in] | type | コスト値のタイプを設定します。
|
bool FK_CLI::fk_Graph::SetCostDirection | ( | unsigned int | tableID, |
fk_CostDirection | direction | ||
) |
コスト算出方向指定関数
コストの算出方向を指定します。
[in] | tableID | コストテーブルID |
[in] | direction | コストを出発ノード側から算出する場合は fk_CostDirection.FORWARD を指定します。 コストを目標ノード側から算出する場合は fk_CostDirection.BACK を指定します。 |
bool FK_CLI::fk_Graph::SetEdgeCostID | ( | unsigned int | tableID, |
unsigned int | edgeCostID | ||
) |
辺コストID対応指定メソッド
コストテーブルに対し、コスト値算出に利用する辺のコストIDを指定します。
[in] | tableID | コストテーブルID |
[in] | edgeCostID | 利用する辺のコスト値 ID を指定します。 MakeCostTable() の第2引数に fk_CostType.LENGTH を指定していた場合、 この値は無視されます。 |
unsigned int FK_CLI::fk_Graph::GetNodeCostID | ( | unsigned int | tableID | ) |
ノード内コストID参照メソッド
コストテーブルに対応するノード内コストIDを参照します。
[in] | tableID | コストテーブルID |
void FK_CLI::fk_Graph::SetStart | ( | unsigned int | tableID, |
fk_GraphNode^ | node | ||
) |
出発ノード設定メソッド
出発ノードを指定します。 既に別の出発ノードが設定されていた場合は、新たに設定したノードに更新されます。
[in] | tableID | コストテーブルID |
[in] | node | ノードインスタンス |
void FK_CLI::fk_Graph::AddGoal | ( | unsigned int | tableID, |
fk_GraphNode^ | node | ||
) |
目標ノード追加メソッド
目標ノードを追加します。 目標ノードは一つのコストテーブルに対し複数設定することができます。
[in] | tableID | コストテーブルID |
[in] | node | 目標ノードインスタンス |
void FK_CLI::fk_Graph::RemoveGoal | ( | unsigned int | tableID, |
fk_GraphNode^ | node | ||
) |
目標ノード除外メソッド
対象ノードを、目標ノードから除外します。
[in] | tableID | コストテーブルID |
[in] | node | 目標ノードインスタンス |
void FK_CLI::fk_Graph::ClearGoal | ( | unsigned int | tableID | ) |
目標ノード初期化メソッド
現時点で登録されている目標ノードを全て除外します。
[in] | tableID | コストテーブルID |
bool FK_CLI::fk_Graph::InitCostTable | ( | unsigned int | tableID | ) |
コストテーブル初期化メソッド
コストテーブルを初期化します。
[in] | tableID | コストテーブルID |
fk_CostStatus FK_CLI::fk_Graph::UpdateCostTable | ( | unsigned int | tableID | ) |
コストテーブル更新メソッド
各ノードに対し、コスト算出を一段階進めます。 全てのノードのコスト値を完全にするには、 fk_CostStatus.FINISH が返されるまで繰り返し本関数を呼び出す必要があります。
[in] | tableID | コストテーブルID |
fk_CostStatus FK_CLI::fk_Graph::GetCostStatus | ( | unsigned int | tableID | ) |
コストテーブル状態取得メソッド
現在のコストテーブルにおける更新情報を取得します。 UpdateCostTable() では実際にコストテーブルの更新処理を行いますが、 本関数は更新処理は行わず状態のみを取得します。
[in] | tableID | コストテーブルID |
List< fk_GraphNode^> ^ FK_CLI::fk_Graph::GetOnePath | ( | unsigned int | tableID | ) |
最短経路取得メソッド
コストテーブルに基づいた、出発ノードから目標ノードまでの最短経路を取得します。 本関数を用いる際には、事前にコストテーブルの更新が完了し、 GetCostStatus() による結果が fk_CostStatus.FINISH となる状況でなければなりません。
最短経路が複数存在するような場合、任意の1種類のみを取得します。 現状では全ての最短経路を取得する機能は提供していません。
目標ノードが複数ある場合、そのうち出発ノードからもっとも経路が短いものが抽出されます。
[in] | tableID | 経路探索に用いる コストテーブルの ID |
|
get |
ノード数取得プロパティ
グラフ内に存在するノード数を取得します。
|
get |
辺ID最大値取得プロパティ
現在存在する辺の ID の最大値を取得します。