gpt4 book ai didi

numpy - 如何确定一个点是位于 ConvexHull 的内部还是外部?

转载 作者:行者123 更新时间:2023-12-03 11:05:25 25 4
gpt4 key购买 nike

我在 numpy 中有一组点,我通过 (scipy.spatial.ConvexHull 而不是 scipy.spatial.Delaunay.convex_hull) 计算它们的 ConvexHull,现在我想知道我是否向我的数组添加新点是这个点位于点云与否?在 numoy 中最好的方法是什么?

我应该提到我看到了这个 question它没有解决我的问题 (因为它使用 cipy.spatial.Delaunay.convex_hull 来计算 ConvexHull)

最佳答案

我知道这个问题很老,但如果有人像我一样发现它,这里是答案:
我正在使用 scipy 1.1.0 和 python 3.6

def isInHull(P,hull):
'''
Datermine if the list of points P lies inside the hull
:return: list
List of boolean where true means that the point is inside the convex hull
'''
A = hull.equations[:,0:-1]
b = np.transpose(np.array([hull.equations[:,-1]]))
isInHull = np.all((A @ np.transpose(P)) <= np.tile(-b,(1,len(P))),axis=0)

这里我们使用所有计划的方程来确定该点是否在船体外。我们从不构建 Delaunay 对象。该函数将 n 维中 m 个点的数组作为输入 P mxn。船体是用
hull = ConvexHull(X)

其中 X 是 p 个点的 pxn 数组,这些点构成了应该在其上构建凸包的点云。

关于numpy - 如何确定一个点是位于 ConvexHull 的内部还是外部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21698630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com