![]() |
|
![]() ![]() ![]() |
|
APXEOLOG |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.4.2007 Где: Мурманск Репутация: нет Всего: 1 |
Доброго времени суток.
Много времени потратил на поиск подходящего алгоритма поиска путей, решил спросить мнения знающих людей. Задача: Необходимо найти самый короткий путь наиболее точным образом. Объект для которого ищем путь - прямоугольник (может быть разных размеров), препятствия - тоже прямоугольники (опять таки разных размеров). Пространство скорее свободно, чем занято (т.е. грубо говоря у нас есть роща деревьев, между которыми нужно найти оптимальный путь). Упрощения:
Пробовал алгоритмы на сетке в духе А* но они дают плохое качество, из-за необходимости апроксимировать препятствия на сетку размером в исходный объект. Смотрел NavMesh, но не нашел внятного описания алгоритма, да и работает он на трехмерном пространстве Самое близкое что я нашел - http://alienryderflex.com/shortest_path/, но оно опять таки ищет путь от точки до точки, не учитывая размер объекта. Подскажите наиболее подходящий алгоритм поиска пути для данных условий. --------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz. |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
никаких сеток не нужно
путь будет представлять собой ломаную вершины ломаной будут какие-то углы каких-то прямоугольников, эти углы - вершины графа ребро между вершинами есть, если оно не пересекает никаких прямоугольников (можно просто проверять пересечение сторон), если есть, его вес - просто длина так что можно попробовать простой волновой алгоритм по этому графу, а там смотреть касательно неточечных областей для старта и финиша: тут всё просто, считаем всю область одной вершиной графа, но рёбра и их длину находим минимизацией по всем точкам границы области -------------------- qqq |
|||
|
||||
AVA12 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 4.5.2008 Репутация: 1 Всего: 4 |
Можно упростить задачу:
- проводим через поле не весь объект, а только одну его контрольную точку, для определенности - верхний левый угол; - строим "виртуальные" границы препятствий; для этого продолжаем каждое препятствие влево и вверх соответственно на ширину и высоту исходного объекта. Теперь контрольная точка находится внутри "виртуального" препятствия тогда и только тогда, когда исходный объект пересекается с исходным препятствием. Соответственно, если контрольная точка лежит вне "виртуальных" границ, то пересечения нет. Таким образом задача сведена к построению пути для безразмерной точки, а готовые алгоритмы для нее уже есть. |
|||
|
||||
beroal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 18.1.2003 Где: Украина Репутация: нет Всего: 3 |
Я думаю, надо взять последний алгоритм и добавить учёт размеров движущегося прямоугольника. Введём множество V:={-1, 1}^2, которое служит для нумерации вершин прямоугольника. Учёт размеров: если движущийся прямоугольник имеет полудиагональ d0 и огибает вершину v1 (v1∈V) неподвижного прямоугольника с центром c1 и полудиагональю d1, то его центр проходит не через точку c1+d1·v1, как в исходном алгоритме, а через точку c1+(d1+d0)·v1, где «·» — скалярное произведение. Не забудьте выбросить вершины и рёбра графа, в которых движущийся прямоугольник пересекается с хотя бы одним неподвижным прямоугольником.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |