diff --git a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction.cpp b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction.cpp index 72fe1283e2c..7d0922d1a4c 100644 --- a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction.cpp +++ b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction.cpp @@ -14,17 +14,23 @@ #include #include #include -#include #include -#include -#include + +#include +#include +#include +#include +#include +#include + #include -#include #include #include #include #include +#include + #include #include #include @@ -51,10 +57,11 @@ typedef CGAL::Polyhedron_3 Polyhedron; // Poisson implicit function typedef CGAL::Poisson_reconstruction_function Poisson_reconstruction_function; -// Surface mesher -typedef CGAL::Surface_mesh_default_triangulation_3 STr; -typedef CGAL::Surface_mesh_complex_2_in_triangulation_3 C2t3; -typedef CGAL::Poisson_implicit_surface_3 Surface_3; +// Mesh_3 +typedef CGAL::Labeled_mesh_domain_3 Mesh_domain; +typedef typename CGAL::Mesh_triangulation_3::type Tr; +typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; +typedef CGAL::Mesh_criteria_3 Mesh_criteria; // AABB tree typedef CGAL::AABB_face_graph_triangle_primitive Primitive; @@ -309,32 +316,31 @@ int main(int argc, char * argv[]) // conservative bounding sphere centered at inner point. FT sm_sphere_radius = 5.0 * radius; FT sm_dichotomy_error = sm_distance*average_spacing/1000.0; // Dichotomy error must be << sm_distance - Surface_3 surface(function, - Sphere(inner_point,sm_sphere_radius*sm_sphere_radius), - sm_dichotomy_error/sm_sphere_radius); - // Defines surface mesh generation criteria - CGAL::Surface_mesh_default_criteria_3 criteria(sm_angle, // Min triangle angle (degrees) - sm_radius*average_spacing, // Max triangle size - sm_distance*average_spacing); // Approximation error + // Defines generation criteria + Mesh_criteria criteria(CGAL::parameters::facet_angle = sm_angle, + CGAL::parameters::facet_size = sm_radius*average_spacing, + CGAL::parameters::facet_distance = sm_distance*average_spacing); - std::cerr << " make_surface_mesh(sphere center=("<(domain, criteria, + CGAL::parameters::no_exude().no_perturb() + .manifold_with_boundary()); // Prints status + const Tr& tr = c3t3.triangulation(); std::cerr << "Surface meshing: " << task_timer.time() << " seconds, " << tr.number_of_vertices() << " output vertices" << std::endl; @@ -345,7 +351,7 @@ int main(int argc, char * argv[]) // Converts to polyhedron Polyhedron output_mesh; - CGAL::facets_in_complex_2_to_triangle_mesh(c2t3, output_mesh); + CGAL::facets_in_complex_3_to_triangle_mesh(c3t3, output_mesh); // Prints total reconstruction duration std::cerr << "Total reconstruction (implicit function + meshing): " << reconstruction_timer.time() << " seconds\n"; diff --git a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp index 074689607b5..b726fb7db60 100644 --- a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp +++ b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp @@ -3,11 +3,15 @@ #include #include -#include -#include -#include -#include #include + +#include +#include +#include +#include +#include +#include + #include #include #include @@ -31,9 +35,10 @@ typedef Kernel::Sphere_3 Sphere; typedef std::vector PointList; typedef CGAL::Polyhedron_3 Polyhedron; typedef CGAL::Poisson_reconstruction_function Poisson_reconstruction_function; -typedef CGAL::Surface_mesh_default_triangulation_3 STr; -typedef CGAL::Surface_mesh_complex_2_in_triangulation_3 C2t3; -typedef CGAL::Implicit_surface_3 Surface_3; +typedef CGAL::Labeled_mesh_domain_3 Mesh_domain; +typedef CGAL::Mesh_triangulation_3::type Tr; +typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; +typedef CGAL::Mesh_criteria_3 Mesh_criteria; int main(void) { @@ -80,30 +85,29 @@ int main(void) // conservative bounding sphere centered at inner point. FT sm_sphere_radius = 5.0 * radius; FT sm_dichotomy_error = sm_distance*average_spacing/1000.0; // Dichotomy error must be << sm_distance - Surface_3 surface(function, - Sphere(inner_point,sm_sphere_radius*sm_sphere_radius), - sm_dichotomy_error/sm_sphere_radius); // Defines surface mesh generation criteria - CGAL::Surface_mesh_default_criteria_3 criteria(sm_angle, // Min triangle angle (degrees) - sm_radius*average_spacing, // Max triangle size - sm_distance*average_spacing); // Approximation error + Mesh_criteria criteria(CGAL::parameters::facet_angle = sm_angle, + CGAL::parameters::facet_size = sm_radius*average_spacing, + CGAL::parameters::facet_distance = sm_distance*average_spacing); - // Generates surface mesh with manifold option - STr tr; // 3D Delaunay triangulation for surface mesh generation - C2t3 c2t3(tr); // 2D complex in 3D Delaunay triangulation - CGAL::make_surface_mesh(c2t3, // reconstructed mesh - surface, // implicit surface - criteria, // meshing criteria - CGAL::Manifold_with_boundary_tag()); // require manifold mesh + // Defines mesh domain + Mesh_domain domain = Mesh_domain::create_implicit_mesh_domain(function, bsphere, + CGAL::parameters::relative_error_bound(sm_dichotomy_error / sm_sphere_radius)); + // Generates mesh with manifold option + C3t3 c3t3 = CGAL::make_mesh_3(domain, criteria, + CGAL::parameters::no_exude().no_perturb() + .manifold_with_boundary()); + + const Tr& tr = c3t3.triangulation(); if(tr.number_of_vertices() == 0) return EXIT_FAILURE; // saves reconstructed surface mesh std::ofstream out("kitten_poisson-20-30-0.375.off"); Polyhedron output_mesh; - CGAL::facets_in_complex_2_to_triangle_mesh(c2t3, output_mesh); + CGAL::facets_in_complex_3_to_triangle_mesh(c3t3, output_mesh); out << output_mesh;