Алгоритм рендеринга 2D-графики, поддерживающий динамическое добавление / удаление узлов / ребер - PullRequest
2 голосов
/ 21 января 2020

Я часами искал ответ на этот вопрос, но в большинстве случаев либо вопрос касается графиков / диаграмм (а не графиков, как в «графе потока управления»), либо ответ «просто используйте graphviz» - это правильный ответ.

Однако у меня есть некоторые ограничения и требования, которые делают «просто использовать graphviz» без ответа.

  • Полный график достаточно велик, поэтому невозможно сгенерировать graphviz для всего этого.
  • Узлы и ребра будут динамически добавляться и удаляться.
  • Узлы содержат много информации, которая будет скрыта по умолчанию и будет расширена по запросу (представьте, что каждый узел имеет вид таблица с расширяемыми строками / столбцами)
  • Я хочу иметь возможность показывать только подмножество графика по запросу, например, для таких функций, как «показывать только доступную часть графика с этого узла» или «показать все простые пути от этого узла к этому узлу ".

В основном я хочу иметь возможность начать рисовать узлы и ребра на 2D-плоскости, а также добавить новые узлы и ребра dyn amically. Хорошо, если узлы / ребра перемещаются по мере добавления нового материала. Хотя у меня пока нет жестких требований к этому, было бы хорошо, если бы это выглядело «красиво» - например, если узел имеет много входящих ребер (это ориентированный граф), в идеале он был бы в центре место на плоскости со всеми остальными узлами вокруг него и т. д. c.

Все, что меня заводит, будет полезно. Спасибо.

(я не знаю, какой ярлык добавить к этому, добавив «теорию графов», потому что я не знаю, что еще добавить)

...