OpenMesh 跳过循环器

OpenMesh skipping circulators

OpenMesh 有它的skipping iterators which skips elements marked for deletion. Is there an equivalent in circulators?我在考虑将标记为已删除的网格元素视为不再存在的循环器。 请注意,这不像使用现有的循环器和测试元素是否被标记为删除那么简单,因为这没有考虑删除导致的拓扑变化(相邻元素、连接元素等)。

实际上,OpenMesh 似乎默认就是这样做的。标记为删除的元素被视为循环器中不存在的元素。

Circulators 使用网格连接 (as described here) 在元素的邻域中走动。当使用通常的 API(例如 delete_vertexdelete_edgedelete_face)删除网格元素时,这些元素被标记为已删除,并且更新连接性,以便删除的元素被删除不再可达。通过构造,循环器无法到达已删除的元素,因此无需区分跳过/non-skipping 循环器。

Iterators,与 circulators 相比,不使用网格连接,而是简单地迭代所有元素的列表(其中可以 包含删除的元素,直到 garbage_collection 被调用)。因此,存在迭代器的跳过/non-skipping 变体,它们可以排除或包含已删除的元素。