Python Scipy 获取3D凸包的边界

2 投票
1 回答
1640 浏览
提问于 2025-04-18 08:21

我使用了 Scipy Delaunay 来计算一组点的三维凸包,现在我想要获取所有外部面的列表(由3个点定义的三角形),有没有人知道怎么获取这些信息?谢谢!

代码:

import scipy.spatial
import numpy as np
import csv
"""loading colors"""

colors = np.array([(XYZRGB(rank, name, X, Y, Z))
                  for rank, name, X, Y, Z in csv.reader(open('colorshort.csv'))])

"""doing geometry"""

tri = scipy.spatial.Delaunay(colors[:,[2,3,4]], furthest_site=False)
# Delaunay triangulation
indices = tri.simplices
# indices of vertices
vertices = colors[indices]
# the vertices for each tetrahedron

1 个回答

4

如果你查看一下 help(tri),你会看到一个关于 tri 的所有属性的列表。我觉得你要找的属性是 tri.convex_hull,它会给出属于凸包的点的索引。所以要获取实际的顶点,你可以使用下面的代码:

colors[tri.convex_hull]

撰写回答