【发布时间】:2017-02-09 13:27:56
【问题描述】:
考虑以下...
给定一个有序的顶点数组
[[1.11, 2.22], [4.44, 3.33], [5.55, 6.66] ...]
其中每个顶点是一个 x,y 坐标,表示为平面上的 (x = 11.11, y = 2.22),整个数组表示一条折线。 Python中检测自相交并删除“打结”行中的“结”的最快方法是什么,结果如下。
【问题讨论】:
考虑以下...
给定一个有序的顶点数组
[[1.11, 2.22], [4.44, 3.33], [5.55, 6.66] ...]
其中每个顶点是一个 x,y 坐标,表示为平面上的 (x = 11.11, y = 2.22),整个数组表示一条折线。 Python中检测自相交并删除“打结”行中的“结”的最快方法是什么,结果如下。
【问题讨论】:
问题的定义很模糊。了解您对“结”的定义会有所帮助。我的理解是你想要: 1. 找到折线中的第一个和最后一个交点。 2. 得到部分[Vn,第一个交点]和[最后一个交点,V+5],并从中形成一条折线。
您可以使用 Bentley-Ottmann 算法 (https://en.wikipedia.org/wiki/Bentley%E2%80%93Ottmann_algorithm) 检测所有交叉点并对其进行排序,然后执行其余的操作。
最好的问候
【讨论】: