我有一个点列表,我正在尝试在python中生成凸面层。
目前我只是使用以下内容:
def convex_layers(points):
points = sorted(set(points))
layers = []
while points:
#Create the next convex hull
hull = convex_hull(points)
#Create the new list of points
for point in hull:
points.remove(point)
#Update the list of layers
layers.append(hull)
return layers
这只是一次创建一个凸包。虽然它有效,但它似乎很像只是通过重复添加来试图繁殖。所以我要问的是,是否有一种更有效的算法专门用于从一组点创建凸面层
答案 0 :(得分:3)
如果使用monotone chain algorithm,则只需进行一次词典排序。然后可以在O(n)时间内找到每个连续层。这应该比每层的排序更快。
答案 1 :(得分:0)
您可以尝试使用scipy spatial.convexHull
。
或者,我发布了一些code on GitHub。