5

我正在寻找一个简单的 C++ 图形布局库。我想将该库嵌入到我们基于 wxWidgets 的可视化器中。总之,我正在寻找类似graphviz的东西,除了动态 - 即当事件发生时,只需要加载图形的变化,而不是完整的显示。有dynagraph,但它似乎是一个死项目。之前有人建议我使用 VTK - 但它是重量级的。

我正在寻找可用于商业用途的开源、非 copyleft 类型的库(GPL 已经出局,LGPL 应该没问题)。我愿意接受谷歌不会给出的建议。

4

2 回答 2

4

Graphviz 生成的布局基于全局结构 - 任何单个添加都可以显着改变输出(除非您使用固定坐标,在这种情况下您可能不会问这个问题)。基本上,如果您想要自动放置元素,您需要接受以下解决方案之一:

  • 当放置新元素时,会实时运行物理模拟,导致节点疯狂反弹,直到它们安顿到新位置。这会很慢,但会显示出“令人愉悦”的变化。
  • 放置新元素时,将重新绘制整个图形(物理/隐藏的任何内容,但整个内容都会被修改)。由于不必重绘,这会更快,但节点的相对位置可以完全不同。
  • 放置新元素时,不会修改现有元素。在进行了足够多的动态更新后,您的图表将看起来很糟糕,因为自动放置是一个全局优化问题。

抱歉,我对您的问题无能为力,但也许这有助于解释为什么您正在寻找的东西可能根本不存在(或没有任何好处)。

于 2009-01-21T05:17:41.910 回答
0

克服使用 graphviz 时的一些问题(由 Tom 描述)。我们将可视化器世界坐标设置为与 graphviz 世界坐标一致。

然后。假设每个视觉元素都有一个唯一的标识符,使用这些元素构建一个图形。将图形输出为文本。根据输出解析重新调整所有内容。?

--

迈克尔

于 2009-01-23T19:30:40.457 回答