以编程方式删除自相交的多义线

时间:2016-09-30 21:41:44

标签: python polyline

考虑以下内容......

enter image description here

给定一个有序的顶点数组

  

[[1.11,2.22],[4.44,3.33],[5.55,6.66] ......]

其中每个顶点是在平面上表示为(x = 11.11,y = 2.22)的x,y坐标,并且整个数组表示多义线。 Python中检测自相交并删除“打结”行中“结”的最快方法是什么,以便得到以下结果。

enter image description here

1 个答案:

答案 0 :(得分:1)

问题的定义含糊不清。理解你定义为" knot"会很有帮助。我的理解是你想: 1.找到折线中的第一个和最后一个交点。 2.获取零件[Vn,第一个交点]和[最后一个交点,V + 5]并从中形成折线。

你可以使用Bentley-Ottmann算法(https://en.wikipedia.org/wiki/Bentley%E2%80%93Ottmann_algorithm)来检测所有交叉点并对它们进行排序,然后完成剩下的工作。

祝你好运