![]() |
|
|
![]()
|
|
| knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
обрый день.
есть след. задаза. даны прямоугольники в произвольном порядке на экране. и есть 2 точки. надо соединить эти 2 точки так чтоб линия соединяющая эти 2 точки не пересекала не один прямоугольник. и путь этот должен быть кратчайшим вот не как не могу придумать алгоритм. --------------------
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
помнится, была старая тема похожая: http://forum.vingrad.ru/topic-3781.html
честно говоря, не помню, чем там всё кончилось, но на всякий случай стоит почитать -------------------- qqq |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: нет Всего: 104 |
Может подойти со стороны игрушек?
То есть сформулировать задачу так: найти кратчайший путь между двумя точками, где прямоугольники - препятствия. А про алгоритмы поиска пути можна почитать тут Это сообщение отредактировал(а) Kangaroo - 16.1.2008, 12:17 -------------------- Lost.... |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Я бы попробовал такое приближение.
Сначала условие - прямоугольники пересекать нельзя, но касаться их можно. Если и касаться нельзя - тогда на первом этапе увеличил бы каждый прямоугольник в каждую сторону на величину "запрещенного приближения к прямоугольнику" и дальше считал уже для новых прямоугольников. Дальше по такому алгоритму.
Это сообщение отредактировал(а) _Y_ - 16.1.2008, 13:07 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
_Y_,
если я все правельно понял то мне надо создать взвешенный граф след. способом. соеденить все вершины прямоугольников друг с другом кроме тех соеденение каторых приведет к пересечениям ребер(так мы получем ребра графа). а затем уже в этом графе найти кратчайший путь от А до Б. --------------------
|
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Да вы что, ребят... Задача просто сводится к волновому алгоритму. Просто между прямоугольниками надо построить еще прямоугольники, хранящие в себе уену прохода.
В примеру: По вертикали два прямоугольника на расстоянии Н. Вот тогда прямоугольник, по которому можно ходить будет размера (max(l1,l2), H). Это так, примерно. Можно свести все прямоугольники к единичному размеру и просто обходить их- имхо это проще реализовать, чем пути по построенным доп. прямоугольникам -------------------- Всем добра |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
knut, ИМХО так. Если прямоугольников не слишком много - все должно работать быстро и приятно. Кстати - должно работать вообще с любыми многоугольниками.
SoWa вот что-то совсем другое предлогает - может и лучше, но я совершенно не понял что именно. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |