Android - предложения по поиску пути в помещении

В настоящее время я работаю над проектом поиска пути в помещении. Вы можете представить это так: введите описание изображения здесь

В моем приложении у меня есть два вида поиска для начальной и конечной комнаты, которые я уже реализовал. После входа в две комнаты приложение должно запустить алгоритм, например A *, для вычисления кратчайшего пути между этими двумя комнатами. Внезапно пользователь видит проведенную линию между этими двумя комнатами.

Есть ли у вас какие-либо предложения, как я могу это сделать, чтобы реализовать алгоритм A * на Android, как показано на рисунке?

1
0
380
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Алгоритм A * полагается на теория графов.

Итак, сначала вы должны изобразить свою комнату в виде графика (каждая комната / этаж - это вершина или узел, а каждая дверь - это ребро). Я предлагаю вам использовать для этого хорошо известные реализации (например, здесь).

Исходя из вашей схемы, ваш график должен выглядеть так

Держите HashMap (или что-то еще), чтобы отслеживать, какая комната сопоставлена ​​с каким узлом, а также какой коридор связан с каким краем.

Затем, когда ваше использование требует пути, вычислите свой алгоритм A *. Пример, который я связал с вами, будет выглядеть примерно так

List<Node> path = aStar.findPath();

Измените отображение списка узлов на список комнат и покажите его вашему пользователю.

NB: Если вы хотите сделать его очень чистым, вы можете переписать AStar.java так, чтобы он принимал список Room, и заставлял его выдавать другой список Room.

Спасибо за быстрый ответ! Звучит вполне реально. Я попробую такой подход. Как вы построили график? А вы знаете, как я могу нарисовать путь для пользователя на android?

Ben Hoschtitzky 04.01.2019 21:48

Ну .. Это зависит от того, как вы это показываете на экране (какую технологию / библиотеку вы используете). Но в основном у вас есть набор узлов, между которыми можно провести прямые линии. Не забудьте принять ответ, если считаете, что он ответил на ваш вопрос!

Arthur Attout 04.01.2019 22:01

Другие вопросы по теме