Я пытаюсь построить средство просмотра модели диаграмм классов, используя d3.js и d3.dag
. Наиболее важной частью этого средства просмотра является то, что он должен иметь возможность оптимально позиционировать узлы, чтобы мы не моглииметь пересечение ссылок (когда это возможно) и плюс должен иметь возможность четко видеть, что с чем связано
Мы знаем:
- Ширина каждого узла
- Высота каждогоузел
- Начальная координата связей
- Конечная координата связей
- Связывает все угловые координаты
Мы хотим:
Мне нужно что-то вроде теории.
Есть ли какой-нибудь известный алгоритм, который может решить проблему выше (язык не имеет значения, мне просто нужна теоретическая справка)
Выкладываем примеры ниже
- Чтотекущая ситуация
- Чего я могу достичь самостоятельно
- Что было бы идеально
Пример 1.
Текущий
![enter image description here](https://i.stack.imgur.com/kLxCI.png)
Достижимый
![enter image description here](https://i.stack.imgur.com/phr4x.png)
Отлично
![enter image description here](https://i.stack.imgur.com/gh11v.png)
Пример 2.
Текущий
![enter image description here](https://i.stack.imgur.com/jKo5P.png)
Достижимый
![enter image description here](https://i.stack.imgur.com/KHw1y.png)
Идеальный
![enter image description here](https://i.stack.imgur.com/oIwhB.png)
Пример 3.
Ток
![enter image description here](https://i.stack.imgur.com/5IThz.png)
достижимо и идеально
![enter image description here](https://i.stack.imgur.com/Bseu8.png)
Пример 4.
Текущий
![enter image description here](https://i.stack.imgur.com/IeLXo.png)
Достижимый
![enter image description here](https://i.stack.imgur.com/8ZEXy.png)
Отлично
![enter image description here](https://i.stack.imgur.com/eUwsq.png)
Пример 5.
Текущий
![enter image description here](https://i.stack.imgur.com/1D1I7.png)
Достижимый
![enter image description here](https://i.stack.imgur.com/TJd3c.png)
Отлично
![enter image description here](https://i.stack.imgur.com/DX5Hs.png)
Пример 6.
Текущий
![enter image description here](https://i.stack.imgur.com/P4Vw5.png)
Идеальный
![enter image description here](https://i.stack.imgur.com/fIevM.png)
Обновление
Традиционное пересечение (соединение между узлами) в этом случае уже минимизировано (благодаря d3-dag).Проблема заключается в том, что у нас нет единственного отношения узла к узлу, у нас также есть отношение строки к строке, и в этом случае d3-dag терпит неудачу