Astarアルゴリズムで見つかったパスを適応したいので、このパスを使っているオブジェクトが変更(例えばターゲットが動き回る)に適切に反応できるようにします。私は可能な限り全パスを再計算することなく、可能な限り効率的にこれを実行しようとします。私は、オブジェクトの移動に伴って、現在のパスの末尾にNode
新しいを追加することで、パスstd::vector<Node> path
をmodyfingについて考えアダプティブパス - Astarの変更
class Astar
{
void findPath(std::vector<Node> &path)
{
std::vector<Node> open;
std::vector<Node> closed;
//find path
}
}
class Foo
{
std::vector<Node> path;
Astar astar;
void findPath()
{
astar.findPath(path);
}
}
:
パスaccusitionはと幾分smiliar見えます。しかし、ターゲットが閉じると、変更されたパスが彼の隣に移動し、古いターゲットの位置に移動し、新しい位置に向かって後方に移動する必要があるため、これは問題になります。あるいは、私は約5-10回の移動がパスを再計算することを考えました。これを行うより良い方法はありますか?