2017-08-11 94 views
-1

即時使用Mesh庫處理以創建基於點陣列的三角形網格。 我的問題是,這個庫只能返回組成三角形的線條而不是三角形本身。 沒有人知道如何獲得所有的三角形?找到線陣列中的所有三角形(Delaunay圖)

庫是在這裏:http://leebyron.com/mesh/

and here's a picture for refrence

+0

您是否嘗試過使用Google將「將線條集轉換爲三角形」來查找可能對您有幫助的算法?當你嘗試他們時發生了什麼? –

+0

我找不到任何東西不會永存...... –

+0

我想要一個不同的圖書館或許 –

回答

0

好問題。首先,解決方案是採取可以給你想要的格式的圖書館。你需要 Delaunay三角剖分而不是Delaunay圖,這個庫提供了什麼。

可以從結果庫中獲取三角形提供很簡單。如果內部圖示點具有邊緣(getLinked()方法),則比它是n三角形的一部分。三角形的其他邊由 按角度分類。如果點是外(在凸包上)比一對邊之間的角度大於180度,那麼這對三角形不存在。

算法是這樣的:

for each point p1: 
    neighbours = delaunay.getLinked(p1) 
    sort neighbours by angle to point p1 
    for i=0 to size(neighbours) 
    p2 = neighbours[i] 
    p3 = neighbours[(i+1) % size(neighbours)] 
    if (angle(p3, p1) - angle(p2, p1)) % 360deg > 180deg: 
     continue # Outer triangle 
    if p2 > p1 and p3 > p1: 
     continue # Already processed 
    print result triangle (p1, p2, p3) 

檢查(P2,P3> P1)是去除相同trinagles,由於每個三角形產生三次。