在 scipy.spatial.Delaunay 中,find_simplex() 方法 return 是什么?
In scipy.spatial.Delaunay what does find_simplex() method return?
我需要确定我的一些点是在凸包内部还是外部,我使用的是这个答案:(enter link description here).
但是当我测试它时,返回的数组有点混乱。例如,如果我创建两个相同的数组,使用一个创建一个船体,然后测试第二个点是否在该船体中,我得到以下结果:
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)
该方法的文档仅说明它 returns:“包含每个点的单纯形索引。三角剖分之外的点的值为 -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,即使两个船体和点完全一样
有人知道如何解释这些结果吗?
tl;dr:它 returns 包含该点的 a 三角形的索引。如果有多个包含它的三角形,它并不总是选择相同的索引。
我认为您误解了“它 returns:Indices 包含每个点的单纯形。三角剖分之外的点的值为 -1。”
我的解释是 Delaunay(pts_outer)
用 two triangles 分别用索引 0 和 1 对矩形进行三角剖分。然后 hull.find_simplex(pts_inner)
重新计算 [0, 0, 1, 1]
意味着你的前两个点在三角形 0 中,第二个点在三角形 1 中。
最后有点奇怪的是 find_simplex
现在告诉你你的点 [5, 5]
在三角形 1 中。但这是不正确的,因为点 [5, 5]
在两个三角形中。
我需要确定我的一些点是在凸包内部还是外部,我使用的是这个答案:(enter link description here).
但是当我测试它时,返回的数组有点混乱。例如,如果我创建两个相同的数组,使用一个创建一个船体,然后测试第二个点是否在该船体中,我得到以下结果:
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)
该方法的文档仅说明它 returns:“包含每个点的单纯形索引。三角剖分之外的点的值为 -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,即使两个船体和点完全一样
有人知道如何解释这些结果吗?
tl;dr:它 returns 包含该点的 a 三角形的索引。如果有多个包含它的三角形,它并不总是选择相同的索引。
我认为您误解了“它 returns:Indices 包含每个点的单纯形。三角剖分之外的点的值为 -1。”
我的解释是 Delaunay(pts_outer)
用 two triangles 分别用索引 0 和 1 对矩形进行三角剖分。然后 hull.find_simplex(pts_inner)
重新计算 [0, 0, 1, 1]
意味着你的前两个点在三角形 0 中,第二个点在三角形 1 中。
最后有点奇怪的是 find_simplex
现在告诉你你的点 [5, 5]
在三角形 1 中。但这是不正确的,因为点 [5, 5]
在两个三角形中。