この文書の現在のバージョンと選択したバージョンの差分を表示します。
歩数mapでの直線優先 [2011/07/04 03:20] member 作成 |
歩数mapでの直線優先 [2011/08/05 02:50] (現在) member |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
====== 歩数Mapでの直線優先 ====== | ====== 歩数Mapでの直線優先 ====== | ||
- | 最短だけどターンが多い経路と | + | 最短だけどターンが多い経路と、1区画長いけど直進が多い経路があった時、 |
- | 1区画長いけど直進が多い経路があった時、 | + | 普通の方法では後者を選択することができません。 |
- | + | ||
- | 普通の方法ではどう頑張っても後者を選択することができません。 | + | |
経路選択の方法を変えようにも、バグがないように作るのは少々大変です。 | 経路選択の方法を変えようにも、バグがないように作るのは少々大変です。 | ||
- | そこで比較的簡単に出来る方法として、最短経路が直進優先となってくれるような歩数マップを作る方法があります。 | + | そこで比較的簡単に実装するために、直進の多い経路が最短となるよう歩数マップの作り方を変えます。 |
===== 直進優先歩数マップ ===== | ===== 直進優先歩数マップ ===== | ||
ライン 15: | ライン 13: | ||
しかし歩数を更新する時、曲がる場合は歩数を+2や+3します。 | しかし歩数を更新する時、曲がる場合は歩数を+2や+3します。 | ||
- | 例えばある座標の歩数を4、西側を更新しようとした際、反対側(東側)が3だったら | + | 例えば+2すると下図のようになります。 |
- | 西→4→3となるので、西→4→3の部分は直進となり、西の歩数は5とします。 | + | {{:直進優先歩数マップ再.png|}} |
- | 一方反対側が255であれば | ||
- | 西→4×255となるので、西→4→3の部分はターンとなり、西の歩数は6とします。 | + | 最短経路は10歩8折りですが、12歩2折の外側経路を選択してくれます。 |
- | このようにして歩数マップを作れば、普通に最短させるだけで直進が多い経路を選んでくれるようになります。 | + | このように歩数マップを作れば、普通に最短させるだけで直進が多い経路を選んでくれるようになります。 |