Structure en demi-arête (half-edge)

Encode les arêtes successives Faces se retrouvent comme une boucle le long d'arêtes
Intérêt:
Limites:
assets/halfedge.webp
assets/angles.webp
typedef CGAL::Cartesian<double> Kernel;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;

int main() {
    Polyhedron mesh;
    std::ifstream stream("mesh.off");
    stream >> mesh;

    auto it_face = mesh.facets_begin();
    auto it_face_end = mesh.facets_end();

    int face_number=0;
    for(;it_face!=it_face_end;++it_face){
        std::cout << "Face " << face_number << std::endl;
        auto halfedge = it_face->halfedge();
        auto const halfedge_end = halfedge;
        do{
            const auto p = halfedge->vertex()->point();
            std::cout << p << std::endl;
            halfedge = halfedge->next();
        }while(halfedge != halfedge_end);

        face_number++;
    }
}