diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/curvature_flow_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/curvature_flow_example.cpp index 5caf2c80a17..0b281e7e668 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/curvature_flow_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/curvature_flow_example.cpp @@ -5,17 +5,43 @@ #include #include +#include typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Surface_mesh Mesh; +typedef typename Mesh::vertex_index vertex_index; +typedef typename Mesh::face_index face_index; +typedef typename Mesh::halfedge_index halfedge_index; + +std::set select(Mesh mesh, double x0) +{ + std::set f_selection; + + typedef typename boost::property_map::type VertexPointMap; + VertexPointMap vpmap = get(CGAL::vertex_point, mesh); + + + for(face_index f : faces(mesh)) + { + halfedge_index he = halfedge(f, mesh); + for(vertex_index v : vertices_around_face(he, mesh)) + { + if(get(vpmap, v).x() < x0) + f_selection.insert(f); + continue; + } + } + + return f_selection; +} int main(int argc, char* argv[]){ - const char* filename = "data/curved_polygon.off"; + const char* filename = "data/sphere.off"; std::ifstream input(filename); Mesh mesh; @@ -24,13 +50,23 @@ int main(int argc, char* argv[]){ return 1; } + std::cout<<"all faces: "< selected_faces = select(mesh, 0); + std::cout<<"selected faces: "<