2014-02-23 262 views
2

應用delaunay三角剖分法後,是否可以找到每個三角形的面積? matlab中有沒有什麼功能可以做到這一點?請澄清我。先謝謝了Delaunay三角剖分的合成三角形的尋找面積

+3

你可以寫你自己的。檢查['delauny']的輸出(http://www.mathworks.com/help/matlab/ref/delaunay.html)。它給你指數的點數。然後你可以計算三面,並使用[this](http://www.mathsisfun.com/geometry/herons-formula.html)公式。 –

回答

0

這可以用polyarea做 - 注意,使用了dim選項。

tri = delaunay(x,y); 
areas = polyarea(tri(x),tri(y),2); 
1

我面臨同樣的懷疑,但幸運的是,我能破解它,試試這個:

tri = delaunay(x,y); 
areas = polyarea(x(tri'),y(tri'),2); 

這會給你形成每一個三角形的區域。

如果您發現任何問題,請告訴我。

P.S:所述tri'指矩陣的轉置。

+0

嗨... thnx fr回覆...但我有160個三角形。我需要找到所有三角形的面積...我無法得到與上述代碼的答案 – user3260487

+0

嗨, 我不知道爲什麼會這樣,矢量地區將是一個160 * 1向量在你的情況。如果您想要,您可以在工作區中查看相同的內容。 最後,矢量的索引將與tri的索引相同。 如果需要,請隨時詢問:) – Vishu

+0

只是爲了澄清......所有三角形的面積是指每個三角形的面積或所有三角形面積的總和? – Vishu

0

此解決方案有效,但未進行矢量化。

DT = delaunayTriangulation(X,Y); 

NTriangles = size(DT.ConnectivityList,1); 

% Triangles' Area Calculation (Try to vectorize) 
Areas = zeros(NTriangles,1); 
for i = 1:NTriangles 
    PointIndexes = DT.ConnectivityList(i,:); 
    Areas(i) = polyarea(DT.Points(PointIndexes,1),DT.Points(PointIndexes,2)); 
end