我正在寻找一种三角测量并填充非简单(可能是自相交)多边形轮廓内部的方法。我在线上找到了一些非常好的算法,可以对简单曲线进行三角测量或找到一组点的凸包,但是我需要找到一个点列表的轮廓,而我不能依靠它来形成约旦曲线(无需打孔每个自相交点,例如mapbox / earcut,都可以)
我尝试了mapbox的快捷方式(https://github.com/joshuaskelly/earcut-python)的python端口,该端口很棒,但可以为自交点打孔
我无法尝试scipy.spacial
,因为它根本不支持非简单曲线。
我正在用Python进行研究,并计划最终将其移植到JavaScript,但现在我对语言不了解,任何算法都可以。
import earcut
from shapely.ops import cascaded_union
from shapely.geometry import Polygon
points = [[(0,0), (100,0), (100,50), (200,100), (0,100), (20,20), (80,20), (80,80), (20,80)],[]]
data = earcut.flatten(points)
flattrangles = earcut.earcut(data['vertices'])
alltriangles = [[points[0][j] for j in tr] for tr in triangles.T.tolist()]
cascaded_union([Polygon(tr) for tr in alltriangles])
预期一个没有孔的大多边形 得到了一个具有两个三角形孔的多边形,它们的自交点在其中