我從投影到二維平面的3D模型中獲得了一堆重疊的三角形。我需要將觸摸三角形的每個島合併爲一個封閉的非凸多邊形。將重疊的三角形合併爲一個多邊形
結果多邊形不應該有任何洞(因爲源數據沒有)。
許多源三角形與源數據中的其他三角形共享(浮點相同)邊。
這樣做最簡單的方法是什麼?性能不是特別重要,因爲這將在設計時完成。
我從投影到二維平面的3D模型中獲得了一堆重疊的三角形。我需要將觸摸三角形的每個島合併爲一個封閉的非凸多邊形。將重疊的三角形合併爲一個多邊形
結果多邊形不應該有任何洞(因爲源數據沒有)。
許多源三角形與源數據中的其他三角形共享(浮點相同)邊。
這樣做最簡單的方法是什麼?性能不是特別重要,因爲這將在設計時完成。
想象投影到一個平面上的模型的「視圖」(即投影的方向是視線,並且所述突出部你看到的)。在這種情況下,要計算的多邊形的邊界對應於模型的輪廓。
輪廓反過來是模型中的一組邊。對於輪廓中的每個邊緣,相鄰的面都將具有法線,該法線指向遠離平面或朝向平面。您可以檢查這是將面法線的點積與平面法線相乘 - 查找相鄰面法線具有與投影方向相反符號的點積的邊。
一旦你找到了所有的輪廓邊,你可以將它們連接在一起進入所需多邊形的邊界。
一般情況下,你可以通過google搜索術語如mesh silouette finding detection
找到更多關於輪廓檢測和提取。也許一個好的開始是here。
我也發現這個[1]方法,我將在下一步嘗試。
參見「複雜的多邊形的聯盟」:http://stackoverflow.com/questions/2667748/union-of-complex-polygons – unutbu 2010-05-12 19:50:30