アルゴリズムに関して言えば、私は本当にスピードフリークです。プラグインでは、ゲーム用に作成しました。
速度は..少し..満足のいくものではありません。特に車で運転しているときにパスをたどらない場合は、パスを再計算する必要があります。時間がかかるため、ゲーム内のGPSは多くの「間違った方法」の信号を積み上げています(そして信号を積み上げています)常に更新される高速のライブGPSシステムが必要なため、間違った方向に移動するたびに、後で計算が増えることを意味します。
古いアルゴリズム(いくつかの単純なダイクストラ実装)をboost :: dijkstraに変更して、ノードAからノードBへのパスを計算しました
(合計ノードリストは約15,000ノードで約40k接続です。好奇心旺盛な人のためにここにマップがあります:http://gz.pxf24.pl/downloads/prv2.jpg(12 MB)、赤い線の端がノードです)、
しかし、実際には速度は上がりませんでした。(少なくとも目立たないように、おそらく50ミリ秒)。
ノード配列に格納される情報は次のとおりです。
The ID of the Node,
The position of the node,
All the connections to the node (and which way it is connected to the other nodes, TO, FROM, or BOTH)
Distance to the connected nodes.
誰かがC/C ++のより速い代替案を知っているかどうか知りたいですか?任意の提案(+コード例?)は大歓迎です!
誰かがプロジェクトに興味があるなら、ここにあります(ソース+バイナリ):
https://gpb.googlecode.com/files/RouteConnector_177.zip
このビデオでは、gps-systemがどのようなものかを見ることができます。
http://www.youtu.be/xsIhArstyU8
ご覧のとおり、赤いルートはゆっくりと更新されています(まあ、私たち-ゲーマー-それは遅いです)。
(ByTheWay:赤い線の間のギャップはずっと前に修正されました:p)