#include #include #include #include #include #include typedef CGAL::Simple_cartesian Kernel; typedef CGAL::Linear_cell_complex_traits<3, Kernel> LCC_traits; typedef CGAL::Linear_cell_complex_for_bgl_combinatorial_map_helper <2, 3, LCC_traits>::type LCC; typedef boost::graph_traits GraphTraits; typedef GraphTraits::vertex_descriptor vertex_descriptor; typedef CGAL::Halfedge_around_target_iterator halfedge_around_target_iterator; template OutputIterator adjacent_vertices_V1(const LCC& g, vertex_descriptor vd, OutputIterator out) { typename GraphTraits::halfedge_descriptor hb = halfedge(vd,g), done(hb); do { *out++ = source(hb,g); hb = opposite(next(hb,g),g); } while(hb!= done); return out; } template OutputIterator adjacent_vertices_V2(const LCC& g, vertex_descriptor vd, OutputIterator out) { halfedge_around_target_iterator hi, he; for(std::tie(hi, he) = halfedges_around_target(halfedge(vd,g),g); hi != he; ++hi) { *out++ = source(*hi,g); } return out; } int main(int argc, char** argv) { LCC lcc; CGAL::IO::read_polygon_mesh((argc>1)?argv[1]:CGAL::data_file_path("meshes/cube_poly.off"), lcc); GraphTraits::vertex_iterator vi = vertices(lcc).first; std::list V; adjacent_vertices_V1(lcc, *vi, std::back_inserter(V)); ++vi; adjacent_vertices_V2(lcc, *vi, std::back_inserter(V)); std::cerr << "done\n"; return 0; }