我有一个三维点的数据集,我想用python构建一个网格。我见过的所有软件都要求您提供边缘。在python中有一个程序是以3D中的一组点为输入并输出一组三角网格?如果可能的话,我希望网格一致。在Python中为三维数据表面数据构造三角网格
谢谢, - Eli。
我有一个三维点的数据集,我想用python构建一个网格。我见过的所有软件都要求您提供边缘。在python中有一个程序是以3D中的一组点为输入并输出一组三角网格?如果可能的话,我希望网格一致。在Python中为三维数据表面数据构造三角网格
谢谢, - Eli。
我不知道你可以如何轻松地在python中使用现有的java库,但Jzy3d可能会帮助你从点生成网格:有一个正交tesselator输入基于点站在一个规则的网格和delaunay tesselator为未知点结构。 (免责声明:我是作者)
如果这些点代表一个表面,您可以使用@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') ;
从那里,tirangles,或simplicies,通过tri
对象的属性simplices
访问。例如,tri.simplices[0]
引用第一个三角形或单形,并返回一个由三个整数组成的数组,例如[ 10, 0, 5 ]
。这意味着构成第一个单纯形的点可以在索引10,0和5中找到,数组为data
。
我有同样的问题,如果任何人的答案..我已经设置了三维点由point3f和彩色color4f具有透明度逐点。这些点通过放入3D空间(j3dApplet)表示3D图像。
点代表的是表面还是体积?我曾经用delaunay三角测量做过一次,但它首先需要在飞机上投射点。 – wim 2012-02-23 23:16:30
只是想,我会提及未来的参考,[scicomp.SE]是这样的问题的好地方。 – 2012-02-23 23:50:23
点代表一个表面。投射到飞机上运行良好吗? – Eliezer 2012-02-24 17:25:37