2014-08-27 111 views
0

使用CGAL中的2D Arrangements軟件包,在聚合插入大量封閉的,可能相交的曲線後,是否可以快速識別給定閉合曲線內部的哪些面?CGAL Arrangement:曲面中的面

+0

曲線內部的意思是什麼(如果它沒有定義平面的閉合部分)? – sloriot 2014-08-28 05:47:21

+0

我應該提到這一點:所有的曲線都是封閉的。我已經編輯了相應的問題。 – nes 2014-08-28 08:29:20

回答

0

您首先需要有一個布爾每個人臉來知道它是否已被標記(這可以是一個擴展臉型或簡單地std::set)。 您還需要處理一個面的隊列。

然後從無界面開始並將其標記爲已訪問。 對於每個孔,取相反的半邊(跟蹤對應於半邊的曲線內的事實),將面標記爲已訪問並將其添加到隊列中。

對於隊列中的每個面,對於其外邊界的每個半邊,採取相反的半邊。如果相應的臉部尚未標記,則標記它並考慮交叉邊緣。將該面添加到隊列中。當你完成外部邊界時,你可以考慮每個孔一個半邊。

當隊列爲空時,就完成了。

請注意,包含當前面部的曲線需要使用包含該面部的曲面。因此,我建議隊列存儲每個面的一個半邊(這樣可以直接訪問已經處理的包含面)。

+0

這個方法不會忽略[this arrangement]上的中心矩形(http://i.imgur.com/WeDszcR.png)嗎? – nes 2014-08-28 13:00:24

+0

沒錯,那有點幼稚。讓我再嘗試一次 :) – sloriot 2014-08-29 05:55:58