用Python构造三维数据表面数据的三角网格

时间:2012-02-23 23:07:23

标签: python 3d mesh triangular

我有一个三维点的数据集,我想用python构建一个网格。我见过的所有软件都要求你提供优势。在python中是否有一个程序将3D中的一组点作为输入并输出一组三角形网格?如果可能的话,我希望网格是均匀的。

谢谢你, - Eli。

2 个答案:

答案 0 :(得分:1)

如果这些点代表一个曲面,你可以使用@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' ) ;

Delaunay triangulation

从那里,通过simplices对象的tri属性访问三角形或单纯形。例如,tri.simplices[0]引用第一个三角形或单纯形,它返回一个包含三个整数的数组,比如[ 10, 0, 5 ]。这意味着构成第一个单形的点在阵列data中的索引10,0和5处找到。

答案 1 :(得分:0)

我不知道你可以在python中使用现有的java库是多么容易,但是Jzy3d可以帮助你从点生成网格:有一个正交的tesselator用于基于站在常规网格上的点的输入,和一个未知点结构的delaunay tesselator。 (免责声明:我是作者)