CGAL:与半边关联的分面的输出 ID

CGAL: Output ID of facet associated to halfedge

本文关键字:输出 ID 关联 CGAL      更新时间:2023-10-16
这可能是

一个很小的问题,但我真的很想知道为什么它不起作用。我正在尝试输出与每个半边关联的分面 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 输出是如何弄乱代码的。

我知道我也可以迭代分面(这工作正常(,但我需要半边<>分面关联。

我正在使用 CGAL::P olyhedron_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++;
  }
}

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