检测多条弯曲线是否相交

时间:2013-07-16 21:35:11

标签: java javascript algorithm svg charts

我正在制作泳道图但是无法提出一个好的算法来自动布置连接图中节点的线。我本质上想要的就是这个。

enter image description here

但是,我现在对任何重叠或交叉的线都没有任何保护,有时会非常混乱。

有没有人知道一种方法来检测一条线是否会与已绘制的任何一条线相交? 我想出的一个想法是将路径存储在数组或表中,并在每次绘制新行时检查整个表,但这似乎没有效率。

我是通过使用GWT在javascript和java中这样做的,所以也许有一种简单的方法可以使用这些语言提供的工具之一来解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果你真正的问题是最小化线交叉点,有几种算法试图在图表中实现这一点。例如,请检查this linkauto routing for electric design automation中还使用了更多算法,这些算法也用于此类图表,例如Lee algorithmA* Algorithm

我不知道你使用的工具是否有足够的灵活性来实现这种算法,通常你需要根据具体的图表类型实现自己的启发式,但我希望这个链接足够给你好主意。

最小化图表中的线交点是一个困难的NP-Hard问题,请查看this link (about the crossing number)以获取更多信息。

祝你好运。