【问题标题】:Detect Graph Edges Overlapping检测图边缘重叠
【发布时间】:2021-02-19 09:59:04
【问题描述】:

问题:寻找一个 js 图形库来创建有向图(例如使用 dagre 布局),具有不重叠的约束边缘

到目前为止的步骤

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

目标

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

图形表示

在目标的图形表示下方。 我想检测边缘0>12>3 是否重叠。

欢迎任何想法,想法。 如果我的逻辑有问题,我们非常欢迎更正/建议。

【问题讨论】:

    标签: javascript svg d3.js graph cytoscape.js


    【解决方案1】:

    寻找边缘交叉点(线交叉点)是一个相当简单的几何图形,在这里进行了解释 --> https://stackoverflow.com/a/18234609/368214

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

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

    【讨论】:

    • 感谢您的资源。 Cytoscape 的应用程序看起来不错,但不适用于 js(如果我做对了,仅适用于桌面应用程序)。第二个网址信息量很大。我从那里得到了一个想法,评估每一点,但感觉过分了。你知道我是否可以在 svg 或 canvas 中手动渲染一行的每个像素吗?
    • 答案并不完全是我想要的,但似乎没有针对我的问题的开箱即用解决方案,您的答案提供了指向正确的有用信息(在我看来)方向。感谢您的资源。
    猜你喜欢
    • 2010-12-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多