Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467

Обход препятствий

09.08.2017, 20:24. Показов 4145. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем то, есть полигон заданный набором вершин, внутри него есть такие же полигоны - препятствия.
Как можно расчитать путь?
Есть конечно мысли разбить его на небольшие квадраты (тогда вопрос скорее по геометрии, но на всякий случай тут спрошу - как?) и применить какой нибудь популярный a* или волновой алгоритм, нормально ли так сделать?
Миниатюры
Обход препятствий  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.08.2017, 20:24
Ответы с готовыми решениями:

Обход препятствий стаей
Суть задачи заключается в том, что нужно децентрализовано обходить препятствия стаей из 5-6 (для начала) объектов. Всё движение происходит...

Алгоритм преследования движущейся цели в режиме реального времени с обходом препятствий
Здравствуйте. Недавно задался вопросом написания небольшой мини-игры на тему выживания. Игра заключается в следующем: есть небольшое поле с...

Обход препятствий
Здравствуйте, пишу курсовой проект, возникла одна проблема. При нахождении препятствия движение останавливается(пока), нужно сделать так,...

18
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
09.08.2017, 20:42
Каковы форма и размер той штуковины, которая передвигается?
0
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
09.08.2017, 20:49  [ТС]
можно считать за круг с относительно небольшим радиусом.
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,667
Записей в блоге: 5
10.08.2017, 03:34
Например:
1. Соединяем начальное и конечное положение прямыми линиями.
2. Для каждого препятствия проверяем пересечение линий с ним (в порядке удаления от исходного объекта).
3. Если пересекает, методом Монте-карло (тут простор для творчества, можно метод Монте-карло с доп. условиями) находим новую точку, из которой, если построить отрезки в начальное и конечное положение, пересечений с данным объектом (и уже проверенными) не будет.
4. Выбираем новое положение, как начальное
5. Переходим к п.1
Миниатюры
Обход препятствий  
1
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,667
Записей в блоге: 5
10.08.2017, 05:26
Оптимально метод Монте-Карло с минимизацией расстояний.
0
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
10.08.2017, 08:27  [ТС]
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
методом Монте-карло
а можно тут немного по подробнее, а то слабо понял как его применить к подобной теме?
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,667
Записей в блоге: 5
10.08.2017, 08:34
Точка обхода препятствия выбирается случайно. И проверяется на то, что пути из неё не пересекают препятствия. Если не подходит, то выбирается следующая точка. Среди них ищется такая, с которой путь получается минимальным.
...
Стало интересно, и реализовал упрощённый вариант.
https://youtu.be/K3o-AZZQAS4
1
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
10.08.2017, 08:46  [ТС]
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
случайно
прям совсем случайно? поле то по площади в общем случае не ограничено.
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,667
Записей в блоге: 5
10.08.2017, 08:54
Так у Вас же полигон задан, в котором всё это происходит? Случайная точка должна быть, по крайней мере, внутри него.
0
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
10.08.2017, 08:56  [ТС]
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Случайная точка должна быть, по крайней мере, внутри него
разумеется, но он не ограничен по площади (в плане, что площадь может быть достаточно большой для случайного поиска)
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,667
Записей в блоге: 5
10.08.2017, 09:23
Большая, но ведь конечная? Значит, есть какие-то цифры границ. Вот в их пределах и надо оперировать.

Добавлено через 2 минуты
В крайнем случае, найти все координаты объектов и препятствий, и взять запас, скажем, в 2 раза.

Добавлено через 19 минут
И есть вариант нахождения кратчайшего пути: для N препятствий сделать N точек обхода с неизвестными координатами.
И построить функцию пути. Это будет функция с 2*N переменными. Пересечение с препятствием рассматривать как штрафные функции. А дальше минимизация функции стандартными методами. Но это может занять много времени для больших N.
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
10.08.2017, 17:03
Цитата Сообщение от jr_ Посмотреть сообщение
можно считать за круг с относительно небольшим радиусом.
1. Составляем список "критических точек".
Можно границы каждого полигона увеличить во все стороны на радиус "штуковины" и искать кратчайший путь для точки.
Тогда каждый выпуклый угол каждого расширенного полигона будет критической точкой.
Плюс исходная точка и пункт назначения.

2. Составляем граф.
Каждая критическая точка будет вершиной графа.
Две вершины соединены ребром, если отрезок, соединяющий соответствующие критические точки, не пересекается ни с одним из расширенных полигонов.

3. Ищем путь на графе.
Используем А*.
Либо (если нам для принятия решения нужны расстояния до всех объектов), используя волновой алгоритм, находим кратчайшие пути сразу до всех объектов.
1
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
10.08.2017, 20:11
Лучший ответ Сообщение было отмечено jr_ как решение

Решение

Зачем тут случайный поиск? Почему не привести задачу к готовым алгоритмам ведь их для чего то делали?

Исходник:
Название: ScreenShot00265.jpg
Просмотров: 127

Размер: 2.9 Кб
Цитата Сообщение от Shamil1 Посмотреть сообщение
границы каждого полигона увеличить во все стороны
1)Эквидистанта.
Размер равный радиусу объекта движения. Рисовать закругленные отрезки. Или просто масштаб треугольнику. Добавит размер препятствиям равный габаритам объекта движения чтобы не черкал преграды.
Название: ScreenShot00266.jpg
Просмотров: 128

Размер: 3.2 Кб
2)Пикселизация.
Сильно убавит разрешение карты преград и ускорит расчет.
Название: ScreenShot00267.jpg
Просмотров: 129

Размер: 14.9 Кб
3)A*
2
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
12.08.2017, 11:43  [ТС]
Цитата Сообщение от Excalibur921 Посмотреть сообщение
A*
а как бы интерполировать полученный путь до нескольких прямых линий?
Миниатюры
Обход препятствий  
0
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
12.08.2017, 11:49  [ТС]
а не, неактуально.
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
12.08.2017, 14:43
Лучший ответ Сообщение было отмечено jr_ как решение

Решение

Цитата Сообщение от jr_ Посмотреть сообщение
а как бы интерполировать полученный путь до нескольких прямых линий?
Если использовать "критические точки", то автоматически будет получаться путь из нескольких прямых линий.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
12.08.2017, 16:18
В “Patch finding” должно быть давно что то готовое в нескольких вариантах. Эта задача вопрос всех игр RTS стратегий.

Велик: искать пересечение окружности заданного R с ломанной и так из каждой новой точки пересечения (рекурсивный алгоритм). По идее получиться примерно плавная траектория с равномерными точками на ломанной. Так объект будет двигаться с постоянной скоростью по кривой как юнит в RTS стратегиях.
Название: ScreenShot00274.jpg
Просмотров: 97

Размер: 22.6 Кб
0
 Аватар для Mr_den
11 / 9 / 2
Регистрация: 06.09.2022
Сообщений: 384
28.03.2025, 12:21
А если надо выбраться из лабиринта улитки ? =) Уже не сработает тема с радиусом ?
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
28.03.2025, 12:46
Цитата Сообщение от Mr_den Посмотреть сообщение
А если надо выбраться из лабиринта улитки ?
В лабиринте А* будет плохо работать. Возможно, обход графа в ширину будет более оптимальным решением.

Цитата Сообщение от Mr_den Посмотреть сообщение
Уже не сработает тема с радиусом ?
Каким радиусом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2025, 12:46
Помогаю со студенческими работами здесь

обход препятствий
Здравствуйте, передо мной стоит следующая задача. Есть алгоритм муравья, реализованный на Visual C++ 6.0. Алгоритм находит кратчайшее...

Обход препятствий ломаной линией - по вертикали
Доброго времени суток, уважаемые форумчане. Помогите решить непростой вопрос. Есть макрос обхода препятствий - из фигур. Путь...

Реализовать волновой алгоритм с OpenGl (обход препятствий)
Помогите реализовать волновой алгоритм с OpenGl, пожалуйста

Обход препятствий (модель движения толпы к выходу)
Всем доброго времени суток. Уважаемы товарищи-программисты, столкнулся с проблемой при написании программы (модель движения толпы). Суть...

Программа по теме нечеткая логика (Обход препятствий роботом)
Доброго времени суток. По предмету искусственный интеллект задали сделать задачу по нечеткой логике. Нашел уже готовый пример и никак...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru