OpenMesh跳过循环器

问题描述

OpenMesh的skipping iterators会跳过标记删除的元素。 circulators中是否有对应词?我正在考虑使用循环器,将标记为已删除的网格元素视为不再存在。 请注意,这并不像使用现有循环器并测试某个元素是否标记删除那样简单,因为这并未考虑到删除可能导致的拓扑变化(相邻元素,连接的元素等)。>

解决方法

环行器使用网格连接(as described here)在元素附近徘徊。当使用常规API(例如delete_vertexdelete_edgedelete_face)删除网格元素时,这些元素会被标记为已删除,并且连接性也会更新,以使删除的元素不再可用。通过构造,循环器无法到达已删除的元素,因此不需要跳过/不跳过循环器。

循环器相反,

迭代器不使用网格连接,而只是遍历所有元素的列表(可以包含已删除的元素,直到调用garbage_collection为止)。因此,存在迭代器的跳过/非跳过变体,它们排除或包括已删除的元素。

,

实际上,默认情况下,OpenMesh看起来确实可以做到这一点。标记为删除的元素被视为循环器中不存在。