CGAL:在探索平面地图时使用“标记”类型

CGAL: Using the type `Mark` while exploring a plane map

关于 CGAL::Nef_polyhedron_2<T>::Topological_explorer 的 CGAL 在线文档(请参阅 here)提到了一种类型 Mark 和许多函数,其中 return 是这种类型的一个值:

const Mark &    mark (Vertex_const_handle v)
    returns the mark of v.

const Mark &    mark (Halfedge_const_handle e)
    returns the mark of e.

const Mark &    mark (Face_const_handle f)
    returns the mark of f.

文档说:"Plane maps are attributed, for each object we attribute an information mark(u) of type Mark. Mark fits the concepts assignable, default-constructible, and equal-comparable."

这种类型和值背后的想法是什么?我该如何使用它们?

当你想探索平面地图时,你需要遍历元素(半边and/or顶点and/or面)。例如,您可以使用深度搜索优先算法作为图形遍历。

在这样的遍历过程中,经常需要测试一个元素是否已经被发现。这可以通过一个布尔标记来实现,该标记在发现元素时设置为 true。

默认情况下,在 Nef_2 中,Mark 是一个布尔值,但这可以通过未记录的模板参数进行更改(请参阅 here)。例如,如果要存储发现元素的时间,可以使用 int。

另见 this example