2017-08-25 103 views
0
  1. remove_face方法是否更改網格索引?

我得到一個分段錯誤與此代碼:CGAL表面網格 - 去除表面

 auto face_iterator = m.faces_around_target(m.halfedge(v3)); 

      for (auto i=face_iterator.begin(); i!=face_iterator.end(); i++) { 
       m.remove_face(*i); 
      } 

根據我的文檔的理解,只要我不叫collect_garbage的臉都是唯一標記爲刪除。因此指數沒有變化。發生什麼事?

  1. 做remove_face,也刪除臉halfedges \使它們指向null_face?它似乎並沒有這樣做,我不明白爲什麼不..

謝謝。

回答

0

臉確實是簡單地標記爲刪除,但它的迭代器是通過去除無效(請記住,迭代器也僅限於非移除的元素)。

doc所述:在不調整任何內容的情況下將面f從半邊數據結構中移除。 您需要使用更高級別的功能,例如CGAL::Euler::remove_face()

+0

謝謝! CGAL :: Euler正是我所需要的。結束了使用CGAL :: Euler :: remove_center_vertex(),它完美的工作! – AmirB