A* ヒューリスティックと Bresenham アルゴリズムの仕組みについて私が理解していることから、現在の状態と目標の状態のみがヒューリスティック関数に渡されるため、これは不可能な場合があります。しかし、誰かがこの問題に対する賢い解決策を持っているかもしれません。
A* を使用してグリッド上のパスを計画しています。現在の状態と目標または障害物を回避する次のターンの間に空きスペースがある場合に、最適なパスがブレゼンハムの線をたどるヒューリスティックが必要です。
問題を説明するためのいくつかの画像を次に示します。
マンハッタン距離:
ワールド内の動きがグリッド上のチェッカーのように機能する場合、これはまったく問題ありませんが、最終的には A* パスを連続平面上のモーションに変換するので、これは非常にうまく機能します。
ユークリッド距離:
改善されましたが、まだ完全ではありません。端の直線に注目してください。対角線は、私が望んでいるものと同じくらい簡単に対角線のままにすることができました。
私が欲しいもの:
Bresenham のラインは、次のターンまたはゴールに引き寄せられます。
ここで良いリソースを見つけましたhttp://theory.stanford.edu/~amitp/GameProgramming/Heuristics.htmlは、私が探しているものに触れていますが、最初からゴールまでブレゼンハムの線を引くためにしか機能しないようです。私が欲しいのは、ブレゼンハムの線が障害物を迂回して次のターンに引き寄せられることです。
この問題への良いアプローチのアイデアはありますか?