1. 程式人生 > >網狀迭代器和迴圈器

網狀迭代器和迴圈器

  • OpenMesh還提供所謂的迴圈器,其提供與列舉相同或另一種型別的另一項相鄰的項的方法。
  • 通常,CenterItem_AuxiliaryInformation_TargetItem_Iter指定迴圈器,該迴圈器列舉給定中心項周圍的所有目標項。
  • 迴圈器的構造器具有迴圈器(MeshType mesh,TargetHandle center_handle)的形式,即它採用網格和物品的手柄來迴圈。
  • 常用迴圈器舉例:
  • 雖然可以使用操作符bool(),它返回true,只要迴圈器沒有到達序列的末尾,就不推薦使用此函式。 請改用函式is_valid()。
  • OpenMesh提供以下功能(在OpenMesh :: PolyConnectivity中定義)以獲取指定中心項周圍的迴圈器:
  • 除了普通的迴圈器之外,每個方向都存在一些(順時針方向,逆時針方向)。 那些迴圈器可能比正常迴圈器慢,但迴圈方向是有保證的。
  • 可以將cw迴圈器轉換為ccw迴圈器,反之亦然。 為此,每個迴圈器提供一個建構函式,將另一個迴圈器作為輸入。 如果轉換了一個cw迴圈器,則ccw迴圈器指向與指向的cw迴圈器相同的元件,但增量和減量的方向改變。
  • 從迭代器構造迴圈器時,請確保不要建立已刪除元素的迴圈器(例如,已刪除的Face的FaceVertexiter),因為這將導致不可預測的行為。 使用跳過迭代器迭代元素並從中建立迴圈器是安全的,因為它們不包含已刪除的元素。