В настоящее время я работаю над проектом поиска пути в помещении. Вы можете представить это так: введите описание изображения здесь
В моем приложении у меня есть два вида поиска для начальной и конечной комнаты, которые я уже реализовал. После входа в две комнаты приложение должно запустить алгоритм, например A *, для вычисления кратчайшего пути между этими двумя комнатами. Внезапно пользователь видит проведенную линию между этими двумя комнатами.
Есть ли у вас какие-либо предложения, как я могу это сделать, чтобы реализовать алгоритм A * на Android, как показано на рисунке?
Алгоритм A * полагается на теория графов.
Итак, сначала вы должны изобразить свою комнату в виде графика (каждая комната / этаж - это вершина или узел, а каждая дверь - это ребро). Я предлагаю вам использовать для этого хорошо известные реализации (например, здесь).
Исходя из вашей схемы, ваш график должен выглядеть так
Держите HashMap (или что-то еще), чтобы отслеживать, какая комната сопоставлена с каким узлом, а также какой коридор связан с каким краем.
Затем, когда ваше использование требует пути, вычислите свой алгоритм A *. Пример, который я связал с вами, будет выглядеть примерно так
List<Node> path = aStar.findPath();
Измените отображение списка узлов на список комнат и покажите его вашему пользователю.
NB: Если вы хотите сделать его очень чистым, вы можете переписать AStar.java так, чтобы он принимал список Room, и заставлял его выдавать другой список Room.
Ну .. Это зависит от того, как вы это показываете на экране (какую технологию / библиотеку вы используете). Но в основном у вас есть набор узлов, между которыми можно провести прямые линии. Не забудьте принять ответ, если считаете, что он ответил на ваш вопрос!
Спасибо за быстрый ответ! Звучит вполне реально. Я попробую такой подход. Как вы построили график? А вы знаете, как я могу нарисовать путь для пользователя на android?