2012-02-23 250 views
1

我有一个三维点的数据集,我想用python构建一个网格。我见过的所有软件都要求您提供边缘。在python中有一个程序是以3D中的一组点为输入并输出一组三角网格?如果可能的话,我希望网格一致。在Python中为三维数据表面数据构造三角网格

谢谢, - Eli。

+0

点代表的是表面还是体积?我曾经用delaunay三角测量做过一次,但它首先需要在飞机上投射点。 – wim 2012-02-23 23:16:30

+0

只是想,我会提及未来的参考,[scicomp.SE]是这样的问题的好地方。 – 2012-02-23 23:50:23

+0

点代表一个表面。投射到飞机上运行良好吗? – Eliezer 2012-02-24 17:25:37

回答

0

我不知道你可以如何轻松地在python中使用现有的java库,但Jzy3d可能会帮助你从点生成网格:有一个正交tesselator输入基于点站在一个规则的网格和delaunay tesselator为未知点结构。 (免责声明:我是作者)

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

从那里,tirangles,或simplicies,通过tri对象的属性simplices访问。例如,tri.simplices[0]引用第一个三角形或单形,并返回一个由三个整数组成的数组,例如[ 10, 0, 5 ]。这意味着构成第一个单纯形的点可以在索引10,0和5中找到,数组为data

0

我有同样的问题,如果任何人的答案..我已经设置了三维点由point3f和彩色color4f具有透明度逐点。这些点通过放入3D空间(j3dApplet)表示3D图像。

[email protected]