2

OpenMesh 有它的跳过迭代器,它跳过标记为删除的元素。循环器中是否有等价物?我正在考虑将标记为已删除的网格元素视为不再存在的循环器。请注意,这并不像使用现有循环器并测试元素是否被标记为删除那么简单,因为这没有考虑到删除可能导致的拓扑变化(相邻元素、连接元素等)。

4

2 回答 2

2

循环器使用网格连通性(如此处所述)在元素附近行走。当使用通常的 API(例如delete_vertexdelete_edgedelete_face)删除网格元素时,这些元素将被标记为已删除,并且连接性会更新,以使已删除的元素不再可访问。通过构造,循环器无法到达已删除的元素,因此不需要区分跳过/非跳过循环器。

循环器相比,迭代器不使用网格连接,而是简单地迭代所有元素的列表(在被调用之前可以包含已删除的元素)。garbage_collection因此,存在迭代器的跳过/非跳过变体,它们可以排除或包含已删除的元素。

于 2020-10-23T07:41:34.687 回答
0

实际上,OpenMesh 在默认情况下似乎正是这样做的。标记为删除的元素被视为好像它们不存在于循环器中。

于 2020-10-22T18:05:52.347 回答