Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ломаная линия с обходом препятствий 
V
    Опции темы
Reaver
Дата 7.7.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.12.2006

Репутация: нет
Всего: нет



Добрый день.
Разрабатываю небольшой редактор схем. Столкнулся со следующей проблемой.
Есть 2 прямоугольных объекта, на гранях объектов находятся точки.
Необходимо между этими точками провести ломаную кривую с наименьшим числом отрезков. Отрезки ломаной должны распологаться под прямым углом, а также не пересекать прямоугольники и не лежать на их гранях.
Все это выглядит приблизительно так:
user posted image 

Пробовал решить задачу с помошью графов, но выходит слишком громоздкое решение.
Подскажите, в какую сторону лучше копать?
PM MAIL   Вверх
maxdiver
Дата 7.7.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 16
Всего: 18



А точки по одной штуке на каждом объекте что ли?

Вообще, простое и надежное решение видится всё-таки через графы. Сначала найдём те точки-кандидаты, через которые может проходить путь. Достаточно взять, во-первых, от точки на объекте отступить на 1 от объекта, а во-вторых, провести вокруг каждого прямоугольника 4 прямых, отстоящих от него на расстоянии 1, и взять всевозможные пересечения всех таких прямых. В результате получим набор точек (их будет не очень много, ну прямых будет 4+4, соответственно точек пересечения 4*4), которых достаточно для проведения искомого пути. Нам нужен кратчайший путь, поэтому строим из этих точек граф (планарный), соединяя каждую найденную точку с <=4 соседями (вверх,вниз,вправо,влево), в полученном графе находим кратчайший путь.
PM MAIL WWW ICQ   Вверх
Reaver
Дата 8.7.2009, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.12.2006

Репутация: нет
Всего: нет



Спасибо большое, это то что надо.
PM MAIL   Вверх
pompei
Дата 8.7.2009, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: нет
Всего: 6



Если решить эту задачу по простому, то соединительные линии не будут "учитывать" другие объекты и возможны всяческие некрасивые пересечения, сливания дающие непонятность куда идет линия и пр. Поэтому кроме предварительной автоматической прокладки траектории, необходимо предусмотреть ручное редактирование траектории и сохранение пути в файле.

На данный момент задача прокладки соединительных проводов в электронных схемах и микросхемах общего и удовлетворительного решения НЕ ИМЕЕТ. Такие крутые компании как Intel, AMD, и пр. используют для решения этой задачи в своих процессорах и пр. микросхемах исскуственный интеллект (ИИ), который "работает" в суперкомпьютерах. (Даже есть патенты зарегистрированные на эти ИИ, до которых человек не смог додуматься, а ИИ смог). И даже в этих системах имеется ручная корректировка маршрутов, и она используется очень интенсивно.
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
Reaver
Дата 8.7.2009, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.12.2006

Репутация: нет
Всего: нет



Суть задачи как раз в том, чтобы изначально создать ломаную, не пересекающую эти 2 объекта. Остальное уже лежит на совести пользователя.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.