【发布时间】:2017-04-21 08:57:15
【问题描述】:
我正在使用 scipy 的 ConvexHull 类为一组点构造一个凸包。我对计算新点 P 到凸包的最小距离的方法很感兴趣。
借助互联网和我自己的一些调整,我想出了这个公式来计算一个点 P 或一组点 points 到凸包面:
np.max(np.dot(self.equations[:, :-1], points.T).T + self.equations[:, -1], axis=-1)
对于 2D 中的凸包,上面的等式将得出以下图:
如您所见,对于凸包内的点,结果非常好且正确(此处的距离为负数,需要乘以 -1)。对于最接近小平面的点也是正确的,但对于最接近凸包顶点的点不正确。 (我用虚线标记了这些区域)对于这些点,正确的最小距离是到凸包顶点的最小距离。
如何区分最接近小平面或最接近顶点的点,以正确计算点 P 或一组点 points 到凸包的最小距离 在 n 维空间(至少 3D)中?
【问题讨论】:
-
对每个凸包段使用点到段公式并取最小值
-
@user4421975 您能否详细说明您的评论?什么是分段公式的点?
-
对于每个点,使用stackoverflow.com/questions/849211/…计算它到凸包的每个线段的距离,并取最近的一个
标签: python numpy scipy distance convex-hull