#include #include #include #include #include #include #include // Domain typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Labeled_image_mesh_domain_3 Mesh_domain; // Triangulation #ifdef CGAL_CONCURRENT_MESH_3 typedef CGAL::Mesh_triangulation_3< Mesh_domain, CGAL::Kernel_traits::Kernel, // Same as sequential CGAL::Parallel_tag // Tag to activate parallelism >::type Tr; #else typedef CGAL::Mesh_triangulation_3::type Tr; #endif typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; // Mesh Criteria typedef CGAL::Mesh_criteria_3 Mesh_criteria; // To avoid verbose function and named parameters call using namespace CGAL::parameters; int main() { // Domain CGAL::Image_3 image; image.read("data/liver.inr.gz"); Mesh_domain domain(image); // Mesh criteria Mesh_criteria criteria(facet_angle=30, facet_size=5, facet_distance=1.5, cell_radius_edge_ratio=2, cell_size=7); // Mesh generation and optimization in one call (sliver_bound is the // targeted dihedral angle in degree) C3t3 c3t3 = CGAL::make_mesh_3(domain, criteria, no_exude(), perturb(sliver_bound=10, time_limit=15)); // Mesh generation and optimization in several call C3t3 c3t3_bis = CGAL::make_mesh_3(domain, criteria, no_perturb(), no_exude()); CGAL::perturb_mesh_3(c3t3_bis, domain, time_limit=15); // Output std::ofstream medit_file("out.mesh"); c3t3.output_to_medit(medit_file); std::ofstream medit_file_bis("out_bis.mesh"); c3t3_bis.output_to_medit(medit_file_bis); return 0; }