|
Айлурофил
|
|
Алгоритм построения линий графа на плоскости с автоматическим обходом препятствий25.03.2024, 07:04. Показов 2698. Ответов 37
Метки нет (Все метки)
Пример прикреплён. В нём линии связей пересекают таблицы, хотелось бы, чтобы автоматически обходили. Куда глянуть? Или как формулировать вопрос яндексу?
0
|
|
| 25.03.2024, 07:04 | |
|
Ответы с готовыми решениями:
37
Поиск библиотеки для прокладки ортогональных линий пути от А до Б и обходом прямоугольных препятствий !
Рекурсивный поиск максимального пути по матрице с обходом препятствий |
|
|
|
| 27.03.2024, 15:09 | |
|
Рисунок похож на graphviz. https://graphviz.org/docs/layouts/dot/ (есть исходники)
А тем временем я запрототипировал и похоже, что Алексей таки прав, одной электростатики недостаточно для того, чтобы исключить пересечения линии.
0
|
|
|
Айлурофил
|
||
| 27.03.2024, 16:39 [ТС] | ||
|
0
|
||
| 27.03.2024, 19:42 | ||
![]() Ну и займитесь кривыми/сплайном, это по-любому надо делать, а там, глядишь, и какие-то идейки с "авто-обходом" созреют
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|
| 27.03.2024, 22:01 | |
|
Есть какое-то ограничение на таблицы? На картинке 2 ряда таблиц. Может быть 5 рядов ("строк") таблиц?
0
|
|
|
Айлурофил
|
|||
| 27.03.2024, 23:25 [ТС] | |||
|
0
|
|||
|
Айлурофил
|
|
| 27.03.2024, 23:33 [ТС] | |
|
0
|
|
| 28.03.2024, 00:17 | ||
|
Метод "сделать и посмотреть" (да, без всякого плана, мат моделей и.т.п.) отнюдь не плох, тем более здесь это не накладно по реализации
0
|
||
|
Айлурофил
|
||
| 28.03.2024, 00:29 [ТС] | ||
|
0
|
||
|
|
|
| 28.03.2024, 09:57 | |
|
Расширьте прямоугольники - сделайте им "теней" - чтобы линии огибали их не вплотную.
Попробуйте уже имеющие связи тоже окружить запретными зонами. Это предположение, я не знаю к чему это приведет, но попробовать можно.
0
|
|
|
Айлурофил
|
|
| 28.03.2024, 10:09 [ТС] | |
|
Да, тоже думал об этом.
0
|
|
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
|
|
| 28.03.2024, 16:53 | |
|
Что с ответом на вопрос в сообщении #9?
И еще: придумайте несильно перегруженный хороший примерчик. Нарисуйте нам. Добавлено через 38 минут Теорема: для любой топологии можно всегда провести любые две пары линий связи так, чтобы они пересекались не более 1 раза. Доказательство: если две линии пересекаются два раза, то участок от пересечения до пересечения можно исправить так, чтобы они шли параллельно, не пересекаясь, при этом пересечения устранятся. При этом очевидно, преимущество такой параллельной прокладки: если одна линия проходит "красиво", то и вторая будет тоже "красивой". Пользуясь этой теоремой, можно строить менее запутанные связи.
0
|
|
|
Айлурофил
|
|
| 29.03.2024, 05:21 [ТС] | |
|
0
|
|
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
|
|
| 29.03.2024, 18:29 | |
|
Линию связи можно рассматривать как дорогу, по которой едешь из дома А в дом Б, а слева или справа находятся другие дома. Это то же самое, что если нарисовать квадратики и линии связи и тогда "лево-право" превращается "вверх-вниз".
Да, я немного неточно (слишком образно) выразился, лучше говорить "по ту или иную сторону" линии связи, что будет универсально работать, даже если линия связи петляет в разные стороны. При этом я уточню формулировку. Надо рассматривать всю эту сеть как граф с вершинами и дугами. Сначала найдём все простые петли в графе. Под простыми петлями я понимаю замкнутые контуры, не имеющие вложенных петель. Нужно определить, будет ли каждая вершина находиться внутри такой петли или снаружи. Соответственно, у каждой линии в петле будет внутренняя и наружная сторона. И теперь гораздо более четко понятно, что значит - определить, по какую-сторону линии находится квадратик. Если мы пробежимся по всем петлям и как-то определим, внутри или снаружи находится каждый квадратик, то мы получим топологию графа. По топологии графа можно определить, в каком направлении нужно вести каждую линию связи относительно квадратиков. Вопрос лишь в том, как получить оптимальную топологию. Но это гораздо более простая задача нежели та, которую вы перед собой поставили...
0
|
|
|
Айлурофил
|
|
| 30.03.2024, 06:34 [ТС] | |
|
Всё равно не очень понятно.
То есть, всё что вы пишете, оно, вроде бы, логично, но алгоритма в этом не просматривается.
0
|
|
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
|
|
| 30.03.2024, 07:44 | |
|
Я примерно понимаю, что за ПО вы создаёте. Я бы на вашем месте сделал интерактивный режим отрисовки: пользователь сам определяет, как идут линии, либо просит оптимизировать автоматически. Сплайны - это отстой, лучше квадратно-гнездовой способ реализовать, когда линии связи строго горизонтально или вертикально, с поворотами на 90 градусов.
Предлагаемый алгоритм состоит из двух частей: первая часть - это получение оптимальной топологии графа на поверхности, вторая часть - это реализация топологии в конкретных координатах. Первая часть. 1. Находим все дуги, которые не входят в петли. 2. Находим неповторяющиеся петли графа до тех пор, пока каждая дуга не окажется хотя бы в составе одной из петель. 3. Для каждой петли определяем местонахождение каждой вершины (внутри/снаружи). Для этого мы делаем полный перебор. При переборе находим наилучший вариант, с минимумом пересечений дуг. Вторая часть. 1. У нас фиксированы начало и конец дуги. Используем квадратно-гнездовой способ. Определяем, в какую сторону надо двигаться, исходя из того, откуда выходит дуга (обычно влево или вправо). Шаг сетки 5 мм, поэтому первый кусочек 5 мм готов. 2. Определяем, какая сторона у дуги внутренняя, какая наружная в составе петли или же дуга без петли, у нее нет сторон. 3. Если дуга в составе петли, то перебираем все вершины и смотрим по координатам, требуется ли разворот и обход этой вершины, если же таких вершин нет, то мы просто двигаемся в направлении конечной вершины, предпочитая движение в том же направлении как и в предыдущем шаге. 4. Дуги беспетельные могут обходить вершины как угодно, с любой стороны.
0
|
|
|
Айлурофил
|
||
| 30.03.2024, 07:58 [ТС] | ||
|
Во-вторых, ваш алгоритм излишне сложный, с отсутствием гарантии, что он безошибочный. И, предлагаю такой вариант, если интересно - я сделаю контрольный пример, а вы "скормите" его вашему алгоритму, и посмотрим, что будет. И, да, повторюсь - решение этой задачи мне нужно, но не горит.
0
|
||
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,814
|
|
| 30.03.2024, 09:28 | |
|
Сплайны не проблема. Проблема в другом: этот алгоритм вполне рабочий, но может не устроить решение. А еще вы можете внести 1000 усовершенствований. То есть описал некое направление, а не конкретный алгоритм.
Эх, и зря же вы сказали, что "не горит".)))
0
|
|
| 30.03.2024, 09:28 | |
|
Алгоритм построения прямых линий Брезенхема (Visual Studio) Алгоритм построения планарного графа Алгоритм построения графа с n вершинами, степень КАЖДОЙ из которых k Алгоритм построения остовного дерева графа методом поиска в глубину Алгоритм построения выпуклой оболочки (на плоскости) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|