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

グラフ構造を制御するクラス [詳解]

#include <CLI/FK_CLI/include/Graph_CLI.h>

+ FK_CLI::fk_Graph の継承関係図
+ FK_CLI::fk_Graph 連携図

公開メンバ関数

 fk_Graph (unsigned int num)
 コンストラクタ
 
 ~fk_Graph ()
 デストラクタ
 
 !fk_Graph ()
 ファイナライザ
 
fk_GraphNodeGetNode (unsigned int ID)
 ノード取得メソッド
 
List< fk_GraphNode ^> ^ GetAllNode (void)
 全ノード取得メソッド
 
fk_GraphEdgeGetEdge (unsigned int ID)
 辺情報取得メソッド
 
List< fk_GraphEdge ^> ^ GetAllEdge (void)
 全辺取得メソッド
 
bool IsConnect (fk_GraphNode^ v1, fk_GraphNode^ v2)
 辺存在確認メソッド
 
接続変更メソッド
fk_GraphEdgeMakeEdge (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)
 最短経路取得メソッド
 
- 基底クラス FK_CLI::fk_Shape に属する継承公開メンバ関数
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
 
- 基底クラス FK_CLI::fk_Attribute に属する継承公開メンバ関数
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_CLI::fk_Shape に属する継承プロパティ
fk_RealShapeTypeRealShapeType [get]
 形状データ構造プロパティ
 

詳解

グラフ構造を制御するクラス

このクラスは、グラフ構造を制御する機能を提供します。 グラフ構造には多くの応用用途がありますが、 本クラスではその中でも経路探索を念頭に置いた機能を多く提供しています。

グラフ構造は、「ノード」と「辺」の2種類の要素によって構成されます。 ノードは任意の位置を持つ頂点集合であり、 辺は任意の2点を接続する線分です。 辺は無向線分としても有向線分としても考えることができ、 経路としてとらえると無向線分は両通行経路、有向線分は一方通行経路となります。

ノードを表すクラスは fk_GraphNode, 辺を表すクラスは fk_GraphEdge であり、 これらのクラスの機能も合わせて利用します。

fk_Graph のノードと辺は、「コスト」を格納することができます。 グラフ内の全要素のコストをまとめて「コストテーブル」と呼びます。 コストテーブルは、経路探索アルゴリズムで重要なデータであり、 fk_Graph はコストを扱うために有用な機能を多く提供しています。

コストテーブルは、int 型と double 型のいずれかを選択でき、 かつ両方の型それぞれで複数のコストテーブルを格納することができます。 各コストテーブルは ID により管理します。

参照
fk_GraphNode, fk_GraphEdge

構築子と解体子

◆ fk_Graph()

FK_CLI::fk_Graph::fk_Graph ( unsigned int  num)

コンストラクタ

初期値として、ノード数を設定します。 fk_Graph ではノード数は固定であるため、 利用する際に十分な数のノードを確保しておく必要があります。

引数
[in]numノード数

◆ ~fk_Graph()

FK_CLI::fk_Graph::~fk_Graph ( )

デストラクタ

◆ !fk_Graph()

FK_CLI::fk_Graph::!fk_Graph ( )

ファイナライザ

関数詳解

◆ GetNode()

fk_GraphNode ^ FK_CLI::fk_Graph::GetNode ( unsigned int  ID)

ノード取得メソッド

ノードを表すインスタンスを ID より取得します。

引数
[in]IDノード ID
戻り値
ノード

◆ GetAllNode()

List< fk_GraphNode ^> ^ FK_CLI::fk_Graph::GetAllNode ( void  )

全ノード取得メソッド

全てのノードインスタンスを取得します。

戻り値
全ノード

◆ GetEdge()

fk_GraphEdge ^ FK_CLI::fk_Graph::GetEdge ( unsigned int  ID)

辺情報取得メソッド

辺を表すインスタンスを ID より取得します。

引数
[in]ID辺 ID
戻り値
辺情報

◆ GetAllEdge()

List< fk_GraphEdge ^> ^ FK_CLI::fk_Graph::GetAllEdge ( void  )

全辺取得メソッド

全ての辺インスタンスを取得します。

戻り値
全辺情報

◆ IsConnect()

bool FK_CLI::fk_Graph::IsConnect ( fk_GraphNode v1,
fk_GraphNode v2 
)

辺存在確認メソッド

2つのノードの間に辺が存在するかどうかを判定します。 なお、ノード間の辺は複数存在する場合もあり、2本以上存在する場合も true を返します。

引数
[in]v1辺の頂点となるノード。
[in]v2辺の頂点となるノード。
戻り値
辺が存在する場合 true を、存在しない場合 false を返します。

◆ MakeEdge()

fk_GraphEdge ^ FK_CLI::fk_Graph::MakeEdge ( bool  mode,
fk_GraphNode v1,
fk_GraphNode v2 
)

辺生成メソッド

2点のノード間に辺を作成します。 なお、既に2点間に辺が存在する場合でも、エラーとならずに新たに辺を追加生成します。

引数
[in]modetrue の場合無向、false の場合有向となります。 辺が経路を表す場合は、有向辺は一方通行を表します。
[in]v1辺の始点となるノード。
[in]v2辺の終点となるノード。
戻り値
接続した辺のインスタンスを返します。 作成に失敗した場合は nullptr を返します。

◆ DeleteEdge()

bool FK_CLI::fk_Graph::DeleteEdge ( fk_GraphEdge e)

辺削除メソッド

辺を削除します。

引数
[in]e削除する辺のインスタンス
戻り値
削除に成功した場合 true を、失敗した場合 false を返します。

◆ MakeCostTable()

bool FK_CLI::fk_Graph::MakeCostTable ( unsigned int  tableID,
fk_CostType  type 
)

コストテーブル生成メソッド

コストテーブルを作成します。 指定した ID で既に作成済であった場合は false を返し、初期化は行いません。

引数
[in]tableIDコストテーブル ID
[in]typeコスト値のタイプを設定します。
戻り値
作成に成功すれば true を、失敗すれば false を返します。

◆ SetCostDirection()

bool FK_CLI::fk_Graph::SetCostDirection ( unsigned int  tableID,
fk_CostDirection  direction 
)

コスト算出方向指定関数

コストの算出方向を指定します。

引数
[in]tableIDコストテーブルID
[in]directionコストを出発ノード側から算出する場合は fk_CostDirection.FORWARD を指定します。 コストを目標ノード側から算出する場合は fk_CostDirection.BACK を指定します。
戻り値
設定に成功すれば true を、失敗すれば false を返します。

◆ SetEdgeCostID()

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 を指定していた場合、 この値は無視されます。

◆ GetNodeCostID()

unsigned int FK_CLI::fk_Graph::GetNodeCostID ( unsigned int  tableID)

ノード内コストID参照メソッド

コストテーブルに対応するノード内コストIDを参照します。

引数
[in]tableIDコストテーブルID
戻り値
ノード内コストID

◆ SetStart()

void FK_CLI::fk_Graph::SetStart ( unsigned int  tableID,
fk_GraphNode node 
)

出発ノード設定メソッド

出発ノードを指定します。 既に別の出発ノードが設定されていた場合は、新たに設定したノードに更新されます。

引数
[in]tableIDコストテーブルID
[in]nodeノードインスタンス

◆ AddGoal()

void FK_CLI::fk_Graph::AddGoal ( unsigned int  tableID,
fk_GraphNode node 
)

目標ノード追加メソッド

目標ノードを追加します。 目標ノードは一つのコストテーブルに対し複数設定することができます。

引数
[in]tableIDコストテーブルID
[in]node目標ノードインスタンス

◆ RemoveGoal()

void FK_CLI::fk_Graph::RemoveGoal ( unsigned int  tableID,
fk_GraphNode node 
)

目標ノード除外メソッド

対象ノードを、目標ノードから除外します。

引数
[in]tableIDコストテーブルID
[in]node目標ノードインスタンス

◆ ClearGoal()

void FK_CLI::fk_Graph::ClearGoal ( unsigned int  tableID)

目標ノード初期化メソッド

現時点で登録されている目標ノードを全て除外します。

引数
[in]tableIDコストテーブルID

◆ InitCostTable()

bool FK_CLI::fk_Graph::InitCostTable ( unsigned int  tableID)

コストテーブル初期化メソッド

コストテーブルを初期化します。

引数
[in]tableIDコストテーブルID
戻り値
初期化に成功したら true を、失敗したら false を返します。 SetCostMode() による設定が行われていないコストテーブルだった場合は false を返します。

◆ UpdateCostTable()

fk_CostStatus FK_CLI::fk_Graph::UpdateCostTable ( unsigned int  tableID)

コストテーブル更新メソッド

各ノードに対し、コスト算出を一段階進めます。 全てのノードのコスト値を完全にするには、 fk_CostStatus.FINISH が返されるまで繰り返し本関数を呼び出す必要があります。

引数
[in]tableIDコストテーブルID
戻り値
現在のコスト算出状況を返します。

◆ GetCostStatus()

fk_CostStatus FK_CLI::fk_Graph::GetCostStatus ( unsigned int  tableID)

コストテーブル状態取得メソッド

現在のコストテーブルにおける更新情報を取得します。 UpdateCostTable() では実際にコストテーブルの更新処理を行いますが、 本関数は更新処理は行わず状態のみを取得します。

引数
[in]tableIDコストテーブルID
戻り値
現在のコスト算出状況を返します。

◆ GetOnePath()

List< fk_GraphNode^> ^ FK_CLI::fk_Graph::GetOnePath ( unsigned int  tableID)

最短経路取得メソッド

コストテーブルに基づいた、出発ノードから目標ノードまでの最短経路を取得します。 本関数を用いる際には、事前にコストテーブルの更新が完了し、 GetCostStatus() による結果が fk_CostStatus.FINISH となる状況でなければなりません。

最短経路が複数存在するような場合、任意の1種類のみを取得します。 現状では全ての最短経路を取得する機能は提供していません。

目標ノードが複数ある場合、そのうち出発ノードからもっとも経路が短いものが抽出されます。

引数
[in]tableID経路探索に用いる コストテーブルの ID
戻り値
最短経路の経由地となるノードを経路順に格納したリストを返します。

プロパティ詳解

◆ NodeSize

unsigned int FK_CLI::fk_Graph::NodeSize
get

ノード数取得プロパティ

グラフ内に存在するノード数を取得します。

◆ MaxEdgeID

unsigned int FK_CLI::fk_Graph::MaxEdgeID
get

辺ID最大値取得プロパティ

現在存在する辺の ID の最大値を取得します。

戻り値
最大ID