From e4ec4a2c1f6f5140f51437f766f1fd579cb8213f Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 13 Mar 2023 17:01:14 +0100 Subject: [PATCH] Subdivision: Add example for Linear_mask_3 --- .../doc/Subdivision_method_3/examples.txt | 1 + .../Linear_subdivision.cpp | 34 +++++++++++++++++++ .../subdivision_masks_3.h | 2 +- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 Subdivision_method_3/examples/Subdivision_method_3/Linear_subdivision.cpp diff --git a/Subdivision_method_3/doc/Subdivision_method_3/examples.txt b/Subdivision_method_3/doc/Subdivision_method_3/examples.txt index 4cf879d4d09..06021185bf7 100644 --- a/Subdivision_method_3/doc/Subdivision_method_3/examples.txt +++ b/Subdivision_method_3/doc/Subdivision_method_3/examples.txt @@ -2,6 +2,7 @@ \example Subdivision_method_3/Customized_subdivision.cpp \example Subdivision_method_3/CatmullClark_subdivision.cpp \example Subdivision_method_3/DooSabin_subdivision.cpp +\example Subdivision_method_3/Linear_subdivision.cpp \example Subdivision_method_3/Loop_subdivision.cpp \example Subdivision_method_3/Sqrt3_subdivision.cpp */ diff --git a/Subdivision_method_3/examples/Subdivision_method_3/Linear_subdivision.cpp b/Subdivision_method_3/examples/Subdivision_method_3/Linear_subdivision.cpp new file mode 100644 index 00000000000..fe7a8e317e6 --- /dev/null +++ b/Subdivision_method_3/examples/Subdivision_method_3/Linear_subdivision.cpp @@ -0,0 +1,34 @@ +#include + +#include +#include + +#include + +#include +#include + +typedef CGAL::Simple_cartesian Kernel; +typedef CGAL::Surface_mesh Surface_mesh; + +namespace PMP = CGAL::Polygon_mesh_processing; + +int main(int argc, char* argv[]) { + + const std::string filename = (argc > 1) ? argv[1] : CGAL::data_file_path("meshes/cube_quad.off"); + + Surface_mesh mesh; + if(!PMP::IO::read_polygon_mesh(filename, mesh)) + { + std::cerr << "Invalid input." << std::endl; + return 1; + } + + CGAL::Linear_mask_3 mask(&mesh); + CGAL::Subdivision_method_3::PQQ(mesh, mask, CGAL::parameters::number_of_iterations(2)); + + std::ofstream out("out.off"); + out << mesh; + + return 0; +} diff --git a/Subdivision_method_3/include/CGAL/Subdivision_method_3/subdivision_masks_3.h b/Subdivision_method_3/include/CGAL/Subdivision_method_3/subdivision_masks_3.h index a65d68323db..5a2e56911ae 100644 --- a/Subdivision_method_3/include/CGAL/Subdivision_method_3/subdivision_masks_3.h +++ b/Subdivision_method_3/include/CGAL/Subdivision_method_3/subdivision_masks_3.h @@ -88,7 +88,7 @@ public: public: Linear_mask_3(Mesh* pmesh) - : Base(pmesh, get(vertex_point, pmesh)) + : Base(pmesh, get(vertex_point, *pmesh)) { } Linear_mask_3(Mesh* pmesh, VertexPointMap vpmap)