为了账号安全,请及时绑定邮箱和手机立即绑定

在 scipy.spatial.Delaunay 中 find_simplex() 方法返回什么?

在 scipy.spatial.Delaunay 中 find_simplex() 方法返回什么?

四季花海 2023-10-31 14:36:42
我需要找出我的一些点是在凸包内部还是外部,我正在使用这个答案:(在此处输入链接描述)。但是当我测试它时,返回的数组有点令人困惑。例如,如果我创建两个相同的数组,使用一个数组创建一个船体,然后测试第二个数组的点是否在该船体中,我会得到以下结果:from scipy.spatial import Delaunaypts_outer = np.array([[0, 0], [0, 5], [5, 0], [5, 5]])pts_inner = pts_outerhull = 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,即使船体和点完全相同。有谁知道如何解释这些结果?
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

它返回包含该点的三角形的索引。如果有多个三角形包含相同的索引,它并不总是选择相同的索引。

我认为您误解了“它返回:包含每个点的单纯形的索引。三角剖分之外的点的值为-1。”

我的解释是用两个Delaunay(pts_outer)三角形对矩形进行三角剖分,两个三角形的索引分别为 0 和 1。然后hull.find_simplex(pts_inner)重新调整[0, 0, 1, 1]意味着前两个点位于三角形 0 中,后两个点位于三角形 1 中。

最后,有点奇怪的是,find_simplex现在告诉您您的点[5, 5]位于三角形 1 中。但这并不是不正确,因为该点[5, 5]位于两个三角形中。


查看完整回答
反对 回复 2023-10-31
  • 1 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信