绘制非相交线的路由算法

时间:2019-05-13 17:12:26

标签: javascript algorithm routing

我正在使用JS中的流程图系统,该系统允许用户单击一个元素,然后单击另一个,然后程序插入一个箭头将它们连接起来。为此,我需要一种符合以下条件的画线算法:

  • 仅直线/ 90度转弯
  • 保证采取有效的路线,使...
  • ...它可以考虑其他行(因为它不能相交)-例如,如果我插入一条线,然后再插入另一条线,则可以绘制第二条线而不必重新排列第一条线,也不必费劲低效率的到达目的地的路线,以避开第一行。

如果您知道有符合要求的算法(我只找到仅匹配一个或最多两个条件的算法),我会感兴趣;另外,如果有一个我可以盗用的JS实现,请也将其链接。

一些注意事项:

  • 时间复杂度并不重要,只要结果在美学上令人愉悦
  • 可以有多行源自或输入一个元素。这是为了允许回送/子例程。
  • 线可以彼此重叠,而不能彼此垂直。

示例:

image 1

我单击一个元素...

image 2

...然后在另一个上,然后在它们之间插入箭头。

image 3

如果继续执行此操作,我希望得到线性序列,并自动插入箭头。

image 4

或者,我可以利用多个输入/输出来获得更封闭的图表,从而生成更复杂的结果。

image 5

我应该能够以任何顺序执行此操作以获得相同的结果。

0 个答案:

没有答案