Оптимальная отрисовка связей графа
От: Нomunculus Россия  
Дата: 07.07.23 05:12
Оценка:
Есть граф-дерево. Ну вообще в задаче оно в 3D, но я думаю алгоритм такой же будет и в 2D, так что пусть дерево плоское.

Надо как-то оптимально и понятным для визуального восприятия отрисовать линии в графе, чтоб они не сливались, не превращались в месиво и при этом обходили сами узлы графа. И еще одно условие- линии параллельны осям координат, ну то есть не гладкие сплайны надо, а состоящие из перпендикулярных кусочков.

Есть где описание такой оптимальной отрисовки?
Re: Оптимальная отрисовка связей графа
От: Vzhyk2  
Дата: 07.07.23 07:09
Оценка:
Н>Есть где описание такой оптимальной отрисовки?
Так как неизвестно, что ты имеешь в виду под оптимальным, то спроси у гугла. Алгоритмов отрисовки графов море и под разные понимания оптимальности.
Re: Оптимальная отрисовка связей графа
От: cppguard  
Дата: 07.07.23 07:58
Оценка:
Здравствуйте, Нomunculus, Вы писали:

Н>Есть где описание такой оптимальной отрисовки?


В проекте GraphViz упоминает какой-то древний трактат, на основе которого создавался проект. Если лень читать манулы, то можно реализовать "детский" алгоритм:
1. Вершины представляем положительно заряженными частицами.
2. Рёбра представляем отрицательно заряженными частицами.
3. Частицы с разными знаками притягиваются, с одинаковыми — отталкиваются.
4. Моделируем движение всех частиц до наступления относительного покоя.
Re[2]: Оптимальная отрисовка связей графа
От: Pzz Россия https://github.com/alexpevzner
Дата: 07.07.23 14:07
Оценка:
Здравствуйте, cppguard, Вы писали:

C>3. Частицы с разными знаками притягиваются, с одинаковыми — отталкиваются.

C>4. Моделируем движение всех частиц до наступления относительного покоя.

Напоминает моделирование задачи трех тел...
Re[3]: Оптимальная отрисовка связей графа
От: Vzhyk2  
Дата: 07.07.23 16:57
Оценка:
Pzz>Напоминает моделирование задачи трех тел...
Есть такое направление, как численное моделирование.
Re: Оптимальная отрисовка связей графа
От: Кодт Россия  
Дата: 12.07.23 09:39
Оценка: +1
Здравствуйте, Нomunculus, Вы писали:

Н>Есть граф-дерево. Ну вообще в задаче оно в 3D, но я думаю алгоритм такой же будет и в 2D, так что пусть дерево плоское.


Н>Надо как-то оптимально и понятным для визуального восприятия отрисовать линии в графе, чтоб они не сливались, не превращались в месиво и при этом обходили сами узлы графа. И еще одно условие- линии параллельны осям координат, ну то есть не гладкие сплайны надо, а состоящие из перпендикулярных кусочков.


Н>Есть где описание такой оптимальной отрисовки?


В общем случае похоже на задачу трассировки печатных плат.

Но для дерева она выглядит более-менее элементарно. Только надо уточнить, что такое "оптимально для визуального восприятия".
Дерево каталогов — одна история, ментальная карта — другая, дисковое пространство — третья...
Перекуём баги на фичи!
Re: Оптимальная отрисовка связей графа
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.08.23 05:01
Оценка:
Здравствуйте, Нomunculus, Вы писали:
Н>Есть где описание такой оптимальной отрисовки?
1. Задача называется "планаризация графа". В общем случае — неразрешима. Для деревьев — разрешима.
2. Очевидных решений в заданных ограничениях — море. В качестве простейшего примера можно посмотреть на то, как Windows Explorer строит дерево каталогов:
— одна из координат X или Y выбирается для "глубины" элемента в дереве
— вторая координата определяется количеством потомков у всех предшествующих узлов текущего узла.
— множители при этих параметрах определяют шаг расстояния между узлами. Выбираем его таким, чтобы влезли изображения узлов, а также линий между ними
3. "Оптимальность" — штука субъективная. Для её достижения придётся задать какую-то метрику оптимальности.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.