这可能是一个很小的问题,但是我真的很想知道为什么它不起作用。我正在尝试输出与每个半边关联的构面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++;
}
}
答案 0 :(得分:0)
您需要检查半边距是否不是边界半边距。在这种情况下,j->facet() == Polyhedron::Face_handle()