检测图形边缘重叠

Detect Graph Edges Overlapping

问题:寻找js图形库创建有向图(例如使用dagre布局)需要相当长的时间,with 非重叠边的约束.

到现在的步数

  1. cytoscape.js but as it seems 开始,不存在这样的功能。
  2. 继续使用基于 svg 的解决方案(考虑到所有元素都在 DOM 中),d3.js 使用 dagre-d3,但信息仍然在 DOM是路径route.

Objective

  1. 找到一种检测边缘重叠的方法,基于 canvassvg
  2. 创建自定义布局以遵守此限制。将使用它作为我的收敛算法的指标。

图形表示

下面是objective的图形表示。 我想检测边缘 0>12>3 是否重叠。

欢迎任何想法和想法。 如果我的逻辑有问题,欢迎corrections/suggestions。

查找 边缘交叉点(线交叉点)是一个相当简单的几何学位,这里有解释 -->

但是 最小化 图形中的这种边缘交叉(零边缘交叉仅在平面图形中才有可能)是图形布局的重大研究挑战之一 - https://cs.stackexchange.com/questions/14901/how-to-reduce-the-number-of-crossing-edges-in-a-diagram

一些特定图形类型的图形布局,如 DAGS(如 Sugiyama)旨在减少交叉,如果有帮助,yfiles 提供类似的细胞景观布局(即分层布局)--> http://apps.cytoscape.org/apps/yfileslayoutalgorithms