CGAL:与半边相关的构面的输出ID

时间:2019-06-13 12:29:29

标签: c++ cgal

这可能是一个很小的问题,但是我真的很想知道为什么它不起作用。我正在尝试输出与每个半边关联的构面ID。

void MeshModel::printFacetsOfHalfedges() {
  for (Polyhedron::Halfedge_iterator j = P_.halfedges_begin(); j != P_.halfedges_end(); ++j) {
    int id = j->facet()->id();
    std::cout << "Facet is: " << id << std::endl;
  }
}

它以Facet is: 0开头,然后崩溃。如果我删除行std::cout << "Facet is: " << id << std::endl;,则迭代运行良好。我真的很想知道这个简单的int输出如何弄乱代码。

我知道我也可以遍历各个方面(这很好用),但是我需要Halfedge <-> facet关联。

我正在使用CGAL :: Polyhedron_items_with_id_3并在开始时初始化我的构面ID:

void MeshModel::initializeFacetIndices() {
  std::size_t i = 0;
  for (Polyhedron::Facet_iterator facet = P_.facets_begin(); facet != P_.facets_end(); ++facet) {
    facet->id() = i++;
  }
}

1 个答案:

答案 0 :(得分:0)

您需要检查半边距是否不是边界半边距。在这种情况下,j->facet() == Polyhedron::Face_handle()