我有一个 3 维点的数据集,我想使用 python 为其构建一个网格。我见过的所有软件都需要您提供边缘。python中是否有一个程序将一组3D点作为输入并输出一组三角形网格?如果可能的话,我希望网格是均匀的。
谢谢你, - 伊莱。
我有一个 3 维点的数据集,我想使用 python 为其构建一个网格。我见过的所有软件都需要您提供边缘。python中是否有一个程序将一组3D点作为输入并输出一组三角形网格?如果可能的话,我希望网格是均匀的。
谢谢你, - 伊莱。
如果这些点代表一个表面,您可以按照@wim 的建议使用 Delaunay 三角测量。
import numpy as np
import scipy.spatial
import pylab
data = np.random.random((12,3)) # arbitrary 3D data set
tri = scipy.spatial.Delaunay( data[:,:2] ) # take the first two dimensions
pylab.triplot( data[:,0], data[:,1], tri.simplices.copy() )
pylab.plot( data[:,0], data[:,1], 'ro' ) ;
从那里,可以通过对象的simplices
属性访问三角形或单纯形tri
。例如,tri.simplices[0]
引用第一个三角形或单纯形,它返回一个由三个整数组成的数组,例如[ 10, 0, 5 ]
. 这意味着构成第一个单纯形的点位于数组 中的索引 10、0 和 5 处data
。
我不知道在 python 中使用现有的 java 库有多容易,但Jzy3d可以帮助你从点生成网格:有一个正交镶嵌器用于基于站在规则网格上的点的输入,以及一个用于未知的 delaunay 镶嵌器点结构。(免责声明:我是作者)