Знаете ли вы о реализации с открытым исходным кодом force-directed layout в C++, используемом для графических интерфейсов? Предпочтительно BSD/MIT/Apache или другая (не GPL) лицензия.Принудительная реализация макета в C++
ответ
Отличный Boost.Graph library предлагает широкий спектр алгоритмов, среди которых несколько алгоритмов компоновки. Я бы рекомендовал использовать либо Kamada-Kawai spring layout, либо Fruchterman-Reingold force-directed layout.
Boost licence очень разрешительный, поэтому не беспокойтесь об этом.
Первый результат Google: VTK. Другой ведет меня к vtkGraphLayoutView.
OverView
https://www.kitware.com/InfovisWiki/index.php/Main_Page
Есть некоторые шаги установки, если вы хотите, чтобы это приложение, всю информацию на этой вики. Это приложение, построенное на ВТК. Специфической функцией OverView является возможность представлять график информации (не обязательно геометрический) в двух измерениях.
Как указано в директиве, VTK имеет схему направленного графика силы. Преимущество использования чего-то вроде OverView заключается в том, что вы можете легко сделать собственный плагин для OverView, который вы бы сделали, чтобы читать ваши данные и отображать их с помощью стратегии направленного макета.
Если вы не хотите зависеть от OverView, очень легко извлечь ваш код подключаемого модуля и ссылаться только на OverView, поскольку весь рендеринг обрабатывается вне вашего плагина.
Вы просматривали neato от graphviz. Это guide даже в деталях для использования graphviz в качестве библиотеки. guide включает в себя алгоритм компоновки fdp, который, как представляется, является именно тем, что вы хотите. Весь graphviz попадает под Common Public License.
Почему это запрещено? Это Open Source, бесплатно и имеет лицензию BSD. – dirkgently
+1 потому что анонимные голоса меня огорчают. –
Используя VTK, я думаю, что это действительно хорошее решение вашей проблемы. Кроме того, это полностью перекрестная платформа Linux/Mac/Windows. И он имеет привязку для Python/Java и tcl/tk, если они вам понадобятся. –