From 7c3e5af35ae8d6917dbb8b6ba40d4b0125c6f84c Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 25 Apr 2017 11:33:13 +0200 Subject: [PATCH] Add is_triangle_mesh test in Surface_mesh_segmentation package --- .../Surface_mesh_segmentation/sdf_values_example.cpp | 5 +++-- .../segmentation_from_sdf_values_OpenMesh_example.cpp | 7 ++++++- .../segmentation_from_sdf_values_SM_example.cpp | 5 +++++ .../segmentation_from_sdf_values_example.cpp | 6 ++++-- .../segmentation_via_sdf_values_example.cpp | 3 ++- .../segmentation_with_facet_ids_example.cpp | 3 ++- 6 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/sdf_values_example.cpp b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/sdf_values_example.cpp index 64ba7ec007b..c9e34d8ec19 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/sdf_values_example.cpp +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/sdf_values_example.cpp @@ -16,8 +16,8 @@ int main() // create and read Polyhedron Polyhedron mesh; std::ifstream input("data/cactus.off"); - if ( !input || !(input >> mesh) || mesh.empty() ) { - std::cerr << "Not a valid off file." << std::endl; + if ( !input || !(input >> mesh) || mesh.empty() || ( !CGAL::is_triangle_mesh(mesh)) ) { + std::cerr << "Input is not a triangle mesh" << std::endl; return EXIT_FAILURE; } @@ -48,4 +48,5 @@ int main() std::cout << sdf_property_map[facet_it] << " "; } std::cout << std::endl; + return EXIT_SUCCESS; } diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_OpenMesh_example.cpp b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_OpenMesh_example.cpp index 1a998b4d7e5..726e7f80f64 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_OpenMesh_example.cpp +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_OpenMesh_example.cpp @@ -27,7 +27,11 @@ int main(int argc, char** argv ) OpenMesh::IO::read_mesh(mesh, argv[1]); else OpenMesh::IO::read_mesh(mesh, "data/cactus.off"); - + + if (!CGAL::is_triangle_mesh(mesh)){ + std::cerr << "Input geometry is not triangulated." << std::endl; + return EXIT_FAILURE; + } std::cout << "#F : " << num_faces(mesh) << std::endl; std::cout << "#H : " << num_halfedges(mesh) << std::endl; std::cout << "#V : " << num_vertices(mesh) << std::endl; @@ -65,4 +69,5 @@ int main(int argc, char** argv ) // Note that we can use the same SDF values (sdf_property_map) over and over again for segmentation. // This feature is relevant for segmenting the mesh several times with different parameters. CGAL::segmentation_from_sdf_values(mesh, sdf_property_map, segment_property_map, number_of_clusters, smoothing_lambda); + return EXIT_SUCCESS; } diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_SM_example.cpp b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_SM_example.cpp index fae0a66cb0e..de86da55a1a 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_SM_example.cpp +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_SM_example.cpp @@ -29,6 +29,10 @@ int main(int argc, char** argv ) std::ifstream cactus("data/cactus.off"); cactus >> mesh; } + if (!CGAL::is_triangle_mesh(mesh)){ + std::cerr << "Input geometry is not triangulated." << std::endl; + return EXIT_FAILURE; + } typedef Mesh::Property_map Facet_double_map; Facet_double_map sdf_property_map; @@ -62,4 +66,5 @@ int main(int argc, char** argv ) // Note that we can use the same SDF values (sdf_property_map) over and over again for segmentation. // This feature is relevant for segmenting the mesh several times with different parameters. CGAL::segmentation_from_sdf_values(mesh, sdf_property_map, segment_property_map, number_of_clusters, smoothing_lambda); + return EXIT_SUCCESS; } diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_example.cpp b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_example.cpp index c73180663ae..9f3b15f4354 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_example.cpp +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_example.cpp @@ -16,8 +16,8 @@ int main() // create and read Polyhedron Polyhedron mesh; std::ifstream input("data/cactus.off"); - if ( !input || !(input >> mesh) || mesh.empty() ) { - std::cerr << "Not a valid off file." << std::endl; + if ( !input || !(input >> mesh) || mesh.empty() || ( !CGAL::is_triangle_mesh(mesh))) { + std::cerr << "Input is not a triangle mesh." << std::endl; return EXIT_FAILURE; } @@ -54,4 +54,6 @@ int main() // This feature is relevant for segmenting the mesh several times with different parameters. CGAL::segmentation_from_sdf_values( mesh, sdf_property_map, segment_property_map, number_of_clusters, smoothing_lambda); + + return EXIT_SUCCESS; } diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_via_sdf_values_example.cpp b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_via_sdf_values_example.cpp index e1782af3dcf..50f490cfeb1 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_via_sdf_values_example.cpp +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_via_sdf_values_example.cpp @@ -16,7 +16,7 @@ int main() // create and read Polyhedron Polyhedron mesh; std::ifstream input("data/cactus.off"); - if ( !input || !(input >> mesh) || mesh.empty() ) { + if ( !input || !(input >> mesh) || mesh.empty() || ( !CGAL::is_triangle_mesh(mesh)) ) { std::cerr << "Not a valid off file." << std::endl; return EXIT_FAILURE; } @@ -37,4 +37,5 @@ int main() std::cout << segment_property_map[facet_it] << " "; } std::cout << std::endl; + return EXIT_SUCCESS; } diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_with_facet_ids_example.cpp b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_with_facet_ids_example.cpp index 5edf77a8ffb..eed988dc016 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_with_facet_ids_example.cpp +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_with_facet_ids_example.cpp @@ -39,7 +39,7 @@ int main() // create and read Polyhedron Polyhedron mesh; std::ifstream input("data/cactus.off"); - if ( !input || !(input >> mesh) || mesh.empty() ) { + if ( !input || !(input >> mesh) || mesh.empty() || ( !CGAL::is_triangle_mesh(mesh)) ) { std::cerr << "Not a valid off file." << std::endl; return EXIT_FAILURE; } @@ -76,4 +76,5 @@ int main() std::cout << segment_property_map[facet_it] << " "; } std::cout << std::endl; + return EXIT_SUCCESS; }