私はドキュメントを読みましたが、まだそれらについて混乱しています.誰かが私に明確に説明することができますか?例えば、画像比較? ありがとう。
1 に答える
パスファインディングに関するウィキペディアの記事や、そこからリンクされているグラフおよびグラフ検索アルゴリズムに関する関連トピックが役立つ場合があります。それを超えて、ここに簡単な説明者の試みがあります.
ノードは誰かがいることができる場所であり、他のノードへの接続は、誰かが場所間を移動できることを定義します。一緒に、(接続された) ノードのコレクションがグラフを形成します。
GKGraphNode
はノードの最も一般的な形式です。これらのノードは、他のノードとの接続についてだけで、空間内の場所については何も知りません。(ただし、基本的な経路探索にはこれで十分です... A が B に接続され、B が C に接続されているグラフがある場合、A から C への経路は、以下のように、それらのノードがどこにあるかに関係なく、B を通過します。)
GKGraph
ノードのコレクションであり、パスを見つけるための重要な関数のように、グラフ全体を機能させる関数を提供します。
GKGridGraphNode
およびGKGraphNode2D
の特殊なバージョンでGKGraphNode
、空間内のノードの位置に関する知識を追加します — 整数グリッド空間 (チェス盤のような) または開いた 2D 空間のいずれかです。そのような情報を追加すると、GKGraph
これらの種類のノードを含む は経路探索時に距離を考慮に入れることができます。
たとえば、次の画像を見てください。
を使用しているだけの場合GKGraphNode
、どのノードがどのノードに接続されているかについて話しているだけです。したがって、A から D への最短経路を求めると、ACDまたはABDのいずれかを取得できます。これは、どちらの方法でも接続数が同じであるためです。しかし、GKGridGraphNode
またはを使用する場合GKGraphNode2D
、ノード間の線の長さを見ています。この場合、ACDが最短経路です。
ノードを(ある種の座標)空間に配置し始めると、その空間でグラフ全体を操作できるようになります。そこGKGridGraph
にGKObstacleGraph
来てください。
GKGridGraph
は s で動作しGKGridGraphNode
、多数のノードを自分で作成して接続する代わりに、一連のディメンション (たとえば、10x10 のグリッドで、斜めの移動が許可されている) を満たすグラフを作成するなどの操作を実行できます。GKObstacleGraph
は、領域を通過できない障害物としてマークし、ノードと接続を自動的に管理して障害物を回避することで、自由 2D 空間グラフにさらに追加します。
うまくいけば、これは少し役立ちます。詳細については、参照ドキュメントとガイドに加えて、Apple には、この機能がどのように機能するかを示すWWDC ビデオもあります。