【发布时间】:2018-11-26 01:33:48
【问题描述】:
打开图片查看以下代码的结果
import numpy as np
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
points = np.array([[1,1],[1,2],[1,3],[1,4],[2,1],[2,2],[2,3],[2,4],[3,1],[3,2],[3,3],[3,4],[4,1],[4,2],[4,3],[4,4]])
hull = ConvexHull(points)
plt.plot(points[:,0], points[:,1], 'o')
for simplex in hull.simplices:
plt.plot(points[simplex, 0], points[simplex, 1], 'k-')
plt.plot(points[simplex,0], points[simplex,1], 'ro', alpha=.25, markersize=20)
我想获取凸包上点的坐标索引(黑色+线上的点)。我选择矩形只是为了得到一个极端情况。
hull.points只能给出标记为红色的点(只有矩形的角点)。
【问题讨论】:
-
您可以连接连续的“红色”标记点来创建凸多边形。然后对于每个点,您可以检查它是否位于任何一侧。
-
@RoryDaulton 是的,我想返回凸包边界上的所有点。有一个错字,应该是 hull.points 。我的凸包不是矩形,但有几个点在直线上,当我使用 hull.points 时被排除在外。我做了一个小程序来举例说明这种情况在那里。
-
@RishitSanmukhani 我有一个凸包,我使用红点来表示我调用 hull.points 时得到的点。但我想要边界上的所有点。
-
@SanketChafle 这就是我写的。 “红色”标记点 == hull.points。使用 hull.points 创建凸多边形。
标签: python convex-hull convex-polygon qhull