我有一堆可能具有依赖关系的节点,例如 A、B、C,连接 A <- B 和 B <-C。我想将它们放在一个列表中(gui 中的列表视图/树视图),并绘制一个漂亮的图表,显示一列中的关系。我在想一些 git 工具给你的东西。
(有关更多示例,请参阅此线程)。
我设法为此绘制了自己的算法,但我不确定我是否得到了所有极端情况。这似乎是一个已解决的问题,所以我想我会在这里询问任何标准算法。我的要求是:
- 线路可以离开和到达每一行。
- 行可能会经过一行。
- 行具有自然顺序。目前,依赖项只在一个方向上(后面的行可能取决于前面的行),但如果可能的话,我想放弃这个要求。(我编造的算法不允许这样做。)
- 我不需要像上图那样合并线条。如果多条线路到达或离开同一点,它们可能出于美观原因合并。不过,我不想将通过与到达合并,如上图中的第 3 行。(所以会有两个通过,一个终点在那里。)
- 同样,出于美观的原因,该算法可能会“压缩”树,并弯曲线条以节省空间。但如果它只有直线也足够了。
- 我想从依赖项列表开始,并得到说明在每个单元格中绘制什么来创建树。
这种算法的任何参考/代码示例?当然,有各种 git 客户端的来源,但它们做的事情与我正在寻找的东西略有不同(我没有合并)。