2014-07-03 70 views
1

(使用Octacve)我有這樣定義三角形頂點的文本文件:解析文本顯示3D三角形

((x11, y11, z11), (x12, y12, z12), (x13, y13, z13))((x21, y21, z21), (x22, y22, z22), (x23, y23, z23))...((xn1, yn1, zn1), (xn2, yn2, zn2), (xn3, yn3, zn3)) 

這是在三維空間中的三角形的列表,其中定義爲((xn1, yn1, zn1)(xn2, yn2, zn2)(xn3, yn3, zn3))每個三角形。

如何在八度中導入此文件以查看生成的網格?我知道我可以使用trimesh,但我無法解析此文件以檢索點座標。

編輯:這是一些三角一個真正的文件:

((-0.780869, -1.56174, 4.68521), (-0.776988, -1.08169, 4.81936), (-0.776988, -2.02627, 4.5045))((-0.776988, -1.08169, 4.81936), (-0.765386, -0.590883, 4.90561), (-0.776988, -2.02627, 4.5045))((-0.776988, -2.02627, 4.5045), (-0.765386, -0.590883, 4.90561), (-0.765386, -2.47066, 4.27902))((-0.765386, -0.590883, 4.90561), (-0.746177, -0.0942074, 4.94311), (-0.765386, -2.47066, 4.27902))((-0.765386, -2.47066, 4.27902), (-0.746177, -0.0942074, 4.94311), (-0.746177, -2.8905, 4.01101))((-0.746177, -0.0942074, 4.94311), (-0.719552, 0.403404, 4.93148), (-0.746177, -2.8905, 4.01101))((-0.746177, -2.8905, 4.01101), (-0.719552, 0.403404, 4.93148), (-0.719552, -3.28161, 3.70314))((-0.719552, 0.403404, 4.93148), (-0.685776, 0.897006, 4.87084), (-0.719552, -3.28161, 3.70314))((-0.719552, -3.28161, 3.70314), (-0.685776, 0.897006, 4.87084), (-0.685776, -3.64011, 3.35847))((-0.685776, 0.897006, 4.87084), (-0.645184, 1.38169, 4.76179), (-0.685776, -3.64011, 3.35847))((-0.685776, -3.64011, 3.35847), (-0.645184, 1.38169, 4.76179), (-0.645184, -3.96243, 2.98042))((-0.645184, 1.38169, 4.76179), (-0.59818, 1.85265, 4.60542), (-0.645184, -3.96243, 2.98042))((-0.645184, -3.96243, 2.98042), (-0.59818, 1.85265, 4.60542), (-0.59818, -4.24537, 2.57274))((-0.59818, 1.85265, 4.60542), (-0.545231, 2.30519, 4.40327), (-0.59818, -4.24537, 2.57274))((-0.59818, -4.24537, 2.57274), (-0.545231, 2.30519, 4.40327), (-0.545231, -4.48612, 2.1395))((-0.545231, 2.30519, 4.40327), (-0.486864, 2.73482, 4.15737), (-0.545231, -4.48612, 2.1395))((-0.545231, -4.48612, 2.1395), (-0.486864, 2.73482, 4.15737), (-0.486864, -4.68228, 1.685))((-0.486864, 2.73482, 4.15737), (-0.423657, 3.13728, 3.87014), (-0.486864, -4.68228, 1.685))((-0.486864, -4.68228, 1.685), (-0.423657, 3.13728, 3.87014), (-0.423657, -4.83191, 1.21375))((-0.423657, 3.13728, 3.87014), (-0.356241, 3.50855, 3.54445), (-0.423657, -4.83191, 1.21375))((-0.423657, -4.83191, 1.21375), (-0.356241, 3.50855, 3.54445), (-0.356241, -4.93351, 0.730433))((-0.356241, 3.50855, 3.54445), (-0.285283, 3.84496, 3.18354), (-0.356241, -4.93351, 0.730433))((-0.356241, -4.93351, 0.730433), (-0.285283, 3.84496, 3.18354), (-0.285283, -4.98609, 0.23986))((-0.285283, 3.84496, 3.18354), (-0.211491, 4.14315, 2.79099), (-0.285283, -4.98609, 0.23986))((-0.285283, -4.98609, 0.23986), (-0.211491, 4.14315, 2.79099), (-0.211491, -4.98911, -0.253097))((-0.211491, 4.14315, 2.79099), (-0.135596, 4.40016, 2.3707), (-0.211491, -4.98911, -0.253097))((-0.211491, -4.98911, -0.253097), (-0.135596, 4.40016, 2.3707), (-0.135596, -4.94255, -0.743539))((-0.135596, 4.40016, 2.3707), (-0.0583544, 4.61344, 1.92684), (-0.135596, -4.94255, -0.743539))((-0.135596, -4.94255, -0.743539), (-0.0583544, 4.61344, 1.92684), (-0.0583544, -4.84686, -1.22659)) 
+0

您可以添加到您的文章(用於測試目的)從文件中的一些真實數據? –

+0

我添加了一些真實的數據(即使它們可能是不規則的三角形。事實上,我需要測試這些三角形是否創建了一些真實的對象)。 – Jepessen

+0

您給出的通用結構和示例的格式不同。在你的通用結構中,頂點不是用逗號分開的,而在它們的例子中。哪一個是該文件的正確格式? –

回答

1

(這是用MATLAB測試,但應該在倍頻工作也沒關係)

爲了解析您可以使用以下的文件功能:

function A = fparse_triangle(fname) 
     f = fopen(fname, 'r'); 
     A = reshape(fscanf(f, '((%f, %f, %f)(%f, %f, %f)(%f, %f, %f))'),3,3,[]); 
     fclose(f); 
end 

其結果將是一個3 Ñ矩陣,上頂點( XÿŽ)的第一索引具有座標,在一個三角形的第二索引具有頂點(第一,第二,第三),並在第三索引具有三角形。

後來編輯

這種替代將在由逗號分隔帳戶的頂點,在最近添加的例子:

function A = fparse_triangle_alt(fname) 
     f = fopen(fname, 'r'); 
     A = reshape(fscanf(f, '((%f, %f, %f), (%f, %f, %f), (%f, %f, %f))'),3,3,[]); 
     fclose(f); 
end 

NB

精神,從這個到一個trimesh調用涉及更多的處理。讓我知道你是否需要幫助。

+0

謝謝,但我得到以下錯誤:'錯誤:重塑:SIZE不能被已知尺寸的產品整除(= 9)' – Jepessen

+0

@Jepessen整個文件的結構是你描述的結構還是其中的一部分?如果它是整個文件的結構,你確定它是正確的(到空格,換行符,製表符等)?如果沒有,你能否給我們一個文件樣本,就像它一樣? –

+0

標題中有一個示例文件。這是沒有空格或換行符。 – Jepessen