我需要找出我的一些观点是在凸包里面还是外面,我用的是这个答案:(在这里输入链接描述)。
但是当我测试它时,返回的数组有点混乱。例如,如果我创建两个相同的数组,使用一个数组创建一个船体,然后测试第二个数组的点是否在该船体中,我得到如下信息:
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,尽管船体和点完全相同。
有人知道如何解释这些结果吗?
发布于 2020-10-12 02:07:53
tl;dr:它返回的索引,一个包含点的三角形。如果有多个三角形,它并不总是选择相同的指数。
我想你误解了“它返回:包含每个点的简单指数。三角剖分之外的点得到值-1。”
我的解释是,Delaunay(pts_outer)用两个三角形分别用0和1对矩形进行三角剖分。然后hull.find_simplex(pts_inner)重调[0, 0, 1, 1]表示你的前两个点是三角形0,第二个两个点是三角形1。
最后,find_simplex现在告诉您点[5, 5]在三角形1中,这有点奇怪,但这并不是不正确的,因为点[5, 5]是在两个三角形中。
https://stackoverflow.com/questions/64310174
复制相似问题