2012-02-23 37 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]