#include #include #include #include #include #include #include #include #include typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; typedef CGAL::Polyhedron_3 Source; typedef boost::graph_traits::vertex_descriptor sm_vertex_descriptor; typedef boost::graph_traits::halfedge_descriptor sm_halfedge_descriptor; typedef boost::graph_traits::face_descriptor sm_face_descriptor; typedef CGAL::Exact_predicates_exact_constructions_kernel Other_kernel; typedef Other_kernel::Point_3 Point; typedef CGAL::Linear_cell_complex_traits<3, Other_kernel> LCC_traits; typedef CGAL::Linear_cell_complex_for_bgl_combinatorial_map_helper <2, 3, LCC_traits>::type LCC; int main(int argc, char* argv[]) { Source S; std::ifstream in((argc>1)?argv[1]:"cube.off"); in >> S; // Note that the vertex_point property of the Source and Target1 // come from different kernels. typedef LCC Target1; Target1 T1; { CGAL::copy_face_graph(S, T1); CGAL::write_off("lcc.off", T1); } S.clear(); { typedef boost::graph_traits::vertex_descriptor source_vertex_descriptor; typedef boost::graph_traits::halfedge_descriptor source_halfedge_descriptor; typedef boost::graph_traits::vertex_descriptor tm_vertex_descriptor; typedef boost::graph_traits::halfedge_descriptor tm_halfedge_descriptor; boost::unordered_map v2v; boost::unordered_map h2h; CGAL::copy_face_graph(T1, S, CGAL::parameters::vertex_to_vertex_output_iterator(std::inserter(v2v, v2v.end())) .halfedge_to_halfedge_output_iterator(std::inserter(h2h, h2h.end()))); std::ofstream out("reverse.off"); out.precision(17); out << S; } return 0; }