2013-06-25 23 views
3

所以我想知道在CGAL Delaunay三角會發生什麼,當你調用鄰居功能是不存在的鄰居。在文檔(HERE)就這樣說:CGAL:輸出從鄰居當三角形有沒有

The neighbor with index i is the neighbor which is opposite to the vertex with index i. 

Face_handle f.neighbor (int i) const //returns the neighbor i of f. 
             //Precondition:  0 ≤ i ≤ 2. 

但並不是所有的三角形可以有3個鄰居。邊角和三角形只會鄰居2.鑑於它現在必須返回一個Face_handle,那麼對於不存在的鄰居會發生什麼?也許它會是NULL?我該如何檢查?

我期待這樣做是因爲我想,以確定在Delaunay三角所有邊三角形的原因。能夠檢查具有2個或更少鄰居的三角形將非常有用。

任何想法?

+0

既然你說的「邊角三角」,我相信你需要重新讀CGAL的文檔,以瞭解他們所謂的三角測量。 –

回答

2

請參閱the documentation

CGAL引入了一個無限頂點,因此每個「邊界邊緣」具有附加的鄰居,這是您的邊緣的兩個頂點和無限頂點構成的無限三角形。

+0

真棒,現在有沒有辦法測試一個無限頂點的鄰居?或者是通過循環遍歷每個三角形鄰居並查看頂點以查看它們是否無限? –

+0

@Ben查看上面鏈接中的第一個示例代碼。無限頂點可以通過'myTriangulation.infinite_vertex()'來訪問,所以你可以檢查一個給定的面是否包含它。 – Boris

+0

謝謝,更好的解決方案是三角測量類型檢查無限面,所以我可以去:'delaunay.is_infinite(face_iterator-> neighbor(0))'檢查每個三角形周圍的面部。你的幫助非常好。 –