如何计算图形的可视数据
How to compute the visual data of a graph?
我有一个数据库,其中包含许多假设的人的信息。此数据旨在创建将相关人员连接在一起的图形。此图以适当的 c++ 数据结构表示家谱树。目前为止,一切都好。我有我的数据结构保存有关家庭的信息,每个人都是一个节点,所有这些都在树中适当地连接。
现在,问题来了,我迷失在如何为这个家庭图生成视觉数据中。对于任何给定的家庭,我需要生成一个典型的图形,就像您在传统家谱树中看到的那样。我打算使用 OpenGL 渲染数据并设置所有内容以执行此操作。我唯一的问题是如何为每个人的矩形生成正确的位置和大小,所以最终没有重叠,每一代人都坐在同一个垂直位置。然后,我必须添加连接可视化数据中每个节点的传统线条,但这应该不是一个大问题。
是否有任何轻量级库准备执行此功能,或者有人可以帮助我实现算法来解决此问题?谢谢
我推荐AT&T GraphVis库。 Doxygen使用这个库来绘制它的继承图,并调用树。
您也可以搜索"c ++树绘制"。
说明问题的另一种方法是:如何在分层有向图中确定节点布局,以便没有重叠并且同一层次结构中的节点被放置在同一级别?(这里的节点对应于族成员,生成指定层次结构)。
虽然GraphVis可以提供布局解决方案,但比GraphVis中使用的算法更新的方法是Dwyer等人2005年描述的Dig-CoLa(通过约束能量最小化的定向图形布局)方法。Dig-Cola的优点是,它还可以优雅地处理某些极端情况(例如周期),并避免在这种情况下引入不是由原始数据引起的层次结构。
该方法的基本思想是在层次信息诱导的约束下,通过最小化节点位置的应力(或能量)函数,将布局问题表述并求解为约束优化问题。
Dig-Cola原始论文了解更多信息:
德怀尔、蒂姆和耶胡达·科伦。 "Dig-CoLa:通过约束能量最小化进行定向图布局。" IEEE信息可视化研讨会,2005年。INFOVIS 2005.IEEE,2005 年。(全文目前可在此处获得)
作者还在此处提供了此方法(以及后续扩展)的一些示例和代码。
- 可视化 如何在 c++ 中制作特定大小的文件?
- 可视化C++:发布模式的运行时库作为'Multi-threaded Debug DLL'
- 提升如何在图形可视化中写入边缘的权重?
- 如何在大型c++项目的可视化代码中设置调试
- 可视化编译与 C++ 中的 Extern 变量
- 可视化 Bazel C++预编译标头实现
- 无法为 X.radio 创建中等可视化,因为找不到网络节点可视化 - Omnet++
- C++合并排序可视化工具
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- 可视化 将字符串解析为数组以进行C++
- 图形可视化作为窗口中的库
- c/c 的文件/符号依赖图形可视化
- 如何从程序中使用图形可视化C++
- 读取图形可视化的点文件,而无需在提升图中存储节点 ID
- 使用图形可视化绘制自定义 BGL 图
- 如何计算图形的可视数据
- 需要有关使用可视化C++创建图形绘制图形的建议
- 类似(图形可视化)堆栈跟踪(可视化调试)的树
- 最简单的可视化方式-易于使用的图形.哪些语言和库
- 在c++中可视化图形和voronoi图的最佳方法