Python 在scipy.spatial.Delaunay中,find_simplex()方法返回什么?
我需要找出我的一些点是在凸包内还是在凸包外,我使用的答案是:() 但是当我测试它时,返回的数组有点混乱。例如,如果我创建两个相同的阵列,使用其中一个来创建外壳,然后测试第二个阵列的点是否在该外壳中,我得到以下结果:Python 在scipy.spatial.Delaunay中,find_simplex()方法返回什么?,python,scipy,convex-hull,Python,Scipy,Convex Hull,我需要找出我的一些点是在凸包内还是在凸包外,我使用的答案是:() 但是当我测试它时,返回的数组有点混乱。例如,如果我创建两个相同的阵列,使用其中一个来创建外壳,然后测试第二个阵列的点是否在该外壳中,我得到以下结果: from scipy.spatial import Delaunay pts_outer = np.array([[0, 0], [0, 5], [5, 0], [5, 5]]) pts_inner = pts_outer hull = Delaunay(pts_outer) hul
from scipy.spatial import Delaunay
pts_outer = np.array([[0, 0], [0, 5], [5, 0], [5, 5]])
pts_inner = pts_outer
hull = Delaunay(pts_outer)
hull.find_simplex(pts_inner)
Out[29]: array([0, 0, 1, 1], dtype=int32)
该方法的文档只说它返回:“包含每个点的简单图索引。三角剖分之外的点的值为-1”
我知道1
是船体内部的点,-1
是船体外部的点,但是什么是0?它是位于船体边界上的点吗?但是为什么只有两点呢?应该是他们所有人
如果我稍微修改测试阵列:
pts_inner = np.array([[0, 0], [0, 5], [5, -1], [5, 5]])
hull.find_simplex(pts_inner)
Out[31]: array([ 0, 0, -1, 0], dtype=int32)
前两个点得到了相同的指数,第三个点得到了一个-1,正如计划的那样,但第四个点由于某种原因已更改为0,即使船体和点完全相同
有人知道如何解释这些结果吗;dr:它返回包含该点的三角形的索引。如果有多个三角形包含索引,它并不总是选择相同的索引 我想你误解了“它返回:包含每个点的单形索引。三角剖分之外的点的值为-1。” 我的解释是,
Delaunay(pts_outer)
分别用索引0和1对矩形进行三角化。然后hull.find_simplex(pts_inner)
retrunning[0,0,1,1]
表示前两点位于三角形0中,后两点位于三角形1中
最后有点奇怪的是,
find_simplex
现在告诉你你的点[5,5]
在三角形1中。但这并不是不正确的,因为点[5,5]
在两个三角形中。哦,太酷了!谢谢你!我完全误解了文件。现在这让事情变得容易了。关于第4点为什么会改变指数,我仍然感到困惑,但只要不是“-1”,我就不在乎。