2013-07-30 112 views
3

我使用KineticJS构建组织结构图;其中一个主要要求是能够具有足够智能的线条,使其不会与其连接的形状重叠。我有一个算法来检测两个形状之间的最短路径,但我仍然坚持如何在任何形状的路径上绕过它们。在HTML Canvas中绘制线路以绕过形状

我到目前为止所提出的最佳解决方案是在线上的每一个点上使用getIntersection(),以确保没有任何点包含的不仅仅是行;但在做完之后(本身感觉不止有点浪费),我仍然不确定绕障碍物走路的最佳方式是什么。

如果有另一个可以很容易地完成这个任务的开关库,或者甚至回到纯粹的vanilla JS实现(如果这是需要的),我会接受这个想法。

What I have currently

回答

0

当您当前的解决方案时,您将需要创建每个形状绘制你的连接器时,您可以使用之间的垂直和水平的“沟”。

将这些排水沟想象成您穿过连接导线的导管。

您的水槽中可能会有多个重叠的连接器。

您可以对连接器进行颜色编码,以便用户轻松识别。

或者:

这画布diagraming库是由频繁的StackOverflow贡献者创建,西蒙·萨里斯:

http://www.nwoods.com/company/aboutus.htm

或者:

JSPlumb是一种基于JavaScript diagamming库

http://jsplumbtoolkit.com/jquery/demo.html

+0

嗯...... GoJS似乎会做我正在寻找的东西,但它不是开源的。这是一种耻辱,因为这是我公司正在寻找的东西。同时JSPlumb很不错,但我还没有看到任何表明它包含智能线路路由的问题。 我已经考虑了排水沟解决方案,它似乎合乎逻辑;你认为通过它们获得线路的最佳方式是什么? – moberemk