Да десятки вариантов. И нужно разбираться какой именно наиболее эффективен в данной конкретной ситуации.
А отличаются они алгоритмами поиска и формированием карты путей.
Карты путей к примеру бывают (навскидку):
- с регулярной сеткой. Карта путей состоит из квадратных или иных (шестиугольных) "клеток", для каждой из которых указана проходимость. Регулярные сетки удобно хранить в масивах и просто редактировать. Регулярные сетки охватывают всю заданную площадь, координаты узлов регулярной сетки всегда известны. Просто и универсально.
- с нерегулярной сеткой. Точки-"узлы" сети, "вейпоинты", размещены по координатам неравномерно. Дальнейшее развитие нерегулярной сети приводит к появлению карты путей на основе вейпоинтов, когда немногочисленные по сравнению с количеством клеток регулярной сетки таких же масштабов точки пути размещены только на ключевых позициях вручную. Из-за малого количества точек, анализ карты проводится быстрее, карта занимает меньше памяти, однако падает качество "прокладки курса" и усложняется редактирование и дополнительные алгоритмы поиска.
-вапще без сетки нах
. Карты препятствий, описаных отрезками или иными геометрическими фигурами, размещенными на карте. Алгоритмы поиска пути своеобразные- к примеру, анализ пересечения отрезка курса с препятствием и смещение курса вокруг края препятствия. Работают довольно быстро, иногда используются для поиска пути на очень больших, но простых картах (открытые пространства).
-другие.
Алгоритмы поиска по сеткам тоже сильно отличаются:
-Волновой алгоритм и его вариации. Предельно прост, отличается высокими затратами времени на поиск. Существует исключительно в образовательных целях...
-А* и его вариации. Производится именно "поиск" в заданном направлении, а не многократные "волновые проходы" всей карты. Качественный (или не очень) результат поиска достигается к.пр. намного быстрее, чем волновым алгоритмом.
-с предварительным поиском. Выбирается один из заранее просчитанных и постоянно хранимых в памяти "курсов".
-"Тактические". Алгоритм не производит анализ всей карты, а лишь своеобразным образом реагирует на появление препятствий на пути.
-другие.
Так что выбирай, что тебе нужно. Потом находи/спрашивай алгоритм и обрабатывай его под свои потребности.
Да но этот пример астара сделан под 2д... - А я 2д отродясь не знаю... - есть у кого пример этого исходника под 3д???
|
КАК ты себе представляешь ТРЕХМЕРНЫЙ АЛГОРИТМ? Да карты путей как правило двухмерны. А как оно графически отображается- ну не без разницы ли тебе?