我正在使用scipy的ConvexHull类构建一组点的凸包。我希望找到一种方法来计算一个新点P到凸包的最小距离。
在互联网的帮助下,再加上我的一点调整,我得出了这个公式来计算一个点P或一组点points到凸包面的距离:
np.max(np.dot(self.equations[:, :-1], points.T).T + self.equations[:, -1], axis=-1)
在二维凸包中,上述方程将导致以下图形: 如您所见,对于凸包内的点,结果非常好且正确(这里的距离为负数,需要乘以-1)。对于最靠近一个面的点也是正确的,但对于最靠近凸包顶点的点则不正确(我用虚线标记了这些区域)。对于这些点,正确的最小距离应该是到凸包顶点的最小距离。
如何区分哪些点最接近面或者最接近顶点,以便正确计算在n维空间(至少3D)中一个点P或一组点points到凸包的最小距离?