Это может быть очень маленькая проблема, но мне действительно интересно, почему она не работает. Я пытаюсь вывести идентификатор фасета, связанный с каждым полжонком.
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 :: Polyhedron_items_with_id_3 и инициализирую свои идентификаторы фасетов в начале:
void MeshModel::initializeFacetIndices() {
std::size_t i = 0;
for (Polyhedron::Facet_iterator facet = P_.facets_begin(); facet != P_.facets_end(); ++facet) {
facet->id() = i++;
}
}