diff --git a/AABB_tree/benchmark/AABB_tree/CMakeLists.txt b/AABB_tree/benchmark/AABB_tree/CMakeLists.txt index b6ae8fdc0e2..63ac01c5851 100644 --- a/AABB_tree/benchmark/AABB_tree/CMakeLists.txt +++ b/AABB_tree/benchmark/AABB_tree/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(AABB_traits_benchmark) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core) diff --git a/AABB_tree/demo/AABB_tree/CMakeLists.txt b/AABB_tree/demo/AABB_tree/CMakeLists.txt index 46b13f3b1c6..b276517937e 100644 --- a/AABB_tree/demo/AABB_tree/CMakeLists.txt +++ b/AABB_tree/demo/AABB_tree/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling the AABB tree demo. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(AABB_tree_Demo) # Find includes in corresponding build directories diff --git a/AABB_tree/examples/AABB_tree/CMakeLists.txt b/AABB_tree/examples/AABB_tree/CMakeLists.txt index 58b03fa05b8..620a79dccdb 100644 --- a/AABB_tree/examples/AABB_tree/CMakeLists.txt +++ b/AABB_tree/examples/AABB_tree/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(AABB_tree_Examples) find_package(CGAL REQUIRED) diff --git a/AABB_tree/test/AABB_tree/CMakeLists.txt b/AABB_tree/test/AABB_tree/CMakeLists.txt index becdb86c4e4..72cd7d066a2 100644 --- a/AABB_tree/test/AABB_tree/CMakeLists.txt +++ b/AABB_tree/test/AABB_tree/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(AABB_tree_Tests) find_package(CGAL REQUIRED) diff --git a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt index 5e2d3c7b148..3378a510767 100644 --- a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt +++ b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Advancing_front_surface_reconstruction_Examples) find_package(CGAL REQUIRED) diff --git a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/reconstruction_structured.cpp b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/reconstruction_structured.cpp index 9e0e50ade61..fab4974fa27 100644 --- a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/reconstruction_structured.cpp +++ b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/reconstruction_structured.cpp @@ -126,7 +126,7 @@ int main (int argc, char* argv[]) Efficient_ransac ransac; ransac.set_input(points); - ransac.add_shape_factory(); // Only planes are useful for stucturing + ransac.add_shape_factory(); // Only planes are useful for structuring // Default RANSAC parameters Efficient_ransac::Parameters op; diff --git a/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt b/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt index 738c7ccf1a1..27973a058d8 100644 --- a/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt +++ b/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Advancing_front_surface_reconstruction_Tests) find_package(CGAL REQUIRED) diff --git a/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt b/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt index 8be9b498332..186e8a01b2e 100644 --- a/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt +++ b/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Algebraic_foundations_Examples) find_package(CGAL REQUIRED) diff --git a/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt b/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt index c2effb6e119..467fdca406f 100644 --- a/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt +++ b/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Algebraic_foundations_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt b/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt index 696fdabc10a..f93c12d0950 100644 --- a/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt +++ b/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Algebraic_kernel_d_Examples) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_curve_kernel_2.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_curve_kernel_2.h index bc35601fc5e..c3be1d69954 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_curve_kernel_2.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_curve_kernel_2.h @@ -1811,7 +1811,7 @@ public: * An x-critical point (x,y) of \c f (or its induced curve) * satisfies f(x,y) = f_y(x,y) = 0, * where f_y means the derivative w.r.t. y. - * In pariticular, each singular point is x-critical. + * In particular, each singular point is x-critical. */ class X_critical_points_2 : public CGAL::cpp98::binary_function< Curve_analysis_2, @@ -1890,7 +1890,7 @@ public: * An y-critical point (x,y) of \c f (or its induced curve) * satisfies f(x,y) = f_x(x,y) = 0, * where f_x means the derivative w.r.t. x. - * In pariticular, each singular point is y-critical. + * In particular, each singular point is y-critical. */ class Y_critical_points_2 : public CGAL::cpp98::binary_function< Curve_analysis_2, diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes.h index 7703d0b0b19..654ffa9a46d 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes.h @@ -1153,7 +1153,7 @@ public: /*! * \brief Constructor for a polynomial \c f * - * See the documentation of the constrctor + * See the documentation of the constructor * with \c Square_free_descartes_tag */ Bitstream_descartes(Polynomial f, diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Status_line_CA_1.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Status_line_CA_1.h index a8ecf22eac1..b91c24968d9 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Status_line_CA_1.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Status_line_CA_1.h @@ -135,7 +135,7 @@ public: //! curve has vertical line at this x-coordinate mutable bool _m_vertical_line; - //! decsribes an event + //! describes an event mutable bool _m_event; //! number of arcs running down the pole diff --git a/Algebraic_kernel_d/test/Algebraic_kernel_d/Algebraic_real_d_1.cpp b/Algebraic_kernel_d/test/Algebraic_kernel_d/Algebraic_real_d_1.cpp index 0048e5061cf..3c624a8eee4 100644 --- a/Algebraic_kernel_d/test/Algebraic_kernel_d/Algebraic_real_d_1.cpp +++ b/Algebraic_kernel_d/test/Algebraic_kernel_d/Algebraic_real_d_1.cpp @@ -268,7 +268,7 @@ void algebraic_number_test() //simplify { - // just a synatx check + // just a syntax check Algebraic_real_d_1(P_s2510,1,2).simplify(); } } diff --git a/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt b/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt index 33e96b365e9..887fb89eea5 100644 --- a/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt +++ b/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Algebraic_kernel_d_Tests) # CGAL and its components diff --git a/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt b/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt index 02cc0d7ae03..424bd86fd28 100644 --- a/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt +++ b/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Algebraic_kernel_for_circles_Tests) find_package(CGAL REQUIRED) diff --git a/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt b/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt index f26a136c926..637387543f2 100644 --- a/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt +++ b/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Algebraic_kernel_for_spheres_Tests) find_package(CGAL REQUIRED) diff --git a/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt b/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt index 93b7be606bb..493cacad635 100644 --- a/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt +++ b/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Alpha_shapes_2_Examples) find_package(CGAL REQUIRED) diff --git a/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt b/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt index 33630010bad..a4b13149993 100644 --- a/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt +++ b/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Alpha_shapes_2_Tests) find_package(CGAL REQUIRED) diff --git a/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt index 7c3b54b8424..a167cf634db 100644 --- a/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt +++ b/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Alpha_shapes_3_Demo) # Find includes in corresponding build directories diff --git a/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt index 3dab1de6a57..04f6565859d 100644 --- a/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt +++ b/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Alpha_shapes_3_Examples) find_package(CGAL REQUIRED) diff --git a/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt index d985dec6016..e4aca061940 100644 --- a/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt +++ b/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Alpha_shapes_3_Tests) find_package(CGAL REQUIRED) diff --git a/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt b/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt index a9aa0d1d63c..23150027c4f 100644 --- a/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt +++ b/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.20) +cmake_minimum_required(VERSION 3.12...3.29) project(Alpha_wrap_3_Benchmark) find_package(CGAL REQUIRED) diff --git a/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt b/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt index 40187ca194c..8a1c8d1b9fe 100644 --- a/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt +++ b/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Alpha_wrap_3_Examples) find_package(CGAL REQUIRED) diff --git a/Alpha_wrap_3/include/CGAL/Alpha_wrap_3/internal/Alpha_wrap_3.h b/Alpha_wrap_3/include/CGAL/Alpha_wrap_3/internal/Alpha_wrap_3.h index b886add0ff6..d61154a9747 100644 --- a/Alpha_wrap_3/include/CGAL/Alpha_wrap_3/internal/Alpha_wrap_3.h +++ b/Alpha_wrap_3/include/CGAL/Alpha_wrap_3/internal/Alpha_wrap_3.h @@ -1191,7 +1191,7 @@ private: if(refining) { - // If we are re-using the triangulation, change the label of the extra elements + // If we are reusing the triangulation, change the label of the extra elements // that we have added to ensure a manifold result back to external ("manifold" -> "outside") reset_manifold_labels(); diff --git a/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt b/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt index 4e1e59cad69..d719fae8a63 100644 --- a/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt +++ b/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Alpha_wrap_3_Tests) find_package(CGAL REQUIRED) diff --git a/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt b/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt index f30f05e02a4..8b4217331c6 100644 --- a/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt +++ b/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Apollonius_graph_2_Examples) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/compare_quadratic.h b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/compare_quadratic.h index 621d35f6933..60fbf2fb062 100644 --- a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/compare_quadratic.h +++ b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/compare_quadratic.h @@ -31,7 +31,7 @@ namespace ApolloniusGraph_2 { //-------------------------------------------------------------------- -// help functions for the compulation of various quantites +// help functions for the compulation of various quantities template < class FT > inline FT diff --git a/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt b/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt index 3ea78cd6375..c9d061984c7 100644 --- a/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt +++ b/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Apollonius_graph_2_Tests) find_package(CGAL REQUIRED) diff --git a/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt b/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt index d23762f811e..2b62b5b12c9 100644 --- a/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt +++ b/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Arithmetic_kernel_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Arrangement_on_surface_2/TODO b/Arrangement_on_surface_2/TODO index 8a6f37d6457..63b5d28a8c1 100644 --- a/Arrangement_on_surface_2/TODO +++ b/Arrangement_on_surface_2/TODO @@ -4,7 +4,7 @@ another chapter on "2D Arrangements on General Surfaces". This chapter can be much shorter, as all you can do with arrangements was explained and demonstrated in the "2D Arrangements" chapter. We should - however intorduce the concept of TopologyTraits, and re-interpret the + however introduce the concept of TopologyTraits, and re-interpret the functionality of the GeometryTraits. - Incoorporate: @@ -98,7 +98,7 @@ - The "planar" zone visitor is also used here. I believe this should work, as it is generic enough (I hope). Can you test it by trying to incrementally insert curves to an - arrrangement on a sphere. + arrangement on a sphere. - We can think of adding a test for the spherical topology, similar to the construction test developed by Baruch: Namely read n curves from a file, diff --git a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_ellipses.cpp b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_ellipses.cpp index 42de403d822..52694f713e4 100644 --- a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_ellipses.cpp +++ b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_ellipses.cpp @@ -30,7 +30,7 @@ int main (int argc, char *argv[]) std::cerr << "Usage: " << argv[0] << " " << std::endl << "method is either:" << std::endl - << " -a for aggragated insertion;" << std::endl + << " -a for aggregated insertion;" << std::endl << " -n for incremental insertion with naive point-location;" << std::endl << " -w for incremental insertion with walk point-location." diff --git a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_polylines.cpp b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_polylines.cpp index b196130ae46..38e0c0755ae 100644 --- a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_polylines.cpp +++ b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_polylines.cpp @@ -2,7 +2,7 @@ // of line segments it reads from a file. // // Usage: seg_arr <-a | -n | -w> -// Where: -a -- Use aggragated insertion (sweep-line); +// Where: -a -- Use aggregated insertion (sweep-line); // -n -- Use incremental insertion with naive point-location; // -w -- Use incremental insertion with walk point-location. // @@ -70,7 +70,7 @@ int main (int argc, char **argv) std::cerr << "Usage: " << argv[0] << " [format]" << std::endl << "method is either:" << std::endl - << " -a for aggragated insertion;" << std::endl + << " -a for aggregated insertion;" << std::endl << " -n for incremental insertion with naive point-location;" << std::endl << " -w for incremental insertion with walk point-location." diff --git a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_segments.cpp b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_segments.cpp index aceb4e66b7a..32ede839c28 100644 --- a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_segments.cpp +++ b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/bench_arr_segments.cpp @@ -2,7 +2,7 @@ // of line segments it reads from a file. // // Usage: seg_arr <-a | -n | -w> -// Where: -a -- Use aggragated insertion (sweep-line); +// Where: -a -- Use aggregated insertion (sweep-line); // -n -- Use incremental insertion with naive point-location; // -w -- Use incremental insertion with walk point-location. // @@ -70,7 +70,7 @@ int main (int argc, char **argv) std::cerr << "Usage: " << argv[0] << " [format]" << std::endl << "method is either:" << std::endl - << " -a for aggragated insertion;" << std::endl + << " -a for aggregated insertion;" << std::endl << " -n for incremental insertion with naive point-location;" << std::endl << " -s for incremental insertion with simple point-location;" diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt index 1ad374a6103..6d80cda629a 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Arrangement_on_surface_2_Demo) if(NOT POLICY CMP0070 AND POLICY CMP0053) diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/Utils/Utils.h b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/Utils/Utils.h index c0971f9d8ef..0097d3b601b 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/Utils/Utils.h +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/Utils/Utils.h @@ -21,7 +21,7 @@ class QGraphicsScene; -// Genereic `Arr_compute_y_at_x_2` +// Generic `Arr_compute_y_at_x_2` template class Arr_compute_y_at_x_2 : public GraphicsSceneMixin { public: diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos.cpp b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos.cpp index 05c60f9dbb4..27dd2a5968b 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos.cpp +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos.cpp @@ -30,7 +30,7 @@ using json = nlohmann::ordered_json; namespace { - // use this traits everytime you construct an arrangment! + // use this traits every time you construct an arrangement! static Geom_traits s_traits; // Extended DCEL & Arrangement @@ -726,7 +726,7 @@ void Aos::save_arr(Kml::Placemarks& placemarks, const std::string& file_name) { //////////////////////////////////////////////////////////////////////////// // CURVES - // define a map from each curve to its position in the arrangment + // define a map from each curve to its position in the arrangement auto& js_curves = js["curves"] = json::array(); using Ext_curve = Ext_aos::X_monotone_curve_2; std::map curve_pos_map; @@ -909,7 +909,7 @@ void Aos::save_arr(Kml::Placemarks& placemarks, const std::string& file_name) { } std::cout << "total num half-edges = " << total_num_half_edges << std::endl; - // save the arrangment + // save the arrangement std::ofstream ofile(file_name); ofile << js.dump(2); ofile.close(); diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos_triangulator.cpp b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos_triangulator.cpp index 0fb46b142ae..e635345c38c 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos_triangulator.cpp +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos_triangulator.cpp @@ -36,7 +36,7 @@ using json = nlohmann::ordered_json; namespace { - // use this traits everytime you construct an arrangment! + // use this traits every time you construct an arrangement! static Geom_traits s_traits; using Dir3 = Kernel::Direction_3; using Approximate_number_type = Geom_traits::Approximate_number_type; @@ -71,7 +71,7 @@ std::vector Aos_triangulator::get_all(Aos::Arr_handle arrh) { // COMPUTE THE CENTROID OF ALL FACE-POINTS std::vector face_points; - // loop on the egdes of the current outer-ccb + // loop on the edges of the current outer-ccb auto first = fh->outer_ccb(); auto curr = first; do { @@ -225,7 +225,7 @@ Aos_triangulator::get_by_country(Aos::Arr_handle arrh, float error, if (0 == fh->number_of_outer_ccbs()) continue; std::vector face_points; - // Loop on the egdes of the current outer-ccb + // Loop on the edges of the current outer-ccb auto first = fh->outer_ccb(); auto curr = first; do { diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt index 2a0f34d8256..5d0cf45b952 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Arrangement_on_surface_2_earth_Demo) if(NOT POLICY CMP0070 AND POLICY CMP0053) diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget.h b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget.h index 6d70270a573..136c0220679 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget.h +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget.h @@ -73,7 +73,7 @@ protected: // This is called when the required approximation of the arcs is below the // currently required one defined by the zoom level and window size. If you // zoom-in or increase the window-size this can be called. But once a minimum - // approximation error is needed, it will stay there until futher change. + // approximation error is needed, it will stay there until further change. // SEE the definition of "m_current_approx_error" member variable below! float compute_backprojected_error(float pixel_error); @@ -124,7 +124,7 @@ private: // After zooming in or making the viewport larger, the approximation-error // needs to be updated and checked against the old value. If a lower approxi- // mation error is needed the necessary graphics-side updates need to be made - // INSIDE the paintGL (or whereever the OpenGL context is active)! + // INSIDE the paintGL (or wherever the OpenGL context is active)! bool m_update_approx_error = false; float m_current_approx_error; std::size_t m_num_uniform_points; diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget_old.h b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget_old.h index 98197d4fd42..541a8f27d80 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget_old.h +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget_old.h @@ -74,7 +74,7 @@ protected: // This is called when the required approximation of the arcs is below the // currently required one defined by the zoom level and window size. If you // zoom-in or increase the window-size this can be called. But once a minimum - // approximation error is needed, it will stay there until futher change. + // approximation error is needed, it will stay there until further change. // SEE the definition of "m_current_approx_error" member variable below! float compute_backprojected_error(float pixel_error); @@ -139,7 +139,7 @@ private: // After zooming in or making the viewport larger, the approximation-error // needs to be updated and checked against the old value. If a lower approxi- // mation error is needed the necessary graphics-side updates need to be made - // INSIDE the paintGL (or whereever the OpenGL context is active)! + // INSIDE the paintGL (or wherever the OpenGL context is active)! bool m_update_approx_error = false; float m_current_approx_error; diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Verification.h b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Verification.h index 263d1314cdf..fc407256e5e 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Verification.h +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Verification.h @@ -20,7 +20,7 @@ class Verification { public: // Use this to find the approximate of the true minimum projected error. - // we are ot using this complicated method, but provide it for completeness. + // we are not using this complicated method, but provide it for completeness. static void find_minimum_projected_error_on_sphere(float we, Camera& cam, int vp_width, int vp_height); diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_dcel.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_dcel.h index a86e1611695..b65f8bf4799 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_dcel.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_dcel.h @@ -5,7 +5,7 @@ namespace CGAL { * The \dcel class used by the `Arrangement_2`, * `Arr_bounded_planar_topology_traits_2`, `Arr_unb_planar_topology_traits_2` * class templates and other templates. It is parameterized by a geometry - * traits type and optionaly by a vertex, halfedge, or face types. By default, + * traits type and optionally by a vertex, halfedge, or face types. By default, * the `Arr_dcel` class template uses the \link * ArrangementBasicTraits_2::Point_2 `Point_2`\endlink and \link * ArrangementBasicTraits_2::X_monotone_curve_2 `X_monotone_curve_2`\endlink @@ -13,7 +13,7 @@ namespace CGAL { * types, respectively. Thus, by default the \dcel only stores the topological * incidence relations and the geometric data attached to vertices and * edges. Any one of the vertex, halfedge, or face types can be - * overriden. Notice that if the vertex and halfedge types are overriden, the + * overridden. Notice that if the vertex and halfedge types are overridden, the * traits type is ignored. * * \cgalModels{ArrangementDcelWithRebind} diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polycurve_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polycurve_traits_2.h index e5b8be8d93c..8c1db150c3b 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polycurve_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polycurve_traits_2.h @@ -109,7 +109,7 @@ namespace CGAL { * polycurve. * * This functor constructs general polycurve. Its `operator()` is - * oveloaded to support various input types. + * overloaded to support various input types. * * Note that the composing subcurves, depending on the `SubcurveTraits_2`, * might not be \f$x\f$-monotone. diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polyline_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polyline_traits_2.h index 8f63945a3af..c9cc6f5def6 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polyline_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polyline_traits_2.h @@ -209,7 +209,7 @@ public: * polyline. * * This functor constructs general polylines. Its `operator()` is - * oveloaded to support various input types. + * overloaded to support various input types. * * Note that the composing segments, depending on the `SegmentTraits_2`, * might not be \f$x\f$-monotone. diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_rational_function_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_rational_function_traits_2.h index 7c121ebf897..d722a3ae285 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_rational_function_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_rational_function_traits_2.h @@ -118,7 +118,7 @@ public: void cleanup_cache() const; /*! - Returns a pointer to the used algerbaic kernel object. + Returns a pointer to the used algebraic kernel object. */ const Algebraic_kernel_d_1* algebraic_kernel_d_1() const; diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt index 2e8cde0309a..61f8002eb83 100644 --- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt +++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Arrangement_on_surface_2_Examples) find_package(CGAL REQUIRED COMPONENTS Core OPTIONAL_COMPONENTS Qt6) diff --git a/Arrangement_on_surface_2/include/CGAL/Aos_observer.h b/Arrangement_on_surface_2/include/CGAL/Aos_observer.h index 6f918138c66..0881fd44c8c 100644 --- a/Arrangement_on_surface_2/include/CGAL/Aos_observer.h +++ b/Arrangement_on_surface_2/include/CGAL/Aos_observer.h @@ -519,12 +519,12 @@ public: */ virtual void after_move_isolated_vertex(Vertex_handle /* v */) {} - /*! Notificaion before the removal of a vertex. + /*! Notification before the removal of a vertex. * \param v A handle to the vertex to be deleted. */ virtual void before_remove_vertex(Vertex_handle /* v */) {} - /*! Notificaion after the removal of a vertex. */ + /*! Notification after the removal of a vertex. */ virtual void after_remove_vertex() {} /*! Notification before the removal of an edge. @@ -532,7 +532,7 @@ public: */ virtual void before_remove_edge(Halfedge_handle /* e */) {} - /*! Notificaion after the removal of an edge. */ + /*! Notification after the removal of an edge. */ virtual void after_remove_edge() {} /*! Notification before the removal of an outer CCB. @@ -543,7 +543,7 @@ public: Ccb_halfedge_circulator /* h */) {} - /*! Notificaion after the removal of an outer CCB. + /*! Notification after the removal of an outer CCB. * \param f The face that used to own the outer CCB. */ virtual void after_remove_outer_ccb(Face_handle /* f */) {} @@ -556,7 +556,7 @@ public: Ccb_halfedge_circulator /* h */) {} - /*! Notificaion after the removal of an inner CCB. + /*! Notification after the removal of an inner CCB. * \param f The face that used to contain the inner CCB. */ virtual void after_remove_inner_ccb(Face_handle /* f */) {} diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h index fd0215a1a1e..3882b2413fe 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h @@ -1107,7 +1107,7 @@ public: return false; } - /*! Intersect the supporing conic curves of this arc and the given arc. + /*! Intersect the supporting conic curves of this arc and the given arc. * \param arc The arc to intersect with. * \param inter_list The list of intersection points. */ @@ -1133,7 +1133,7 @@ public: if (xcv2.is_special_segment()) { // The second arc is a special segment (a*x + b*y + c = 0). if (xcv1.is_special_segment()) { - // Both arc are sepcial segment, so they have at most one intersection + // Both arc are special segments, so they have at most one intersection // point. const auto* extra_data1 = xcv1.extra_data(); const auto* extra_data2 = xcv2.extra_data(); @@ -1724,7 +1724,7 @@ public: * r·𝑥^2 + s·𝑦^2 + t·𝑥·𝑦 + u·𝑥 + v·𝑦 + w = 0 * where 4·r·s−t^2 > 0 * We eliminate t so that the x·y term vanishes, applying an inverse - * rotation. Then, we compute the radi and the center. Finaly, we rotate + * rotation. Then, we compute the radi and the center. Finally, we rotate * back. The angle of rotation is given by: * 𝑡𝑎𝑛(2𝜃) = 𝐵 / (𝐴−𝐶) * Then @@ -2260,7 +2260,7 @@ public: const Rational& u, const Rational& v, const Rational& w, Orientation orient, const Point_2& source, const Point_2& target) const { - // Make sure that the source and the taget are not the same. + // Make sure that the source and the target are not the same. const auto alg_kernel = m_traits.m_alg_kernel; CGAL_precondition_code(auto eq = alg_kernel->compare_xy_2_object()); CGAL_precondition(eq(source, target) != EQUAL); @@ -2297,7 +2297,7 @@ public: Point_2 target(nt_traits->convert(x3), nt_traits->convert(y3)); arc.set_endpoints(source, target); - // Make sure that the source and the taget are not the same. + // Make sure that the source and the target are not the same. CGAL_precondition_code(auto cmp_xy = alg_kernel->compare_xy_2_object()); CGAL_precondition(cmp_xy(source, target) != EQUAL); @@ -2324,7 +2324,7 @@ public: const bool points_collinear = (CGAL::sign(D) == ZERO); if (points_collinear) { - arc.reset_flags(); // inavlid arc + arc.reset_flags(); // invalid arc return arc; } @@ -2381,7 +2381,7 @@ public: orient_f(p3, p4, p5) == COLLINEAR); if (point_collinear) { - arc.reset_flags(); // inavlid arc + arc.reset_flags(); // invalid arc return arc; } @@ -2439,7 +2439,7 @@ public: ! m_traits.is_strictly_between_endpoints(arc, mp3) || ! m_traits.is_strictly_between_endpoints(arc, mp4)) { - arc.reset_flags(); // inavlid arc + arc.reset_flags(); // invalid arc return arc; } return arc; @@ -2589,7 +2589,7 @@ public: } if (! found) { - arc.reset_flags(); // inavlid arc + arc.reset_flags(); // invalid arc return arc; } } @@ -2597,7 +2597,7 @@ public: // Make sure that the source and the target are not the same. auto cmp_xy = m_traits.m_alg_kernel->compare_xy_2_object(); if (cmp_xy(arc.source(), arc.target()) == EQUAL) { - arc.reset_flags(); // inavlid arc + arc.reset_flags(); // invalid arc return arc; } @@ -2646,7 +2646,7 @@ public: cv.set_source(Point_2(nt_traits->convert(x1), nt_traits->convert(y1))); cv.set_target(Point_2(nt_traits->convert(x2), nt_traits->convert(y2))); - // Make sure that the source and the taget are not the same. + // Make sure that the source and the target are not the same. CGAL_precondition_code(auto cmp_xy = rat_kernel->compare_xy_2_object()); CGAL_precondition(cmp_xy(source, target) != EQUAL); @@ -2695,7 +2695,7 @@ public: Rational y0 = center.y(); Rational r_sqr = rat_kernel->compute_squared_radius_2_object()(circ); - // Produce the correponding conic: if the circle center is (x0,y0) + // Produce the corresponding conic: if the circle center is (x0,y0) // and its squared radius is R^2, that its equation is: // x^2 + y^2 - 2*x0*x - 2*y0*y + (x0^2 + y0^2 - R^2) = 0 // Note that this equation describes a curve with a negative (clockwise) @@ -2726,7 +2726,7 @@ public: */ Curve_2 operator()(const Rat_circle_2& circ, Orientation orient, const Point_2& source, const Point_2& target) const { - // Make sure that the source and the taget are not the same. + // Make sure that the source and the target are not the same. CGAL_precondition_code(auto cmp_xy = m_traits.m_alg_kernel->compare_xy_2_object()); CGAL_precondition(cmp_xy(source, target) != EQUAL); @@ -2743,7 +2743,7 @@ public: Rational y0 = center.y(); Rational r_sqr = rat_kernel->compute_squared_radius_2_object()(circ); - // Produce the correponding conic: if the circle center is (x0,y0) + // Produce the corresponding conic: if the circle center is (x0,y0) // and it squared radius is R^2, that its equation is: // x^2 + y^2 - 2*x0*x - 2*y0*y + (x0^2 + y0^2 - R^2) = 0 // Since this equation describes a curve with a negative (clockwise) @@ -2853,7 +2853,7 @@ public: m_traits.compare_y_at_x_2_object()); CGAL_precondition_code(Equal_2 equal_2 = m_traits.equal_2_object()); Compare_x_2 compare_x_2 = m_traits.compare_x_2_object(); - // Check whether source and taget are two distinct points and they lie + // Check whether source and target are two distinct points and they lie // on the line. CGAL_precondition(compare_y_at_x_2(src, xcv) == EQUAL); CGAL_precondition(compare_y_at_x_2(tgt, xcv) == EQUAL); @@ -2983,7 +2983,7 @@ public: } } else { - // Use the source and target to initialize the exterme points. + // Use the source and target to initialize the extreme points. bool source_left = CGAL::to_double(xcv.source().x()) < CGAL::to_double(xcv.target().x()); x_min = (source_left) ? @@ -3077,7 +3077,7 @@ public: if (! is_on_supporting_conic(cv, source) || ! is_on_supporting_conic(cv, target)) { - cv.reset_flags(); // inavlid arc + cv.reset_flags(); // invalid arc return; } @@ -3098,7 +3098,7 @@ public: m_nt_traits->convert(v)) * p_mid.y() + m_nt_traits->convert(w)) != ZERO) { - cv.reset_flags(); // inavlid arc + cv.reset_flags(); // invalid arc return; } @@ -3109,7 +3109,7 @@ public: } else { // The sign of (4rs - t^2) detetmines the conic type: - // - if it is possitive, the conic is an ellipse, + // - if it is positive, the conic is an ellipse, // - if it is negative, the conic is a hyperbola, // - if it is zero, the conic is a parabola. CGAL::Sign sign_conic = CGAL::sign(4*r*s - t*t); @@ -3126,7 +3126,7 @@ public: bool finite_at_x = (points_at_x(cv, p_mid, ps) > 0); bool finite_at_y = (points_at_y(cv, p_mid, ps) > 0); if (! finite_at_x && ! finite_at_y) { - cv.reset_flags(); // inavlid arc + cv.reset_flags(); // invalid arc return; } } @@ -3192,7 +3192,7 @@ public: cv.set_flag(Curve_2::IS_VALID); cv.set_flag(Curve_2::IS_FULL_CONIC); } - else cv.reset_flags(); // inavlid arc + else cv.reset_flags(); // invalid arc } /*! Check whether the given point lies on the supporting conic of the arc. @@ -3300,7 +3300,7 @@ public: return (orient_f(source, p, target) == RIGHT_TURN); } - /*! Build the data for hyperbolic arc, contaning the characterization of the + /*! Build the data for hyperbolic arc, containing the characterization of the * hyperbolic branch the arc is placed on. */ void build_hyperbolic_arc_data(Curve_2& cv) const { @@ -3680,7 +3680,7 @@ public: // Check whether the conic is facing up or facing down: // Check whether the arc (which is x-monotone of degree 2) lies above or - // below the segement that connects its two end-points (x1,y1) and (x2,y2). + // below the segment that connects its two end-points (x1,y1) and (x2,y2). // To do that, we find the y coordinate of a point on the arc whose x // coordinate is (x1+x2)/2 and compare it to (y1+y2)/2. auto cmp_y = m_alg_kernel->compare_y_2_object(); @@ -3753,7 +3753,7 @@ public: } /*! Check whether the given point lies on the arc. - * \param p The qury point. + * \param p The query point. * \param (true) if p lies on the arc; (false) otherwise. */ bool contains_point(const X_monotone_curve_2& xcv, const Point_2& p) const { @@ -3778,7 +3778,7 @@ public: return is_between_endpoints(xcv, p); } - /*! Find the vertical tangency points of the undelying conic. + /*! Find the vertical tangency points of the underlying conic. * \param ps The output points of vertical tangency. * This area must be allocated at the size of 2. * \return The number of vertical tangency points. @@ -3876,7 +3876,7 @@ public: return m; } - /*! Find the horizontal tangency points of the undelying conic. + /*! Find the horizontal tangency points of the underlying conic. * \param ps The output points of horizontal tangency. * This area must be allocated at the size of 2. * \return The number of horizontal tangency points. diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_curve_data_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_curve_data_traits_2.h index b4ecc559815..1a62b9227c5 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_curve_data_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_curve_data_traits_2.h @@ -79,10 +79,10 @@ public: typedef typename internal::Arr_complete_right_side_category:: Category Right_side_category; - // Representation of a curve with an additonal data field: + // Representation of a curve with an additional data field: typedef _Curve_data_ex Curve_2; - // Representation of an x-monotone curve with an additonal data field: + // Representation of an x-monotone curve with an additional data field: typedef _Curve_data_ex X_monotone_curve_2; diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geodesic_arc_on_sphere_partition_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_geodesic_arc_on_sphere_partition_traits_2.h index 745694afe74..5e6f01f1f25 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geodesic_arc_on_sphere_partition_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geodesic_arc_on_sphere_partition_traits_2.h @@ -22,7 +22,7 @@ * The partition traits class for geodesic arcs on the sphere enables * the partition of geodesic polygons to convex polygons. It models the * concept YMonotonePartitionTraits_2. - * This partition of geodesic polygons is garenteed to work only for polygons + * This partition of geodesic polygons is guaranteed to work only for polygons * that are contained in a hemisphere and that do not intersect one of the * boundaries. * For larger polygons there is a chance that at least one steiner point may @@ -329,7 +329,7 @@ public: * The partition traits class for geodesic arcs on the sphere enables * the partition of geodesic polygons to convex polygons. It models the * concept YMonotonePartitionTraits_2. - * This partition of geodesic polygons is garenteed to work only for polygons + * This partition of geodesic polygons is guaranteed to work only for polygons * that are contained in a hemisphere and that do not intersect one of the * boundaries. * For larger polygons there is a chance that at least one steiner point may diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_cache.h b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_cache.h index 15723d2fa35..0d30f01166c 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_cache.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_cache.h @@ -588,7 +588,7 @@ bool _Bezier_cache::_intersection_params Integer coeff; int k; - // Consruct the bivariate polynomial that corresponds to Equation I. + // Construct the bivariate polynomial that corresponds to Equation I. // Note that we represent a bivariate polynomial as a vector of univariate // polynomials, whose i'th entry corresponds to the coefficient of t^i, // which is in turn a polynomial it s. @@ -602,7 +602,7 @@ bool _Bezier_cache::_intersection_params } coeffsX_st[0] = coeffsX_st[0] - nt_traits.scale (polyX_1, normX_2); - // Consruct the bivariate polynomial that corresponds to Equation II. + // Construct the bivariate polynomial that corresponds to Equation II. const int degY_2 = nt_traits.degree (polyY_2); std::vector coeffsY_st (degY_2 < 0 ? 1 : (degY_2 + 1)); @@ -655,7 +655,7 @@ void _Bezier_cache::_self_intersection_params Integer *coeffs; int i; - // Consruct the bivariate polynomial that corresponds to Equation I. + // Construct the bivariate polynomial that corresponds to Equation I. // Note that we represent a bivariate polynomial as a vector of univariate // polynomials, whose i'th entry corresponds to the coefficient of t^i, // which is in turn a polynomial it s. @@ -675,7 +675,7 @@ void _Bezier_cache::_self_intersection_params delete[] coeffs; - // Consruct the bivariate polynomial that corresponds to Equation II. + // Construct the bivariate polynomial that corresponds to Equation II. const int degY = nt_traits.degree (polyY); CGAL_assertion(degY > 0); if (degY <= 0) return; //no self intersection if Y is constant diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_curve_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_curve_2.h index 119ad9a5226..b2af7346033 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_curve_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_curve_2.h @@ -800,7 +800,7 @@ typename _Bezier_curve_2::Rat_point_2 _Bezier_curve_2::operator() (const Rational& t) const { - // Check for extermal t values (either 0 or 1). + // Check for external t values (either 0 or 1). const CGAL::Sign sign_t = CGAL::sign (t); CGAL_precondition (sign_t != NEGATIVE); @@ -851,7 +851,7 @@ typename _Bezier_curve_2::Alg_point_2 _Bezier_curve_2::operator() (const Algebraic& t) const { - // Check for extermal t values (either 0 or 1). + // Check for external t values (either 0 or 1). Nt_traits nt_traits; const CGAL::Sign sign_t = CGAL::sign (t); diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_x_monotone_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_x_monotone_2.h index f8589b2953b..02bd94b4e21 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_x_monotone_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_x_monotone_2.h @@ -2138,7 +2138,7 @@ _intersect(const Self& cv, else { // Approximate the intersection points and store them in the map. // Note that we do not store approximated self-intersections in the map, - // as they realte only to the pecific x-monotone curves, and not to the + // as they relate only to the specific x-monotone curves, and not to the // entire curve. app_ok = _approximate_intersection_points(cv, inter_pts); diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_arc_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_arc_2.h index 08126475b5a..c115673ff53 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_arc_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_arc_2.h @@ -392,7 +392,7 @@ public: const bool points_collinear = (CGAL::sign(D) == ZERO); if (points_collinear) { - reset_flags(); // inavlid arc + reset_flags(); // invalid arc return; } @@ -453,7 +453,7 @@ public: orient_f (p3, p4, p5) == COLLINEAR); if (point_collinear) { - reset_flags(); // inavlid arc + reset_flags(); // invalid arc return; } @@ -511,7 +511,7 @@ public: ! _is_strictly_between_endpoints(mp3) || ! _is_strictly_between_endpoints(mp4)) { - reset_flags(); // inavlid arc + reset_flags(); // invalid arc } } @@ -669,14 +669,14 @@ public: } if (! found) { - reset_flags(); // inavlid arc + reset_flags(); // invalid arc return; } } // Make sure that the source and the target are not the same. if (Alg_kernel().compare_xy_2_object()(m_source, m_target) == EQUAL) { - reset_flags(); // inavlid arc + reset_flags(); // invalid arc return; } @@ -724,7 +724,7 @@ public: } } else { - // Use the source and target to initialize the exterme points. + // Use the source and target to initialize the extreme points. bool source_left = CGAL::to_double(m_source.x()) < CGAL::to_double(m_target.x()); x_min = source_left ? @@ -892,7 +892,7 @@ protected: } } - /*! Find the vertical tangency points of the undelying conic. + /*! Find the vertical tangency points of the underlying conic. * \param ps The output points of vertical tangency. * This area must be allocated at the size of 2. * \return The number of vertical tangency points. @@ -970,7 +970,7 @@ protected: return n; } - /*! Find the horizontal tangency points of the undelying conic. + /*! Find the horizontal tangency points of the underlying conic. * \param ps The output points of horizontal tangency. * This area must be allocated at the size of 2. * \return The number of horizontal tangency points. @@ -1071,7 +1071,7 @@ protected: set_flag(IS_VALID); set_flag(IS_FULL_CONIC); } - else reset_flags(); // inavlid arc + else reset_flags(); // invalid arc } /*! Check whether the given point lies on the supporting conic of the arc. @@ -1093,7 +1093,7 @@ protected: return (CGAL::sign(val) == ZERO); } - /*! Build the data for hyperbolic arc, contaning the characterization of the + /*! Build the data for hyperbolic arc, containing the characterization of the * hyperbolic branch the arc is placed on. */ CGAL_DEPRECATED void _build_hyperbolic_arc_data() { @@ -1372,7 +1372,7 @@ protected: if (! _is_on_supporting_conic(m_source) || ! _is_on_supporting_conic(m_target)) { - reset_flags(); // inavlid arc + reset_flags(); // invalid arc return; } @@ -1394,7 +1394,7 @@ protected: nt_traits.convert(m_v)) * p_mid.y() + nt_traits.convert(m_w)) != ZERO) { - reset_flags(); // inavlid arc + reset_flags(); // invalid arc return; } @@ -1419,7 +1419,7 @@ protected: } else { // The sign of (4rs - t^2) detetmines the conic type: - // - if it is possitive, the conic is an ellipse, + // - if it is positive, the conic is an ellipse, // - if it is negative, the conic is a hyperbola, // - if it is zero, the conic is a parabola. CGAL::Sign sign_conic = CGAL::sign(4*m_r*m_s - m_t*m_t); @@ -1438,7 +1438,7 @@ protected: bool finite_at_y = (_points_at_y(p_mid, ps) > 0); if (! finite_at_x && ! finite_at_y) { - reset_flags(); // inavlid arc + reset_flags(); // invalid arc return; } } @@ -1515,7 +1515,7 @@ public: /// \name Get the arc properties. //@{ - /*! Determine wheather the arc is valid. + /*! Determine whether the arc is valid. */ bool is_valid() const { return test_flag(IS_VALID); } @@ -1600,7 +1600,7 @@ protected: public: /// \name Modifying functions (setters); - // only friends have the priviledge to use. + // only friends have the privilege to use. //@{ /*! Set the source point of the conic arc. diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_point_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_point_2.h index 6361c0bfe7c..734011f594d 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_point_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_point_2.h @@ -82,10 +82,10 @@ public: /*! Default constructors. */ Conic_point_2() : Base() {} - /*! Constrcutor from the base class. */ + /*! Constructor from the base class. */ Conic_point_2(const Base& p) : Base(p) {} - /*! Constructor with homegeneous coordinates. */ + /*! Constructor with homogeneous coordinates. */ Conic_point_2(const Algebraic& hx, const Algebraic& hy, const Algebraic& hz) : Base(hx, hy, hz) {} diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_x_monotone_arc_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_x_monotone_arc_2.h index 6d2bf119bb9..97f8dd74181 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_x_monotone_arc_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Conic_x_monotone_arc_2.h @@ -163,7 +163,7 @@ public: // Set the basic properties and clear the _info bits. this->set_endpoints(source, target); this->set_orientation(COLLINEAR); - this->reset_flags(); // inavlid arc + this->reset_flags(); // invalid arc // Check if the arc is directed right (the target is lexicographically // greater than the source point), or to the left. @@ -180,7 +180,7 @@ public: res = ker.compare_y_2_object()(source, target); CGAL_precondition(res != EQUAL); if (res == EQUAL) { - reset_flags(); // inavlid arc + reset_flags(); // invalid arc return; } } @@ -290,7 +290,7 @@ private: // Check whether the conic is facing up or facing down: // Check whether the arc (which is x-monotone of degree 2) lies above or - // below the segement that contects its two end-points (x1,y1) and (x2,y2). + // below the segment that contects its two end-points (x1,y1) and (x2,y2). // To do that, we find the y coordinate of a point on the arc whose x // coordinate is (x1+x2)/2 and compare it to (y1+y2)/2. Comparison_result res = ker.compare_y_2_object()(p_arc_mid, p_mid); @@ -301,7 +301,7 @@ private: } public: - /// \name Public constrcutors, assignment operators, and destructors. + /// \name Public constructors, assignment operators, and destructors. //@{ /*! Default constructor. @@ -350,7 +350,7 @@ public: private: template friend class Arr_conic_traits_2; - /// \name private constrcutors to be used only by the traits class template. + /// \name private constructors to be used only by the traits class template. //@{ /*! Construct an x-monotone arc from a conic arc. @@ -421,7 +421,7 @@ public: bool is_lower() const { return this->test_flag(FACING_DOWN); } /*! Check whether the arc is a special segment connecting two algebraic - * endpoints (and has no undelying integer conic coefficients). + * endpoints (and has no underlying integer conic coefficients). */ bool is_special_segment() const { return this->test_flag(IS_SPECIAL_SEGMENT); } @@ -447,7 +447,7 @@ public: Conic_id id() const { return m_id; } /*! Check whether the given point lies on the arc. - * \param p The qury point. + * \param p The query point. * \param (true) if p lies on the arc; (false) otherwise. */ CGAL_DEPRECATED @@ -660,7 +660,7 @@ public: //@{ /*! Flip the arc. - * \return An arc with swapped source and target and a reverse orienation. + * \return An arc with swapped source and target and a reverse orientation. */ Self flip() const { // Make a copy of the current arc. @@ -1316,7 +1316,7 @@ private: if (CGAL::compare(slope1_numer*slope2_denom, slope2_numer*slope1_denom) != EQUAL) { - // Different slopes at p - the mutiplicity of p is 1: + // Different slopes at p - the multiplicity of p is 1: return 1; } @@ -1337,7 +1337,7 @@ private: if (CGAL::compare(slope1_numer*slope2_denom, slope2_numer*slope1_denom) != EQUAL) { - // Different curvatures at p - the mutiplicity of p is 2: + // Different curvatures at p - the multiplicity of p is 2: return 2; } diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Rational_arc_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Rational_arc_2.h index de7128f9700..c1a690bcb8e 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Rational_arc_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Rational_arc_2.h @@ -409,7 +409,7 @@ public: // and check if it lies next to a pole. if (CGAL::sign (nt_traits.evaluate_at (_denom, x_s)) != CGAL::ZERO) { - // We have a nomral endpoint. + // We have a normal endpoint. _ps = Point_2 (x_s, nt_traits.evaluate_at (_numer, x_s) / nt_traits.evaluate_at (_denom, x_s)); } @@ -499,7 +499,7 @@ public: // Set the source point and check if it lies next to a pole. if (CGAL::sign (nt_traits.evaluate_at (_denom, x_s)) != CGAL::ZERO) { - // We have a nomral endpoint. + // We have a normal endpoint. _ps = Point_2 (x_s, nt_traits.evaluate_at (_numer, x_s) / nt_traits.evaluate_at (_denom, x_s)); } @@ -521,7 +521,7 @@ public: // Set the target point and check if it lies next to a pole. if (CGAL::sign (nt_traits.evaluate_at (_denom, x_t)) != CGAL::ZERO) { - // We have a nomral endpoint. + // We have a normal endpoint. _pt = Point_2 (x_t, nt_traits.evaluate_at (_numer, x_t) / nt_traits.evaluate_at (_denom, x_t)); } @@ -1026,7 +1026,7 @@ public: * intersection point. * \param cv The given arc. * \param p The intersection point. - * \param mult Output: The mutiplicity of the intersection point. + * \param mult Output: The multiplicity of the intersection point. * \return SMALLER if (*this) slope is less than cv's; * EQUAL if the two slopes are equal; * LARGER if (*this) slope is greater than cv's. diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_landmarks_point_location.h b/Arrangement_on_surface_2/include/CGAL/Arr_landmarks_point_location.h index 7af60b3d1b3..9cfcd680aea 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_landmarks_point_location.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_landmarks_point_location.h @@ -35,7 +35,7 @@ namespace CGAL { /*! \class Arr_landmarks_point_location * A class that answers point-location queries on an arrangement using the * landmarks algorithm, namely by locating the (approximately) nearest - * landmark point to the qury point and walking from it toward the query + * landmark point to the query point and walking from it toward the query * point. * This class-template has two parameters: * Arrangement corresponds to an arrangement-on-surface instantiation. diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_lm_generator_base.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_lm_generator_base.h index 42dc494377f..c7bd903ee70 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_lm_generator_base.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_lm_generator_base.h @@ -364,7 +364,7 @@ public: } } - /*! Notificaion after the removal of a vertex. */ + /*! Notification after the removal of a vertex. */ virtual void after_remove_vertex() override { if (! m_ignore_notifications && ! m_ignore_remove_edge) { clear_landmark_set(); @@ -381,7 +381,7 @@ public: m_ignore_remove_edge = false; } - /*! Notificaion after the removal of an outer CCB. */ + /*! Notification after the removal of an outer CCB. */ virtual void after_remove_outer_ccb(Face_handle) override { if (! m_ignore_notifications && ! m_ignore_remove_edge) { clear_landmark_set(); @@ -389,7 +389,7 @@ public: } } - /*! Notificaion after the removal of an inner CCB. */ + /*! Notification after the removal of an inner CCB. */ virtual void after_remove_inner_ccb(Face_handle) override { if (! m_ignore_notifications && ! m_ignore_remove_edge) { clear_landmark_set(); diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_walk_along_line_pl_impl.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_walk_along_line_pl_impl.h index 863365cd63d..e19a89a464e 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_walk_along_line_pl_impl.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_walk_along_line_pl_impl.h @@ -113,7 +113,7 @@ Arr_walk_along_line_point_location::locate(const Point_2& p) const face = closest_he->twin()->face(); // Perform a vertical walk along the faces of the hole until locating - // a face that contains the qeury point. + // a face that contains the query point. do { CGAL_assertion_code (Halfedge_const_handle old_closest_he = closest_he); @@ -256,7 +256,7 @@ _vertical_ray_shoot(const Point_2& p, bool shoot_up) const face = closest_he->twin()->face(); // Perform a vertical walk along the faces of the hole until locating - // a face that contains the qeury point. + // a face that contains the query point. do { CGAL_assertion_code ( Halfedge_const_handle old_closest_he = closest_he; diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_impl.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_impl.h index 9b0a7617114..49ce7054812 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_impl.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_impl.h @@ -2636,7 +2636,7 @@ merge_edge(Halfedge_const_handle he1, Td_map_item rightp_item = locate(rightmost, lt2); Td_map_item mrgp_item = locate(ce, lt); - //varifying that all trapezoids are not nullptr and are of type POINT + //verifying that all trapezoids are not nullptr and are of type POINT CGAL_warning(std::visit(dag_node_visitor(), leftp_item) != nullptr); CGAL_warning(std::visit(dag_node_visitor(), rightp_item)!= nullptr); CGAL_warning(std::visit(dag_node_visitor(), mrgp_item) != nullptr); diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Rational_arc_d_1.h b/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Rational_arc_d_1.h index 3f49b0f2221..f3921b44149 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Rational_arc_d_1.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Rational_arc_d_1.h @@ -543,7 +543,7 @@ public: //check if the source point lies next to a pole. if (typename Algebraic_kernel::Sign_at_1()(Q, x_s) != CGAL::ZERO) { - // We have a nomral endpoint. + // We have a normal endpoint. //nothing to do.... } else @@ -644,7 +644,7 @@ public: //check if source point lies next to a pole. if (typename Algebraic_kernel::Sign_at_1()(Q,x_s) != CGAL::ZERO) { - // We have a nomral endpoint. + // We have a normal endpoint. //nothing to do .. } else @@ -666,7 +666,7 @@ public: //check if target point lies next to a pole. if (typename Algebraic_kernel::Sign_at_1()(Q,x_t) != CGAL::ZERO) { - // We have a nomral endpoint. + // We have a normal endpoint. //nothing to do .. } else @@ -1206,7 +1206,7 @@ public: // at their given intersection point. // param cv The given arc. // param p The intersection point. - // param mult Output: The mutiplicity of the intersection point. + // param mult Output: The multiplicity of the intersection point. // return SMALLER if (*this) slope is less than cv's; // EQUAL if the two slopes are equal; // LARGER if (*this) slope is greater than cv's. diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_transform_on_sphere.h b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_transform_on_sphere.h index 78eb6bc2f47..e2577f41af4 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_transform_on_sphere.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_transform_on_sphere.h @@ -53,7 +53,7 @@ void Arr_transform_on_sphere(Arrangement & arr, Arr_accessor m_arr_access(arr); - // Preprocessing loop - merge all the edges that were splited + // Preprocessing loop - merge all the edges that were split // (meaning have a common endpoint that lies on the boundary and their degree // is 2) on the identification curve. for (auto vi1 = arr.vertices_begin(); vi1 != arr.vertices_end(); ) { @@ -151,7 +151,7 @@ void Arr_transform_on_sphere(Arrangement & arr, // If the curve is not x-monotone - split it into 2 x_monotone parts. // Since the curves were x_monotone before , can assume that it will be - // splited into 2 parts max. + // split into 2 parts max. if (objects.size() == 2) { auto it = objects.begin(); diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_topology_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_topology_traits_2.h index e854cb9b385..a04cd735e9a 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_topology_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_topology_traits_2.h @@ -314,7 +314,7 @@ public: // defining a type that inherits from the template we need to alias. However, // the non-C++11 code requires the (re)definition of all constructors of the // derived class. The non-C++11 code follows the commented out C++11 code. - // When we move to C++11 we can use the more elgant code. + // When we move to C++11 we can use the more elegant code. // Type definition for the construction surface-sweep visitor. template struct Construction_helper : diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_topology_traits/Arr_spherical_topology_traits_2_impl.h b/Arrangement_on_surface_2/include/CGAL/Arr_topology_traits/Arr_spherical_topology_traits_2_impl.h index 34149d15af3..8dea4d1afb5 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_topology_traits/Arr_spherical_topology_traits_2_impl.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_topology_traits/Arr_spherical_topology_traits_2_impl.h @@ -261,7 +261,7 @@ is_in_face(const Face* f, const Point_2& p, const Vertex* v) const // Ignore vertical curves: if (is_vertical(curr->curve())) { /* If this outer ccb chain contains the north pole, and our point - * lies horizontaly between the two vertical curves that meet at + * lies horizontally between the two vertical curves that meet at * the north pole, increase the intersection counter */ if (curr->direction() == ARR_LEFT_TO_RIGHT) { @@ -486,7 +486,7 @@ are_equal(const Vertex* v, CGAL_assertion(ps_x != ARR_INTERIOR); /* Both vertices have the same x boundary conditions => - * comapare their y-position. + * compare their y-position. */ const Point_2& p1 = v->point(); const Point_2& p2 = (ind == ARR_MIN_END) ? diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_triangulation_point_location.h b/Arrangement_on_surface_2/include/CGAL/Arr_triangulation_point_location.h index 37aef38630c..66d535dec19 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_triangulation_point_location.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_triangulation_point_location.h @@ -280,7 +280,7 @@ public: } } - /*! Notificaion before the removal of a vertex. + /*! Notification before the removal of a vertex. * \param v (in) A handle to the vertex to be deleted. */ virtual void after_remove_vertex() override { @@ -331,7 +331,7 @@ public: } } - /*! Notificaion after the removal of an inner CCB. + /*! Notification after the removal of an inner CCB. * \param f (in) The face that used to contain the inner CCB. */ virtual void after_remove_inner_ccb(Face_handle /* f */) override { diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_on_surface_with_history_2_impl.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_on_surface_with_history_2_impl.h index 8c63a3344c1..2e933f314fa 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_on_surface_with_history_2_impl.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_on_surface_with_history_2_impl.h @@ -112,7 +112,7 @@ assign(const Self& arr) } // Go over the list of halfedges in our arrangement. The curves associated - // with these edges sotre pointers to the curves in the original + // with these edges store pointers to the curves in the original // arrangement, so we now have to modify these pointers, according to the // mapping we have just created. While doing so, we also construct the set // of edges associated with each (duplicated) curve in our arrangement. diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h index 0bcc3f633a5..97c9b5b0f5b 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h @@ -312,8 +312,8 @@ public: } /*! 6. Implementation of the operator in case the left and right sides have - * boundary conditions (but they are nopt identified) and the bottom and top - * sides are identied. + * boundary conditions (but they are not identified) and the bottom and top + * sides are identified. */ Comparison_result compare_y_at_x(const Point_2& p, const X_monotone_curve_2& xcv, @@ -397,7 +397,7 @@ public: /*! 8. Implementation of the operator in case the left and right sides are * identified, and the bottom and top sides have boundary conditions (but - * they are not identied). + * they are not identified). */ Comparison_result compare_y_at_x(const Point_2& p, const X_monotone_curve_2& xcv, diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_on_surface_2_impl.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_on_surface_2_impl.h index 7ac1332586d..d787e922f87 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_on_surface_2_impl.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_on_surface_2_impl.h @@ -2534,7 +2534,7 @@ _insert_at_vertices(DHalfedge* he_to, // EBEB 2012-07-26 the following code enables optimizations: // - avoid length-test // - search only local minima to find leftmost vertex - // - re-use of signs of ccbs + // - reuse of signs of ccbs // signs1/2 are only used when hole1 == hole2, // thus we have to init them now Arr_halfedge_direction cv_dir1 = cv_dir; diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_zone_2_impl.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_zone_2_impl.h index 2889f219237..370f0d78043 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_zone_2_impl.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_zone_2_impl.h @@ -1176,7 +1176,7 @@ _zone_in_face(Face_handle face, bool on_boundary) { m_left_he = (m_right_he->direction() == ARR_LEFT_TO_RIGHT) ? inserted_he : m_right_he; else { - // Mutliplicity is unknown: + // Multiplicity is unknown: m_left_he = m_invalid_he; } } diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_on_surface_2.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_on_surface_2.h index e9053489a95..ddf9039744a 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_on_surface_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_on_surface_2.h @@ -271,7 +271,7 @@ public: class Halfedge; class Face; - // Definition of the halfedge data-structure itereators and circulators: + // Definition of the halfedge data-structure iterators and circulators: typedef I_Filtered_iterator Vertex_iterator; diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Arc_2.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Arc_2.h index c7a47a2c1b2..86b8f15ece7 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Arc_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Arc_2.h @@ -2015,7 +2015,7 @@ protected: * boundary implies equality * * \param p first endpoint - * \param q second endpint + * \param q second endpoint * \param equal_x \c true indicates to skip the comparison by x * \param only_x \c true indicates to report only the comparison by x * \returns the result of the queried comparison diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curve_interval_arcno_cache.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curve_interval_arcno_cache.h index 36152129a94..328bca66bb3 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curve_interval_arcno_cache.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curve_interval_arcno_cache.h @@ -65,7 +65,7 @@ struct Curve_interval_arcno_cache { //! type of second argument typedef bool second_argument_type; - //! type of third arguent + //! type of third argument typedef int third_argument_type; //! the result type diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curve_renderer_facade.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curve_renderer_facade.h index dc31345cf8c..1bbcea8d28b 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curve_renderer_facade.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curve_renderer_facade.h @@ -32,7 +32,7 @@ // whether to use exact rational arithmetic #define CGAL_CKVA_USE_RATIONAL_ARITHMETIC -// this turns on a signleton curve renderer +// this turns on a singleton curve renderer // (not recommended for multi-threaded applications) //#define CGAL_CKVA_USE_STATIC_RENDERER diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_2.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_2.h index f940e49b91b..5818c0a6af7 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_2.h @@ -221,7 +221,7 @@ private: //! returns \c true when the precision limit for a specified number type is //! reached typename Renderer_traits::Precision_limit limit; - //! maximum level of subdivision dependending on specified number type + //! maximum level of subdivision depending on specified number type static const unsigned MAX_SUBDIVISION_LEVEL = Renderer_traits::MAX_SUBDIVISION_LEVEL; diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_traits.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_traits.h index 7520f9cfad2..f2e6ecfc314 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_traits.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_traits.h @@ -130,7 +130,7 @@ struct Transform { /*!\brief * class template \c Curve_renderer_traits * - * this traits class prodives various number type conversions for the + * this traits class provides various number type conversions for the * curve renderer */ diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/test/simple_models.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/test/simple_models.h index c81fd5b93bd..86d219fd417 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/test/simple_models.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/test/simple_models.h @@ -1237,7 +1237,7 @@ public: //! \brief checks whether curve has only finitely many self-intersection //! points, i.e., it has no self-overlapped continuous parts //! - //! for algerbaic curves this means that supporting polynomial is + //! for algebraic curves this means that supporting polynomial is //! square-free struct Has_finite_number_of_self_intersections_2 : public CGAL::cpp98::unary_function< Polynomial_2, bool > { @@ -1252,7 +1252,7 @@ public: //! \brief checks whether a curve pair has finitely many intersections, //! in other words, whether two curves have no continuous common part //! - //! in case of algerbaic curves: checks whether supporting polynomials are + //! in case of algebraic curves: checks whether supporting polynomials are //! coprime struct Has_finite_number_of_intersections_2 : public CGAL::cpp98::binary_function< Curve_analysis_2, Curve_analysis_2, bool > { diff --git a/Arrangement_on_surface_2/include/CGAL/IO/Arrangement_2_reader.h b/Arrangement_on_surface_2/include/CGAL/IO/Arrangement_2_reader.h index b98ee25813d..5aa291a6882 100644 --- a/Arrangement_on_surface_2/include/CGAL/IO/Arrangement_2_reader.h +++ b/Arrangement_on_surface_2/include/CGAL/IO/Arrangement_2_reader.h @@ -317,7 +317,7 @@ namespace CGAL { } /*! - * Read a circular boundary of a conncted component. + * Read a circular boundary of a connected component. * \param formatter The formatter. * \param boundary_size The number of halfedges along the boundary. * \param p_outer The outer CCB. diff --git a/Arrangement_on_surface_2/include/CGAL/draw_arrangement_2.h b/Arrangement_on_surface_2/include/CGAL/draw_arrangement_2.h index 0cc6e60b83d..3cea58713c9 100644 --- a/Arrangement_on_surface_2/include/CGAL/draw_arrangement_2.h +++ b/Arrangement_on_surface_2/include/CGAL/draw_arrangement_2.h @@ -197,7 +197,7 @@ namespace draw_function_for_arrangement_2 } } - /*! Draw a region using aproximate coordinates. + /*! Draw a region using approximate coordinates. * Call this member function only if the geometry traits is equipped with * the coordinate-approximation functionality of a curve. * This function must be inlined (e.g., a template) to enable the @@ -416,7 +416,7 @@ namespace draw_function_for_arrangement_2 m_visited.clear(); } - /*! Draw a curve using aproximate coordinates. + /*! Draw a curve using approximate coordinates. * Call this member function only of the geometry traits is equipped with * the coordinate-aproximation functionality of a curve. * This function must be inlined (e.g., a template) to enable the diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt index f138fb0beb3..adb6df001b3 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Arrangement_on_surface_2_Tests) enable_testing() diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_observer.cpp b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_observer.cpp index 6c5d646c62e..88d4cb6bf1a 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_observer.cpp +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_observer.cpp @@ -476,13 +476,13 @@ public: virtual void after_move_isolated_vertex(Vertex_handle /* v */) override { compare_results("after_move_isolated_vertex"); } - /*! Notificaion before the removal of a vertex. + /*! Notification before the removal of a vertex. * \param v A handle to the vertex to be deleted. */ virtual void before_remove_vertex(Vertex_handle /* v */) override { compare_results("before_remove_vertex"); } - /*! Notificaion after the removal of a vertex. + /*! Notification after the removal of a vertex. */ virtual void after_remove_vertex() override { compare_results("after_remove_vertex"); } @@ -493,7 +493,7 @@ public: virtual void before_remove_edge(Halfedge_handle /* e */) override { compare_results("before_remove_edge"); } - /*! Notificaion after the removal of an edge. + /*! Notification after the removal of an edge. */ virtual void after_remove_edge() override { compare_results("after_remove_edge"); } @@ -506,7 +506,7 @@ public: Ccb_halfedge_circulator /* h */) override { compare_results("before_remove_outer_ccb"); } - /*! Notificaion after the removal of an outer CCB. + /*! Notification after the removal of an outer CCB. * \param f The face that used to own the outer CCB. */ virtual void after_remove_outer_ccb(Face_handle /* f */) override @@ -520,7 +520,7 @@ public: Ccb_halfedge_circulator /* h */) override { compare_results("before_remove_inner_ccb"); } - /*! Notificaion after the removal of an inner CCB. + /*! Notification after the removal of an inner CCB. * \param f The face that used to contain the inner CCB. */ virtual void after_remove_inner_ccb(Face_handle /* f */) override diff --git a/BGL/examples/BGL_LCC/CMakeLists.txt b/BGL/examples/BGL_LCC/CMakeLists.txt index 84a67c0f960..da350e1ac2d 100644 --- a/BGL/examples/BGL_LCC/CMakeLists.txt +++ b/BGL/examples/BGL_LCC/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(BGL_LCC_Examples) # CGAL and its components diff --git a/BGL/examples/BGL_OpenMesh/CMakeLists.txt b/BGL/examples/BGL_OpenMesh/CMakeLists.txt index aa4e0e208f2..d11ac1444c9 100644 --- a/BGL/examples/BGL_OpenMesh/CMakeLists.txt +++ b/BGL/examples/BGL_OpenMesh/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(BGL_OpenMesh_Examples) # CGAL and its components diff --git a/BGL/examples/BGL_arrangement_2/CMakeLists.txt b/BGL/examples/BGL_arrangement_2/CMakeLists.txt index 3b36dca73b5..b803d5b9a37 100644 --- a/BGL/examples/BGL_arrangement_2/CMakeLists.txt +++ b/BGL/examples/BGL_arrangement_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(BGL_arrangement_2_Examples) find_package(CGAL REQUIRED) diff --git a/BGL/examples/BGL_graphcut/CMakeLists.txt b/BGL/examples/BGL_graphcut/CMakeLists.txt index af873296cab..0de1b979314 100644 --- a/BGL/examples/BGL_graphcut/CMakeLists.txt +++ b/BGL/examples/BGL_graphcut/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(BGL_graphcut_Examples) diff --git a/BGL/examples/BGL_polyhedron_3/CMakeLists.txt b/BGL/examples/BGL_polyhedron_3/CMakeLists.txt index 9fbe55b6e75..7c901c71d8e 100644 --- a/BGL/examples/BGL_polyhedron_3/CMakeLists.txt +++ b/BGL/examples/BGL_polyhedron_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(BGL_polyhedron_3_Examples) # CGAL and its components diff --git a/BGL/examples/BGL_surface_mesh/CMakeLists.txt b/BGL/examples/BGL_surface_mesh/CMakeLists.txt index 551484979a1..d1b34ec3602 100644 --- a/BGL/examples/BGL_surface_mesh/CMakeLists.txt +++ b/BGL/examples/BGL_surface_mesh/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(BGL_surface_mesh_Examples) find_package(CGAL REQUIRED) diff --git a/BGL/examples/BGL_triangulation_2/CMakeLists.txt b/BGL/examples/BGL_triangulation_2/CMakeLists.txt index 2e2d8290c12..7d479d36c4f 100644 --- a/BGL/examples/BGL_triangulation_2/CMakeLists.txt +++ b/BGL/examples/BGL_triangulation_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(BGL_triangulation_2_Examples) find_package(CGAL REQUIRED) diff --git a/BGL/include/CGAL/boost/graph/METIS/partition_dual_graph.h b/BGL/include/CGAL/boost/graph/METIS/partition_dual_graph.h index 72be6347a71..53f8968f86f 100644 --- a/BGL/include/CGAL/boost/graph/METIS/partition_dual_graph.h +++ b/BGL/include/CGAL/boost/graph/METIS/partition_dual_graph.h @@ -33,6 +33,8 @@ namespace CGAL { namespace METIS { +#ifndef DOXYGEN_RUNNING + template void partition_dual_graph(const TriangleMesh& tm, int nparts, @@ -128,6 +130,8 @@ void partition_dual_graph(const TriangleMesh& tm, int nparts, return partition_dual_graph(tm, nparts, &options, np); } +#endif + /// \ingroup PkgBGLPartition /// /// computes a partition of the input triangular mesh into `nparts` parts, diff --git a/BGL/include/CGAL/boost/graph/METIS/partition_graph.h b/BGL/include/CGAL/boost/graph/METIS/partition_graph.h index e1054f84837..08926a64116 100644 --- a/BGL/include/CGAL/boost/graph/METIS/partition_graph.h +++ b/BGL/include/CGAL/boost/graph/METIS/partition_graph.h @@ -31,6 +31,8 @@ namespace CGAL { namespace METIS { +#ifndef DOXYGEN_RUNNING + struct Output_vertex_partition_ids { template @@ -68,6 +70,8 @@ struct Output_face_partition_ids } }; + + template void partition_graph(const TriangleMesh& tm, int nparts, @@ -161,6 +165,9 @@ void partition_graph(const TriangleMesh& tm, int nparts, return partition_graph(tm, nparts, &options, np); } +#endif + + /// \ingroup PkgBGLPartition /// /// computes a partition of the input triangular mesh into `nparts` parts, based on the diff --git a/BGL/include/CGAL/boost/graph/generators.h b/BGL/include/CGAL/boost/graph/generators.h index 6454253811d..004b84e0290 100644 --- a/BGL/include/CGAL/boost/graph/generators.h +++ b/BGL/include/CGAL/boost/graph/generators.h @@ -300,8 +300,8 @@ make_quad(const P& p0, const P& p1, const P& p2, const P& p3, Graph& g) * \cgalParamNEnd * \cgalNamedParamsEnd **/ -template typename boost::graph_traits::halfedge_descriptor make_hexahedron(const P& p0, const P& p1, const P& p2, const P& p3, diff --git a/BGL/include/CGAL/boost/graph/graph_traits_OpenMesh.h b/BGL/include/CGAL/boost/graph/graph_traits_OpenMesh.h index 17ae1980909..79f1199e24d 100644 --- a/BGL/include/CGAL/boost/graph/graph_traits_OpenMesh.h +++ b/BGL/include/CGAL/boost/graph/graph_traits_OpenMesh.h @@ -607,7 +607,7 @@ remove_face(typename boost::graph_traits::face_descriptor f, sm.status(f).set_deleted(true); } -#if 0 // conflits with function in Euler_operations.h +#if 0 // conflicts with function in Euler_operations.h template std::pair::edge_descriptor, bool> diff --git a/BGL/include/CGAL/boost/graph/iterator.h b/BGL/include/CGAL/boost/graph/iterator.h index 54b54c08ecb..cef4a913cad 100644 --- a/BGL/include/CGAL/boost/graph/iterator.h +++ b/BGL/include/CGAL/boost/graph/iterator.h @@ -214,11 +214,6 @@ public: #ifndef DOXYGEN_RUNNING - explicit operator bool() const - { - return (! (this->base() == nullptr)); - } - bool operator==( const Self& i) const { CGAL_assertion( anchor == anchor); return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding); @@ -308,11 +303,6 @@ public: #ifndef DOXYGEN_RUNNING - explicit operator bool() const - { - return (! (this->base() == nullptr)); - } - bool operator==( const Self& i) const { CGAL_assertion( anchor == anchor); return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding); @@ -400,11 +390,6 @@ public: pointer operator -> ( ) { return &pos; } const value_type* operator -> ( ) const { return &pos; } - explicit operator bool() const - { - return (! (this->base() == nullptr)); - } - bool operator==( const Self& i) const { CGAL_assertion( anchor == anchor); return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding); diff --git a/BGL/test/BGL/CMakeLists.txt b/BGL/test/BGL/CMakeLists.txt index 3b4304b5056..fd43a685fe5 100644 --- a/BGL/test/BGL/CMakeLists.txt +++ b/BGL/test/BGL/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script_with_options # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(BGL_Tests) # CGAL and its components diff --git a/BGL/test/BGL/test_Euler_operations.cpp b/BGL/test/BGL/test_Euler_operations.cpp index 3fdcfe0edec..941758cb1c3 100644 --- a/BGL/test/BGL/test_Euler_operations.cpp +++ b/BGL/test/BGL/test_Euler_operations.cpp @@ -531,7 +531,7 @@ add_faces() typedef typename boost::graph_traits::face_descriptor face_descriptor; typedef typename boost::graph_traits::halfedge_descriptor halfedge_descriptor; - // read a mesh with bord + test append + // read a mesh with border + test append { T m; diff --git a/Barycentric_coordinates_2/benchmark/Barycentric_coordinates_2/CMakeLists.txt b/Barycentric_coordinates_2/benchmark/Barycentric_coordinates_2/CMakeLists.txt index c7341df3d11..fcffb885cd4 100644 --- a/Barycentric_coordinates_2/benchmark/Barycentric_coordinates_2/CMakeLists.txt +++ b/Barycentric_coordinates_2/benchmark/Barycentric_coordinates_2/CMakeLists.txt @@ -3,7 +3,7 @@ project(Barycentric_coordinates_2_Benchmarks) -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt b/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt index 7708fc685df..e7d800ca44e 100644 --- a/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt +++ b/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script. # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Barycentric_coordinates_2_Examples) diff --git a/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt b/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt index d1dcba597f7..110315938f9 100644 --- a/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt +++ b/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script. # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Barycentric_coordinates_2_Tests) diff --git a/Basic_viewer/examples/Basic_viewer/CMakeLists.txt b/Basic_viewer/examples/Basic_viewer/CMakeLists.txt index f758661d6bb..29c492e8864 100644 --- a/Basic_viewer/examples/Basic_viewer/CMakeLists.txt +++ b/Basic_viewer/examples/Basic_viewer/CMakeLists.txt @@ -6,7 +6,7 @@ # Used in /CGAL/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt. # Careful when modifying -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Basic_viewer_Examples) #CGAL_Qt6 is needed for the drawing. diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt b/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt index c2b9b311b2b..d03add5708a 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt @@ -575,13 +575,13 @@ If the `UsePolylines` template parameter is substitited with
  • Instead of using an instance of the `Polygon_set_2` class template, as described above, an instance of the -`General_polygon_set_2` class template is used, which utilzes the +`General_polygon_set_2` class template is used, which utilizes the `Arr_polyline_traits_2` class template; see Section \ref arr_ssectr_polylines in the 2D Arrangements package.
  • Each input linear polygon (respectively linear polygon with holes) is converted into a general polygon (respectively general polygon with holes) -bounded by \f$x\f$-monotone polylines. Then, the resulting generl +bounded by \f$x\f$-monotone polylines. Then, the resulting general polygons, which are also bounded by \f$x\f$-monotone polylines, are converted back to standard polygons. diff --git a/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt b/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt index 518d1512942..94061c2d362 100644 --- a/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt +++ b/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Boolean_set_operations_2_Examples) find_package(CGAL REQUIRED COMPONENTS Core OPTIONAL_COMPONENTS Qt6) diff --git a/Boolean_set_operations_2/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h b/Boolean_set_operations_2/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h index 8f50cc8960c..d5bcafcbdfc 100644 --- a/Boolean_set_operations_2/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h +++ b/Boolean_set_operations_2/include/CGAL/Boolean_set_operations_2/Gps_polygon_validation.h @@ -691,7 +691,7 @@ bool are_holes_and_boundary_pairwise_disjoint bool intersect = gps.do_intersect(hole); if (intersect) return false; else { - /* to use gps.insert(hole) it is required that the set coponents and the + /* to use gps.insert(hole) it is required that the set components and the * new holes do not intersect. * because the sweep detects shared edges and the do_intersect query * detects 2D intersections we can safely use the insert(pwh) function diff --git a/Boolean_set_operations_2/include/CGAL/connect_holes.h b/Boolean_set_operations_2/include/CGAL/connect_holes.h index 8ae06574970..b1dad76abad 100644 --- a/Boolean_set_operations_2/include/CGAL/connect_holes.h +++ b/Boolean_set_operations_2/include/CGAL/connect_holes.h @@ -48,7 +48,7 @@ struct _Less_handle /*! * Connect the given polygon with holes, turning it into a sequence of - * points, where the holes are connceted to the outer boundary using + * points, where the holes are connected to the outer boundary using * zero-width passages. * For example: * Input Output diff --git a/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt b/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt index 300171345e2..60bd93b4d37 100644 --- a/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt +++ b/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Boolean_set_operations_2_Tests) find_package(CGAL REQUIRED) diff --git a/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt b/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt index 6fa6f1b923f..aed57e369fc 100644 --- a/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt +++ b/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Approximate_min_ellipsoid_d_Examples) find_package(CGAL REQUIRED) diff --git a/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt b/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt index 4d797fd1b1d..9c56c1f8cd2 100644 --- a/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Min_annulus_d_Examples) find_package(CGAL REQUIRED) diff --git a/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt b/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt index ee069d86f70..9d537c51338 100644 --- a/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Min_circle_2_Examples) find_package(CGAL REQUIRED) diff --git a/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt b/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt index 4967fe6315b..5a8ff8b5094 100644 --- a/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Min_ellipse_2_Examples) find_package(CGAL REQUIRED) diff --git a/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt b/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt index 7f4d13c2a88..4ec0538e65a 100644 --- a/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Min_quadrilateral_2_Examples) find_package(CGAL REQUIRED) diff --git a/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt b/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt index 8910eff221f..52f22930d06 100644 --- a/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Min_sphere_d_Examples) find_package(CGAL REQUIRED) diff --git a/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt b/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt index ee8d25c3d7a..04fdce0a6c7 100644 --- a/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Min_sphere_of_spheres_d_Examples) find_package(CGAL REQUIRED) diff --git a/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt b/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt index 820aa6d16aa..b4232b361a1 100644 --- a/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt +++ b/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Rectangular_p_center_2_Examples) find_package(CGAL REQUIRED) diff --git a/Bounding_volumes/include/CGAL/Approximate_min_ellipsoid_d.h b/Bounding_volumes/include/CGAL/Approximate_min_ellipsoid_d.h index 90bda509b4b..b7b8fe03ea7 100644 --- a/Bounding_volumes/include/CGAL/Approximate_min_ellipsoid_d.h +++ b/Bounding_volumes/include/CGAL/Approximate_min_ellipsoid_d.h @@ -195,7 +195,7 @@ namespace CGAL { // where alpha = (1+a_eps)(d+1) with a_eps the return value // of achieved_epsilon(). // - // The ellipsoid E* we actuallly want is the intersection of E' with + // The ellipsoid E* we actually want is the intersection of E' with // the hyperplane { (y,z) in R^{d+1} | y = 1}. Writing // // [ M' m ] [ y ] diff --git a/Bounding_volumes/include/CGAL/pierce_rectangles_2.h b/Bounding_volumes/include/CGAL/pierce_rectangles_2.h index 8a7f3560a38..f33964389da 100644 --- a/Bounding_volumes/include/CGAL/pierce_rectangles_2.h +++ b/Bounding_volumes/include/CGAL/pierce_rectangles_2.h @@ -794,7 +794,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) if (d.is_middle_empty()) { // now try to position the bottom piercing point in each - // of the intervalls formed by S_bt and S_br + // of the intervals formed by S_bt and S_br // (no need to consider S_bl, since we move from left // to right and leaving a rectangle won't make piercing easier) @@ -813,7 +813,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) Citerator br = d.brstc_begin(); Citerator rt = d.rtstc_begin(); - // make sure the top intervall is covered (left endpoint) + // make sure the top interval is covered (left endpoint) // (it might be that top_i.first determines the placement of // the top square) Point_2 top = top_i.first; @@ -826,14 +826,14 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) if (tl != d.tlstc_end()) { for (;;) { - // make sure the top intervall is covered (right endpoint) + // make sure the top interval is covered (right endpoint) if (sdistx(top_i.second, top) > FT(2) * d.r) break; // compute position of left square Point_2 left = lessy(left_i.second, *tl) ? *tl : left_i.second; - // make sure the left intervall is covered + // make sure the left interval is covered if (sdisty(left, left_i.first) <= FT(2) * d.r) { // compute position of bottom square @@ -844,7 +844,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) break; Point_2 bottom = lessx(bottom_i.first, *lb) ? bottom_i.first : *lb; - // check the shared x-intervall + // check the shared x-interval if (!share.empty() && d.is_x_greater_y()) { // compute position of top in share #ifndef _MSC_VER @@ -862,7 +862,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) sdistx(*(shl - 1), top) > FT(2) * d.r) --shl; - // make sure shared intervall is covered (left endpoint) + // make sure shared interval is covered (left endpoint) #ifndef _MSC_VER if ((shf != share.begin() || shl == share.end()) && lessx(share.front(), bottom)) @@ -881,7 +881,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) } - // make sure the bottom and the shared intervall (right endpoint) + // make sure the bottom and the shared interval (right endpoint) // are covered #ifndef _MSC_VER if (sdistx(bottom_i.second, bottom) <= FT(2) * d.r && @@ -907,7 +907,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) break; Point_2 right = lessy(right_i.first, *br) ? right_i.first : *br; - // check the shared y-intervall + // check the shared y-interval if (!share.empty() && !d.is_x_greater_y()) { // compute position of left in share #ifndef _MSC_VER @@ -926,7 +926,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) lessy(left, *(shl - 1))) --shl; - // make sure shared intervall is covered (bottom endpoint) + // make sure shared interval is covered (bottom endpoint) #ifndef _MSC_VER if ((shf != share.begin() || shl == share.end()) && lessy(share.front(), right)) @@ -945,7 +945,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) } - // make sure the right intervall and the shared intervall + // make sure the right interval and the shared interval // (top endpoint) are covered #ifndef _MSC_VER if (sdisty(right_i.second, right) <= FT(2) * d.r && @@ -985,7 +985,7 @@ four_cover_points(Staircases< Traits >& d, OutputIterator o, bool& ok) } // if (sdisty(right_i.second, right) <= FT(2) * d.r) - } // if (bottom and shared intervall are covered) + } // if (bottom and shared interval are covered) } // if (sdisty(left, left_i.first) <= FT(2) * d.r) diff --git a/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt b/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt index 00f2f7cf179..a5b3adfd744 100644 --- a/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt +++ b/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Bounding_volumes_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt b/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt index a311dca9bf7..f1de0dd7150 100644 --- a/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt +++ b/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Box_intersection_d_Examples) find_package(CGAL REQUIRED) diff --git a/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt b/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt index 56fa8d95856..5d9d3e4be8b 100644 --- a/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt +++ b/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Box_intersection_d_Tests) find_package(CGAL REQUIRED) diff --git a/CGAL_Core/examples/Core/CMakeLists.txt b/CGAL_Core/examples/Core/CMakeLists.txt index 6d9e732db93..5f1d17eeb8a 100644 --- a/CGAL_Core/examples/Core/CMakeLists.txt +++ b/CGAL_Core/examples/Core/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Core_Examples) # CGAL and its components diff --git a/CGAL_Core/include/CGAL/CORE/BigFloat.h b/CGAL_Core/include/CGAL/CORE/BigFloat.h index de9ed2f5508..5b1bd138bca 100644 --- a/CGAL_Core/include/CGAL/CORE/BigFloat.h +++ b/CGAL_Core/include/CGAL/CORE/BigFloat.h @@ -332,7 +332,7 @@ public: return rep->clLgErr(); } - /// division with relative precsion r + /// division with relative precision r BigFloat div(const BigFloat& x, const extLong& r) const { BigFloat y; y.rep->div(*rep, *x.rep, r); diff --git a/CGAL_Core/include/CGAL/CORE/Filter.h b/CGAL_Core/include/CGAL/CORE/Filter.h index e71c8aa8733..96064b403b4 100644 --- a/CGAL_Core/include/CGAL/CORE/Filter.h +++ b/CGAL_Core/include/CGAL/CORE/Filter.h @@ -92,7 +92,7 @@ public: CGAL_CORE_finite(fpVal) && // Test for infinite and NaNs (core_abs(fpVal) >= maxAbs*ind*CORE_EPS)); } - /// return the sign of fitered value. + /// return the sign of filtered value. /** (Note: must call isOK() to check whether the sign is ok before call this function.) */ int sign() const { diff --git a/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt b/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt index a9e95aef718..ee152bc87a8 100644 --- a/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt +++ b/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(CGALimageIO_Examples) find_package(CGAL REQUIRED COMPONENTS ImageIO) diff --git a/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt b/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt index 81349809977..9a5154fe35a 100644 --- a/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt +++ b/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(CGAL_ImageIO_Tests) find_package(CGAL REQUIRED COMPONENTS ImageIO) diff --git a/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt b/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt index f40e7275bdc..6c942000068 100644 --- a/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt +++ b/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(CGAL_ipelets_Demo) if(NOT POLICY CMP0070 AND POLICY CMP0053) diff --git a/CGAL_ipelets/demo/CGAL_ipelets/nearest_neighbor_graph.cpp b/CGAL_ipelets/demo/CGAL_ipelets/nearest_neighbor_graph.cpp index 32cec4460dd..bf1954cf307 100644 --- a/CGAL_ipelets/demo/CGAL_ipelets/nearest_neighbor_graph.cpp +++ b/CGAL_ipelets/demo/CGAL_ipelets/nearest_neighbor_graph.cpp @@ -68,7 +68,7 @@ void nngIpelet::protected_run(int fn) ++v){ std::vector kNN; - CGAL::nearest_neighbors(t, v, kNeighbors+1, std::back_inserter(kNN)); // +1 as v itself counts as its nearest neigbhor for CGAL::nearest_neighbors + CGAL::nearest_neighbors(t, v, kNeighbors+1, std::back_inserter(kNN)); // +1 as v itself counts as its nearest neighbor for CGAL::nearest_neighbors for(const auto & nn : kNN) { if(v->point() != nn->point()) { diff --git a/CGAL_ipelets/test/CGAL_ipelets/CMakeLists.txt b/CGAL_ipelets/test/CGAL_ipelets/CMakeLists.txt index 8acaf9834e4..ae82aa48f7f 100644 --- a/CGAL_ipelets/test/CGAL_ipelets/CMakeLists.txt +++ b/CGAL_ipelets/test/CGAL_ipelets/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(CGAL_ipelets_Tests) find_package(CGAL REQUIRED) diff --git a/CMakeLists.txt b/CMakeLists.txt index c7f9ace726f..cb6cbcce79a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # Top level CMakeLists.txt for CGAL-branchbuild # Minimal version of CMake: -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) message("== CMake setup ==") project(CGAL CXX C) diff --git a/Cartesian_kernel/TODO b/Cartesian_kernel/TODO index a290949e9e7..18b6330fa76 100644 --- a/Cartesian_kernel/TODO +++ b/Cartesian_kernel/TODO @@ -3,7 +3,7 @@ Stuff to look at, as time permits: - Why Ray_3 and Line_3 don't have the same internal representation ??? -- Triangle-Triangle instersection (and predicate) : +- Triangle-Triangle intersection (and predicate) : Tomas Möller. A fast triangle-triangle intersection test. Journal of Graphics Tools, 2(2):25-30, 1997 A Fast Triangle-Triangle Intersection Test, tompa@clarus.se diff --git a/Circular_kernel_2/benchmark/arrangement_traits/benchmark.h b/Circular_kernel_2/benchmark/arrangement_traits/benchmark.h index 216e670bfc7..b5689f4b469 100644 --- a/Circular_kernel_2/benchmark/arrangement_traits/benchmark.h +++ b/Circular_kernel_2/benchmark/arrangement_traits/benchmark.h @@ -210,7 +210,7 @@ class Bench Pmwx _pm; Point_location _pl(_pm); - std::cout << "Construction complited"<start(); diff --git a/Circular_kernel_2/benchmark/bff_reader/readme.txt b/Circular_kernel_2/benchmark/bff_reader/readme.txt index 8693d154410..c963806d698 100644 --- a/Circular_kernel_2/benchmark/bff_reader/readme.txt +++ b/Circular_kernel_2/benchmark/bff_reader/readme.txt @@ -1,6 +1,6 @@ It's not finished reader off .bff it uses extended version of parser. I hope it will be useful for yours future works. By using -this source you can easyly create yours own. +this source you can easily create yours own. missing Circular-arc diff --git a/Circular_kernel_2/benchmark/incremental_insertion/benchmark.h b/Circular_kernel_2/benchmark/incremental_insertion/benchmark.h index bb1e534e73b..27acf6e3764 100644 --- a/Circular_kernel_2/benchmark/incremental_insertion/benchmark.h +++ b/Circular_kernel_2/benchmark/incremental_insertion/benchmark.h @@ -212,7 +212,7 @@ class Bench Pmwx _pm; Point_location _pl(_pm); - std::cout << "Construction complited"<start(); for (typename ArcContainer::const_iterator it=ac.begin(); diff --git a/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt b/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt index 632afcdfd9e..7b2f5e9e627 100644 --- a/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt +++ b/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Circular_kernel_2_Examples) find_package(CGAL REQUIRED) diff --git a/Circular_kernel_2/include/CGAL/Circular_kernel_2/internal_functions_on_circular_arc_2.h b/Circular_kernel_2/include/CGAL/Circular_kernel_2/internal_functions_on_circular_arc_2.h index 1e577eea5b3..b5830954ec7 100644 --- a/Circular_kernel_2/include/CGAL/Circular_kernel_2/internal_functions_on_circular_arc_2.h +++ b/Circular_kernel_2/include/CGAL/Circular_kernel_2/internal_functions_on_circular_arc_2.h @@ -1453,7 +1453,7 @@ template < class CK, class OutputIterator > // returns extra information, descriptive of the position of the returned // xy-monotone arcs on the circle: The output iterator refers to pairs, the // first part of which is the object containing the arc and the second part -// is another pair containing 2 booleans which equavalently describe whether the +// is another pair containing 2 booleans which equivalently describe whether the // returned xy-monotone arc is on the upper part and the left side of the circle template < typename CK , typename Output_iterator> diff --git a/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt b/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt index 84c04f4acce..c74331fa0da 100644 --- a/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt +++ b/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Circular_kernel_2_Tests) find_package(CGAL REQUIRED) diff --git a/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt b/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt index 42cc885bbff..15b323a35e4 100644 --- a/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt +++ b/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Circular_kernel_3_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt b/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt index c8eb6e71565..dd790cb013e 100644 --- a/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt +++ b/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Circular_kernel_3_Examples) find_package(CGAL REQUIRED) diff --git a/Circular_kernel_3/examples/Circular_kernel_3/intersecting_spheres.cpp b/Circular_kernel_3/examples/Circular_kernel_3/intersecting_spheres.cpp index a31eef6daf3..a53f4f7f29f 100644 --- a/Circular_kernel_3/examples/Circular_kernel_3/intersecting_spheres.cpp +++ b/Circular_kernel_3/examples/Circular_kernel_3/intersecting_spheres.cpp @@ -15,8 +15,8 @@ int main() { CGAL::Random theRandom(random_seed); int count = 0; - std::cout << "We will compute the approximate probability that 3 spheres wit" - << "h radius 1 intersect on a 5x5x5 box, it might take some time." << std::endl; + std::cout << "We will compute the approximate probability that 3 spheres with" + << " radius 1 intersect on a 5x5x5 box, it might take some time." << std::endl; for(int i=0; i<10000; i++) { diff --git a/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt b/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt index 219405b6544..11f64e04486 100644 --- a/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt +++ b/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Circular_kernel_3_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Circulator/examples/Circulator/CMakeLists.txt b/Circulator/examples/Circulator/CMakeLists.txt index 8ba44aa2017..45ce196888c 100644 --- a/Circulator/examples/Circulator/CMakeLists.txt +++ b/Circulator/examples/Circulator/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Circulator_Examples) find_package(CGAL REQUIRED) diff --git a/Circulator/test/Circulator/CMakeLists.txt b/Circulator/test/Circulator/CMakeLists.txt index c2cf6a767ae..379b55cc364 100644 --- a/Circulator/test/Circulator/CMakeLists.txt +++ b/Circulator/test/Circulator/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Circulator_Tests) find_package(CGAL REQUIRED) diff --git a/Classification/examples/Classification/CMakeLists.txt b/Classification/examples/Classification/CMakeLists.txt index daf1223226e..3e68edb7495 100644 --- a/Classification/examples/Classification/CMakeLists.txt +++ b/Classification/examples/Classification/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Classification_Examples) # CGAL and its components diff --git a/Classification/examples/Classification/gis_tutorial_example.cpp b/Classification/examples/Classification/gis_tutorial_example.cpp index c1bbc20a4d4..ad81fc3ee27 100644 --- a/Classification/examples/Classification/gis_tutorial_example.cpp +++ b/Classification/examples/Classification/gis_tutorial_example.cpp @@ -470,7 +470,7 @@ int main (int argc, char** argv) } } - // Fill all holes except the bigest (which is the outer hull of the mesh) + // Fill all holes except the biggest (which is the outer hull of the mesh) for (Mesh::Halfedge_index hi : holes) if (hi != outer_hull) CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole diff --git a/Classification/test/Classification/CMakeLists.txt b/Classification/test/Classification/CMakeLists.txt index 6e179f78144..a50e55a9ecd 100644 --- a/Classification/test/Classification/CMakeLists.txt +++ b/Classification/test/Classification/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Classification_Tests) # CGAL and its components diff --git a/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt b/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt index d3432650bd9..828f4756926 100644 --- a/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt +++ b/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Combinatorial_map_Examples) find_package(CGAL REQUIRED) diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map.h b/Combinatorial_map/include/CGAL/Combinatorial_map.h index 08e57b8384a..aaa360677b7 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map.h @@ -3716,7 +3716,7 @@ namespace CGAL { /** Create an edge. * if closed==true, the edge has no 2-free dart. - * (note that for CMap there is no differente between true and false, but + * (note that for CMap there is no difference between true and false, but * this is not the case for GMap) * @return a dart of the new edge. */ @@ -3733,7 +3733,7 @@ namespace CGAL { * @param h0 the first vertex descriptor. * @param h1 the second vertex descriptor. * if closed==true, the edge has no 2-free dart. - * (note that for CMap there is no differente between true and false, but + * (note that for CMap there is no difference between true and false, but * this is not the case for GMap) * @return the dart of the new edge incident to h0. */ diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map_storages_with_index.h b/Combinatorial_map/include/CGAL/Combinatorial_map_storages_with_index.h index 2b2ecf81183..d69147d1820 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map_storages_with_index.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map_storages_with_index.h @@ -75,7 +75,7 @@ namespace CGAL { struct Container_for_attributes : public Compact_container_with_index, - Multiply_by_two_policy_for_cc_with_size<64>, size_type > + Multiply_by_two_policy_for_cc_with_size<64>, Index_type > {}; /// Typedef for attributes typedef typename internal::template Get_attributes_tuple::type diff --git a/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt b/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt index 6357af2198d..d0c26ec31c5 100644 --- a/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt +++ b/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Combinatorial_map_Tests) find_package(CGAL REQUIRED) diff --git a/Cone_spanners_2/doc/Cone_spanners_2/fig/pkg-small.png b/Cone_spanners_2/doc/Cone_spanners_2/fig/pkg-small.png deleted file mode 100644 index 5609b037587..00000000000 Binary files a/Cone_spanners_2/doc/Cone_spanners_2/fig/pkg-small.png and /dev/null differ diff --git a/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt b/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt index 99442720fc1..4f4f2226ffc 100644 --- a/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt +++ b/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Cone_spanners_2_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core) diff --git a/Cone_spanners_2/include/CGAL/Cone_spanners_2/Plane_scan_tree.h b/Cone_spanners_2/include/CGAL/Cone_spanners_2/Plane_scan_tree.h index 2584d72ae2c..66de14eecc2 100644 --- a/Cone_spanners_2/include/CGAL/Cone_spanners_2/Plane_scan_tree.h +++ b/Cone_spanners_2/include/CGAL/Cone_spanners_2/Plane_scan_tree.h @@ -100,7 +100,7 @@ public: : less (comp), vless (vcomp), root (nullptr), m_min (nullptr), m_max (nullptr), _size (0) { - // buids the tree + // builds the tree /* Note: a more efficient algorithm building the tree bottom up may be worth implementing later */ for (; first != last; ++first) diff --git a/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt b/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt index 17c47060a82..e4d05d60618 100644 --- a/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt +++ b/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Cone_spanners_2_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt b/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt index 489e5d94d1f..6fb39bf6485 100644 --- a/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt +++ b/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Convex_decomposition_3_Examples) find_package(CGAL REQUIRED) diff --git a/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt b/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt index 6e7cd7be365..660388d7120 100644 --- a/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt +++ b/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Convex_decomposition_3_Tests) find_package(CGAL REQUIRED) diff --git a/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt b/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt index f6b01a21089..dad37d65a65 100644 --- a/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt +++ b/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Convex_hull_2_Examples) find_package(CGAL REQUIRED) diff --git a/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt b/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt index dce3baec694..ba7b0c0b8c1 100644 --- a/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt +++ b/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Convex_hull_2_Tests) find_package(CGAL REQUIRED) diff --git a/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt b/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt index 2b436e6ea29..4b6f08ba252 100644 --- a/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt +++ b/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Convex_hull_3_Examples) # CGAL and its components diff --git a/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt b/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt index 3a728d3500a..3f8e9eb6830 100644 --- a/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt +++ b/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Convex_hull_3_Tests) find_package(CGAL REQUIRED) diff --git a/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d.h b/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d.h index aa1d645b345..7ebe0f21529 100644 --- a/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d.h +++ b/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d.h @@ -352,7 +352,7 @@ void print_statistics() ; /*! checks the -validity of the data structure. If `throw_exceptions == thrue` +validity of the data structure. If `throw_exceptions == true` then the program throws the following exceptions to inform about the problem. `chull_has_center_on_wrong_side_of_hull_facet` the diff --git a/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt b/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt index 455aaddce49..5e04a505476 100644 --- a/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt +++ b/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Convex_hull_d_Tests) find_package(CGAL REQUIRED) diff --git a/Distance_2/test/Distance_2/CMakeLists.txt b/Distance_2/test/Distance_2/CMakeLists.txt index 1437d66c0dc..18adb56e7b8 100644 --- a/Distance_2/test/Distance_2/CMakeLists.txt +++ b/Distance_2/test/Distance_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Distance_2_Tests) find_package(CGAL REQUIRED) diff --git a/Distance_3/test/Distance_3/CMakeLists.txt b/Distance_3/test/Distance_3/CMakeLists.txt index b345cb2eaf8..9d4d21a31ec 100644 --- a/Distance_3/test/Distance_3/CMakeLists.txt +++ b/Distance_3/test/Distance_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Distance_3_Tests) find_package(CGAL REQUIRED) diff --git a/Documentation/doc/CMakeLists.txt b/Documentation/doc/CMakeLists.txt index 6325f7f980f..52ee7faa48b 100644 --- a/Documentation/doc/CMakeLists.txt +++ b/Documentation/doc/CMakeLists.txt @@ -1,8 +1,6 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Documentation NONE) -# Minimal version of CMake: - # Check whether this cmake script is the top level one if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) # decide if this is a branch build @@ -79,6 +77,7 @@ function(configure_doxygen_package CGAL_PACKAGE_NAME) if(NOT EXISTS ${CGAL_PACKAGE_DOC_DIR}/Doxyfile.in) return() endif() + set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CGAL_PACKAGE_DOC_DIR}/Doxyfile.in) set(CGAL_DOC_PACKAGE_DEFAULTS ${CGAL_DOC_DXY_DIR}/${CGAL_PACKAGE_NAME}_defaults.dxy) @@ -166,6 +165,7 @@ function(configure_doxygen_package CGAL_PACKAGE_NAME) endforeach() else() if(EXISTS ${CGAL_PACKAGE_DOC_DIR}/dependencies) + set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CGAL_PACKAGE_DOC_DIR}/dependencies) file(STRINGS ${CGAL_PACKAGE_DOC_DIR}/dependencies DEPENDENCIES) endif() endif() diff --git a/Documentation/doc/Documentation/Developer_manual/Chapter_handles.txt b/Documentation/doc/Documentation/Developer_manual/Chapter_handles.txt index e93fd1179c7..9caa0f25203 100644 --- a/Documentation/doc/Documentation/Developer_manual/Chapter_handles.txt +++ b/Documentation/doc/Documentation/Developer_manual/Chapter_handles.txt @@ -144,7 +144,7 @@ shared with other `My_geo_object` objects. \section Developer_manualTemplatedhandles Templated handles -Factoring out the common functionality in base classes enables re-use of +Factoring out the common functionality in base classes enables reuse of the code, but there is also a major drawback. The `Handle` class does not know the type of the representation object. It maintains a `Rep*` pointer. Therefore, this pointer must be cast to a pointer to the actual type diff --git a/Documentation/doc/Documentation/Developer_manual/Chapter_kernels.txt b/Documentation/doc/Documentation/Developer_manual/Chapter_kernels.txt index 78706045ef7..c665ec1f890 100644 --- a/Documentation/doc/Documentation/Developer_manual/Chapter_kernels.txt +++ b/Documentation/doc/Documentation/Developer_manual/Chapter_kernels.txt @@ -92,7 +92,7 @@ the same object with opposite orientation. For a number of predicates, there are versions that operate on the coordinates directly, not on the geometric objects. These -number-type based predicates ease re-use with non-CGAL types. +number-type based predicates ease reuse with non-CGAL types. \section secNewKernelTraits Missing functionality @@ -103,7 +103,7 @@ with a different API, then one should really implement the functionality and the others call that one. Whenever you need a predicate that is not present in the current kernel -traits, you should first try to re-use the available predicates (you +traits, you should first try to reuse the available predicates (you might rewrite the code or implement the new predicate using existing ones). If this is not feasible (especially for efficiency reasons), we have to decide on adding the new predicate to the kernel traits. diff --git a/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt b/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt index d55f4c0819b..f78ac8de15e 100644 --- a/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt +++ b/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt @@ -33,14 +33,17 @@ This section describes a minimal example of a program that uses \cgal and Qt6 fo \skip cmake_minimum_required \until project + \skip #CGAL_Qt6 is needed for the drawing. -\until endif() +\until find_package + \skip #create the executable of the application \until "draw_surface_mesh.cpp" + \skip if(CGAL_Qt6_FOUND) -\until target_link_libraries(draw_surface_mesh PUBLIC CGAL::CGAL_Qt6) +\until target_link_libraries(draw_surface_mesh PUBLIC CGAL::CGAL_Basic_viewer) \skip endif \until #end of the file diff --git a/Documentation/doc/Documentation/Doxyfile.in b/Documentation/doc/Documentation/Doxyfile.in index d3e21f24daa..1b174bb8635 100644 --- a/Documentation/doc/Documentation/Doxyfile.in +++ b/Documentation/doc/Documentation/Doxyfile.in @@ -19,7 +19,6 @@ FILTER_PATTERNS = *.txt=${CMAKE_BINARY_DIR}/pkglist_filter HTML_EXTRA_FILES += ${CGAL_DOC_RESOURCE_DIR}/hacks.js \ ${CGAL_DOC_RESOURCE_DIR}/menu_version.js \ - ${CGAL_DOC_RESOURCE_DIR}/cgal_stylesheet.css \ ${CMAKE_BINARY_DIR}/how_to_cite_cgal.bib \ ${CMAKE_BINARY_DIR}/how_to_cite.html \ ${CGAL_PACKAGE_DOC_DIR}/fig/g-196x196-doc.png diff --git a/Documentation/doc/Documentation/Getting_started.txt b/Documentation/doc/Documentation/Getting_started.txt index 71d5f9b9e7a..5bb9d0f56a3 100644 --- a/Documentation/doc/Documentation/Getting_started.txt +++ b/Documentation/doc/Documentation/Getting_started.txt @@ -7,7 +7,7 @@ The following pages describe how to use \cgal on different environments: - \subpage windows -- \subpage thirdparty gives information (supported versions, download links) of the required and optional third party libraries. +- \subpage thirdparty gives information (supported versions, download links) of the required and optional third-party libraries. - \subpage devman_create_and_use_a_cmakelist explains how to use CMake to link a program with \cgal. diff --git a/Documentation/doc/Documentation/Third_party.txt b/Documentation/doc/Documentation/Third_party.txt index 7a81f1e4fcb..d2eeb5d9b7e 100644 --- a/Documentation/doc/Documentation/Third_party.txt +++ b/Documentation/doc/Documentation/Third_party.txt @@ -153,7 +153,7 @@ executables should be linked with the CMake imported target The \libpointmatcher web site is `https://github.com/ethz-asl/libpointmatcher`. \attention On Windows, we only support version 1.3.1 of PointMatcher with version 3.3.7 of Eigen, with some changes to the recipe at -`https://github.com/ethz-asl/libpointmatcher/blob/master/doc/CompilationWindows.md`:`NABO_INCLUDE_DIR` becomes `libnabo_INCLUDE_DIRS` +`https://github.com/ethz-asl/libpointmatcher/blob/master/doc/Compilation.md`:`NABO_INCLUDE_DIR` becomes `libnabo_INCLUDE_DIRS` and `NABO_LIBRARY` becomes `libnabo_LIBRARIES` in the "Build libpointmatcher" section. diff --git a/Documentation/doc/biblio/cgal_manual.bib b/Documentation/doc/biblio/cgal_manual.bib index 51dfb109004..25bb729e33d 100644 --- a/Documentation/doc/biblio/cgal_manual.bib +++ b/Documentation/doc/biblio/cgal_manual.bib @@ -2778,7 +2778,7 @@ author = "Pedro M.M. de Castro and Frederic Cazals and Sebastien Loriot and Moni editor = "Jacob E. Goodman, J\'anos Pach and Emo Welzl", year = {2005}, pages = {439-458}, - URL = {http://library.msri.org/books/Book52/files/23liu.pdf}, + URL = {http://library.slmath.org/books/Book52/files/23liu.pdf}, publisher = {MSRI Publications} } diff --git a/Documentation/doc/biblio/geom.bib b/Documentation/doc/biblio/geom.bib index eb90c3c0d86..d6b9488ec1f 100644 --- a/Documentation/doc/biblio/geom.bib +++ b/Documentation/doc/biblio/geom.bib @@ -695,7 +695,7 @@ , title = "Protein data bank" , editor = "F. H. Allen and G. Bergerhoff and R. Seivers" , booktitle = "Crystallographic Databases: Information Content, Software Systems, Scientific Applications" -, publisher = "Data Comission of the International Union of Crystallography" +, publisher = "Data Commission of the International Union of Crystallography" , address = "Bonn/Cambridge/Chester" , year = 1987 , update = "98.03 bibrelex" @@ -1691,7 +1691,7 @@ cell neighborhood in $O(m)$ time." , year = 1995 , pages = "267--276" , issn = "0-89791-724-3" -, keywords = "ray shooting, contrained triangulation, tetrahedra" +, keywords = "ray shooting, constrained triangulation, tetrahedra" , cites = "am-stl3s-95, as-tsbac-90, be-mgot-92i, b-ct-93, c-cpplb-84, ceg-ccc-89, cp-tncp-90, cs-bst-94, cw-qorss-89, dk-fdpi-82, dk-ladsc-85, e-t-91, hs-parss-95, m-ept-92, mms-qsrs-94, o-agta-87, rs-dt3dn-89, w-stlcn-92t, ZZZ" , update = "98.07 bibrelex, 98.03 bibrelex, 95.09 mitchell" } @@ -2353,7 +2353,7 @@ cell neighborhood in $O(m)$ time." @inproceedings{amv-nacbs-98 , author = "Pankaj K. Agarwal and T. Murali and J. Vitter" , title = "A new algorithm for constructing binary space partitions for orthogonal rectangles" -, booktitle = "Proc. European Sympos. Algortihms" +, booktitle = "Proc. European Sympos. Algorithms" , year = 1998 , update = "99.03 agarwal" } @@ -2942,7 +2942,7 @@ cell neighborhood in $O(m)$ time." @article{a-lncg-88 , author = "A. Aggarwal" , title = "Lecture Notes in Computational Geometry" -, journal = "MIT Reserch Seminar Series MIT/LCS/RSS" +, journal = "MIT Research Seminar Series MIT/LCS/RSS" , volume = 3 , month = aug , year = 1988 @@ -4413,7 +4413,7 @@ cell neighborhood in $O(m)$ time." @inproceedings{ahk-sgaan-87 , author = "S. B. Akers and D. Harel and B. Krishnamurthy" , title = "The Star Graph: An Attractive Alternative to the {$n$}-cube" -, booktitle = "Proc. Int. Conf. on Parrallel Processing" +, booktitle = "Proc. Int. Conf. on Parallel Processing" , year = 1987 , pages = "393--400" , update = "98.07 bibrelex" @@ -8161,7 +8161,7 @@ cell neighborhood in $O(m)$ time." , editor = "T. C. Waugh and R. G. Healey" , booktitle = "Proc. 6th Internat. Sympos. Spatial Data Handling" , site = "Edinburgh, Scotland" -, organization = "International Geographical Union Comission on Geographic Information Systems, Association for Geographical Information" +, organization = "International Geographical Union Commission on Geographic Information Systems, Association for Geographical Information" , month = sep , year = 1994 , pages = "190--208" @@ -9887,7 +9887,7 @@ sites with respect to the geodesic metric within a simple $n$-sided polygon." @incollection{a-rrm-91 , author = "J. Arvo" -, title = "Random rotation matrics" +, title = "Random rotation matrices" , editor = "J. Arvo" , booktitle = "Graphics Gems II" , publisher = "Academic Press" @@ -11248,7 +11248,7 @@ method that uses very different techniques." @inproceedings{ac-opavs-89 , author = "M. J. Atallah and D. Z. Chen" -, title = "Optimal parallel algorithm for visibility of a simple polygon from a p oint" +, title = "Optimal parallel algorithm for visibility of a simple polygon from a point" , booktitle = "Proc. 5th Annu. ACM Sympos. Comput. Geom." , year = 1989 , pages = "114--123" @@ -11651,7 +11651,7 @@ method that uses very different techniques." @inproceedings{a-vgsls-96 , author = "Y. Atassi" -, title = "Visibility graph of a set of line sements: {A} dynamic sequential algorithm and its parallel version" +, title = "Visibility graph of a set of line segments: {A} dynamic sequential algorithm and its parallel version" , booktitle = "Proc. 8th Canad. Conf. Comput. Geom." , year = 1996 , pages = "246--251" @@ -12787,7 +12787,7 @@ method that uses very different techniques." , number = 5 , year = 1991 , pages = "39--42" -, keywords = "linear programing, convex hull, oriented matroid" +, keywords = "linear programming, convex hull, oriented matroid" , update = "95.05 korneenko" } @@ -13344,7 +13344,7 @@ small factor with respect to floating-point calculation." , annote = "The author's notion of $S-$convex hull for an isothetic domain is in other words the minimal externally isothetically visible hull. An $O(rn^3)$ time $O(rn^2)$ space algorithm for $r-$vertex - $S-$convex approximation of miminal area of an $n-$vertex isothetic + $S-$convex approximation of minimal area of an $n-$vertex isothetic domain is given." , abstract = "Using generalizations of the concept of convexity, a technique is described for approximating polygonal domains by @@ -13454,7 +13454,7 @@ small factor with respect to floating-point calculation." @incollection{b-ssar-89 , author = "R. {Baeza-Yates}" -, title = "String searching algorthms revisited" +, title = "String searching algorithms revisited" , booktitle = "??" , series = "Lecture Notes Comput. Sci." , volume = 382 @@ -14012,7 +14012,7 @@ small factor with respect to floating-point calculation." , year = 1987 , pages = "171--180" , keywords = "motion planning, algebraic geometry, design of algorithms, three-dimensional, CAD, robotics" -, comments = "full version appeared as Generation of configuration space obstacles:{II} The moving of algebraic surfaces, the internation journal of robotics research 9:1, feb 1990, 92-112" +, comments = "full version appeared as Generation of configuration space obstacles:{II} The moving of algebraic surfaces, the international journal of robotics research 9:1, feb 1990, 92-112" , cites = "a-hragr-76, ab-arpcs-87, ba-aprcs-86, ab-arpcs3-86, aa-ntsrm-76, bk-gcso2-86, bk-gcso3-87, bfh-sam-86, bcl-casac-82, c-cdmp-84, c-cpplb-84, c-cmpr-71, d-etqti-08, c-dgcs-76, d-mpsdf-84, fa-spbsg-84, f-past-75, grs-kfcg-83, gs-ccrs-86, hh-gabr-86, hk-crcs-85, h-rv-86, kw-gcsmm-79, l-spcsa-83, lw-apcfp-79, lmt-asfms-84, mmp-dgp-85, m-fspcp-85, osb-spps-85, p-mmp-78, r-rrso-80, rv-smcsr-83, ss-pmp2g-83, ss-spps-84, th-otdp-84, u-cdacc-77, w-ac-78, y-amp-85, ZZZ" , update = "98.03 bibrelex, 93.09 milone+mitchell" } @@ -16862,7 +16862,7 @@ Contains C code." , title = "A polyhedron representation for computer vision" , booktitle = "Proc. AFIPS Natl. Comput. Conf." , volume = 44 -, publisher = "AFIPS Press, Alrington, Va." +, publisher = "AFIPS Press, Arlington, Va." , year = 1975 , pages = "589--596" , update = "98.07 bibrelex" @@ -16972,7 +16972,7 @@ Contains C code." @article{b-sbbtd-72 , author = "R. Bayer" -, title = "Symmetric binary B-trees: data structure and maintenace algorithms" +, title = "Symmetric binary B-trees: data structure and maintenance algorithms" , journal = "Acta Inform." , volume = 1 , year = 1972 @@ -21144,7 +21144,7 @@ where $d > 3 \sqrt 3$ denotes the distance between S and T." @book{b-ncma-72 , author = "P. Bezier" -, title = "Numerical Control - Mathematics and Aplications" +, title = "Numerical Control - Mathematics and Applications" , publisher = "John Wiley \& Sons" , address = "London, UK" , year = 1972 @@ -21199,7 +21199,7 @@ where $d > 3 \sqrt 3$ denotes the distance between S and T." , booktitle = "Proc. 4th Canad. Conf. Comput. Geom." , year = 1992 , pages = "365--370" -, keywords = "convex polygons, meshes with muliple broadcasting, diameter, enclosing rectangle, inscribed triangle, time-optimal algorithms, image processing, computer vision" +, keywords = "convex polygons, meshes with multiple broadcasting, diameter, enclosing rectangle, inscribed triangle, time-optimal algorithms, image processing, computer vision" , cites = "cdr-ultbp-86, ds-gmmmc-79, dh-pcsa-73, fs-dmaer-75, l-ipaaa-92, l-spcsa-83, pl-pdavs-88, ps-cgi-85, rk-dpp-82, t-mss-85, ag-hpc-90, bb-cv-82, blosz-fsamb-92, bps-aamv-89, kr-icmmb-89, losz-sema-, l-cvdmc-85, ml-cascv-89, osz-tosam-92, p-cg-78, pr-apmb-87, v-mvavi-91, v-spa-91, ZZZ" , update = "98.07 bibrelex" } @@ -22381,7 +22381,7 @@ where $d > 3 \sqrt 3$ denotes the distance between S and T." @article{bl-psmcf-81 , author = "L. J. Billera and C. W. Lee" -, title = "A Proof of the Suffiency of {McMullen}'s Conditions for $f$-vectors of Simplicial Polytopes" +, title = "A Proof of the Sufficiency of {McMullen}'s Conditions for $f$-vectors of Simplicial Polytopes" , journal = "J. Combin. Theory Ser. A" , volume = 31 , number = 3 @@ -24037,7 +24037,7 @@ of the output, and the extra storage is {$O(n)$}." , succeeds = "bcduy-clcst-96" , cites = "abosy-fmcnp-89, b-cspps-88, bcdy-csp-95, bg-aoscf-95, cegss-cfals-93, dj-cmcnp-90, bds-lric-95, dk-ladsc-85, egs-cmcap-90, ep-mps-88, f-spcrd-86, ka-dd-84, k-eccs-79, k-osps-83, ld-gvdp-81, mt-cppna-85, m-lpltw-84, ms-sapo-95, m-idssp-92, okm-ccs-86" , update = "01.11 devillers" -, abstract = "A circle $C$ separates two planar sets if it encloses one of the sets and its open interior disk does not meet the other set. A separating circle is a largest one if it cannot be locally increased while still separating the two given sets. An $\Theta(n \log n)$ optimal algorithm is proposed to find all largest circles separating two given sets of line segments when line segments are allowe d to meet only at their endpoints. In the general case, when line segments may intersect $\Omega(n^2)$ times, our algorithm can be adapted to work in $O(n \alpha(n) \log n)$ time and $O(n \alpha(n))$ space, where $\alpha(n)$ represents the extremely slowly growing inverse of the Ackermann function." +, abstract = "A circle $C$ separates two planar sets if it encloses one of the sets and its open interior disk does not meet the other set. A separating circle is a largest one if it cannot be locally increased while still separating the two given sets. An $\Theta(n \log n)$ optimal algorithm is proposed to find all largest circles separating two given sets of line segments when line segments are allowed to meet only at their endpoints. In the general case, when line segments may intersect $\Omega(n^2)$ times, our algorithm can be adapted to work in $O(n \alpha(n) \log n)$ time and $O(n \alpha(n))$ space, where $\alpha(n)$ represents the extremely slowly growing inverse of the Ackermann function." } @inproceedings{bcdy-csp-95 @@ -24943,7 +24943,7 @@ present a polynomial-time exact algorithm to solve this problem." @article{bp-adtaa-91 , author = "J. Bonet and J. Peraire" -, title = "An alternating digital tree (ADT) algortihm for $3$D geometric searching and intersection problems" +, title = "An alternating digital tree (ADT) algorithm for $3$D geometric searching and intersection problems" , journal = "Internat. J. Numer. Methods Eng." , volume = 31 , year = 1991 @@ -25610,7 +25610,7 @@ present a polynomial-time exact algorithm to solve this problem." @inproceedings{bew-pag-98 , author = "P. Bose and H. Everett and S. K. Wismath" -, title = "Properties of Arragement Graphs" +, title = "Properties of Arrangement Graphs" , booktitle = "Abstracts 14th European Workshop Comput. Geom." , nickname = "CG '98" , site = "Barcelona" @@ -26964,7 +26964,7 @@ and solids on dynamically evolving grids without remeshing." } @inproceedings{bbdltv-trodo-99 -, author = "Stina Bridgeman and Giuseppe Di Battista and Walter Didimo and Guiseppe Liotta and Roberto Tamassia and Luca Vismara" +, author = "Stina Bridgeman and Giuseppe Di Battista and Walter Didimo and Giuseppe Liotta and Roberto Tamassia and Luca Vismara" , title = "Turn-Regularity and Optimal Drawings of Orthogonal Representations" , booktitle = "Abstracts 15th European Workshop Comput. Geom." , nickname = "CG '99" @@ -29040,7 +29040,7 @@ determinants." @book{b-pgisl-86 , author = "P. A. Burrough" -, title = "Principles of Geographical Information Systems for Land Resourses Assessment" +, title = "Principles of Geographical Information Systems for Land Resources Assessment" , publisher = "Oxford University Press" , address = "New York" , year = 1986 @@ -30545,7 +30545,7 @@ determinants." @inproceedings{c-ennsh-98 , author = "F. Cazals" -, title = "Effective nearest neighbors searching on the hyper-cube, with a pplications to molecular clustering" +, title = "Effective nearest neighbors searching on the hyper-cube, with applications to molecular clustering" , booktitle = "Proc. 14th Annu. ACM Sympos. Comput. Geom." , year = 1998 , pages = "222--230" @@ -31157,7 +31157,7 @@ determinants." @inproceedings{cc-eafdp-97 , author = "W.-T. Chan and F. Y. L. Chin" , title = "Efficient algorithms for finding disjoint paths in grids" -, booktitle = "Proc. 8th ACM-SIAM Sympos. Discrete Alogrithms" +, booktitle = "Proc. 8th ACM-SIAM Sympos. Discrete Algorithms" , year = 1997 , pages = "454--463" , update = "98.07 bibrelex" @@ -34628,10 +34628,10 @@ graphic and geometric problems." @incollection{c-cses-67 , author = "S. S. Chern" -, title = "Curves and Surfaces in {E}ucidean Space" +, title = "Curves and Surfaces in {E}uclidean Space" , editor = "S. S. Chern" , booktitle = "Studies in Global Geometry and Analaysis" -, series = "MAA Studies in Mathmatics" +, series = "MAA Studies in Mathematics" , volume = 4 , publisher = "Math. Assoc. Amer." , year = 1967 @@ -34641,10 +34641,10 @@ graphic and geometric problems." @incollection{c-cses-89 , author = "S. S. Chern" -, title = "Curves and Surfaces in {E}ucidean Space" +, title = "Curves and Surfaces in {E}uclidean Space" , editor = "S. S. Chern" , booktitle = "Global Differential Geometry" -, series = "Studies in Mathmatics" +, series = "Studies in Mathematics" , volume = 27 , publisher = "Math. Assoc. Amer." , year = 1989 @@ -36716,7 +36716,7 @@ avoids overlap. This is useful in cartography." @article{c-psepg-92 , author = "R. J. Cimikowski" -, title = "Properties of some {Euclidian} proximity graphs" +, title = "Properties of some {Euclidean} proximity graphs" , journal = "Pattern Recogn. Lett." , volume = 13 , number = 6 @@ -38862,7 +38862,7 @@ data. Contains C code." @article{c-sscg-86 , author = "R. L. Cook" , title = "Stochastic sampling in computer graphics" -, journal = "ACM Trans. Grpah." +, journal = "ACM Trans. Graph." , volume = 5 , year = 1986 , pages = "51--72" @@ -39149,7 +39149,7 @@ data. Contains C code." @article{cghj-lwfm-93 , author = "Robert M. Corless and Gaston H. Gonnet and D. E. G. Hare and David J. Jeffrey" , title = "{Lambert's} {W} function in {Maple}" -, journal = "The Maple Techical Newsletter" +, journal = "The Maple Technical Newsletter" , volume = "Issue 9" , year = 1993 , pages = "12--22" @@ -41046,7 +41046,7 @@ Contains C code." } @inproceedings{dfl-rcems-98 -, author = "Fabrizio d'Amore and Paolo G. Franciosa and Guiseppe Liotta" +, author = "Fabrizio d'Amore and Paolo G. Franciosa and Giuseppe Liotta" , title = "Robust Computation of {Euclidean} Minimum Spanning Trees" , booktitle = "Abstracts 14th European Workshop Comput. Geom." , nickname = "CG '98" @@ -42218,7 +42218,7 @@ Contains C code." @article{d-i2dch-90 , author = "A. M. Day" -, title = "The Implementation of a 2{D} Convex Hull Algorithm Using Pertubation" +, title = "The Implementation of a 2{D} Convex Hull Algorithm Using Perturbation" , journal = "Comput. Graph. Forum" , volume = 9 , number = 4 @@ -42562,7 +42562,7 @@ Contains C code." @incollection{dp-scdta-89 , author = "L. {De Floriani} and E. Puppo" -, title = "A survey of constrained {Delaunay} triangulation algorithms for surface representaion" +, title = "A survey of constrained {Delaunay} triangulation algorithms for surface representation" , editor = "G. G. Pieroni" , booktitle = "Issues on Machine Vision" , publisher = "Springer-Verlag" @@ -44092,7 +44092,7 @@ Contains C code." @article{ds-embrr-92 , author = "H. Desaulniers and N. F. Stewart" -, title = "An extension of manifold boudary representations to the $r$-sets" +, title = "An extension of manifold boundary representations to the $r$-sets" , journal = "ACM Trans. Graph." , volume = 11 , number = 1 @@ -44789,7 +44789,7 @@ respectively, we obtain a speedup of $\frac p{\log p}$." , archive = "XXX:cs.CG/9909017" , precedes = "dm-focoh-99" , update = "00.03 devillers, 99.11 devillers" -, abstract = "Given a finite set of non-collinear points in the plane there exists a line that passes through exactly two points. Such a line is called an {\em ordinary line}. An efficient algorithm for computing such a line was proposed by Mukhopadhyay et al. In this note we extend this result in two directions. We first show how to use this algorithm to compute an {\em ordinary conic}, that is, a conic passing through exactly five points, assuming that all the points do not lie onthe same conic. Our proof of existence and the consequent algorithm is simpler than previous ones. We also show how to compute an ordinary hyperplane in three and higher dimensions." +, abstract = "Given a finite set of non-collinear points in the plane there exists a line that passes through exactly two points. Such a line is called an {\em ordinary line}. An efficient algorithm for computing such a line was proposed by Mukhopadhyay et al. In this note we extend this result in two directions. We first show how to use this algorithm to compute an {\em ordinary conic}, that is, a conic passing through exactly five points, assuming that all the points do not lie on the same conic. Our proof of existence and the consequent algorithm is simpler than previous ones. We also show how to compute an ordinary hyperplane in three and higher dimensions." } @inproceedings{dpt-wt-01 @@ -50466,7 +50466,7 @@ library." @inproceedings{dc-hcpc-80 , author = "P. W. Dymon and S. A. Cook" -, title = "Hardware Complexity and Parallel Comuting" +, title = "Hardware Complexity and Parallel Computing" , booktitle = "Proc. 21st Annu. IEEE Sympos. Found. Comput. Sci." , year = 1980 , pages = "360--372" @@ -57053,7 +57053,7 @@ points per bucket (on average) is fastest." @inproceedings{fm-cpgcs-91 , author = "T. Feder and R. Motwani" -, title = "Clique partitions, graph compression, and speeding up algoithms" +, title = "Clique partitions, graph compression, and speeding up algorithms" , booktitle = "Proc. 27th Annu. ACM Sympos. Theory Comput." , year = 1991 , pages = "123--133" @@ -63102,7 +63102,7 @@ Complete thesis available only on microfilm from Harvard, since Harvard did not @incollection{g-csg-89 , author = "Shmuel Gal" -, title = "Continous Search Games" +, title = "Continuous Search Games" , booktitle = "Search theory: some recent developments." , series = "Lecture Notes in pure and applied mathematics" , volume = 112 @@ -63116,7 +63116,7 @@ Complete thesis available only on microfilm from Harvard, since Harvard did not @book{g-sg-80 , author = "Shmuel Gal" , title = "Search Games" -, series = "Mathematics in Science and Engeneering" +, series = "Mathematics in Science and Engineering" , volume = 149 , publisher = "Academic Press" , address = "New York" @@ -63781,7 +63781,7 @@ Complete thesis available only on microfilm from Harvard, since Harvard did not @article{gjs-agcpc-76 , author = "M. Garey and D. Johnson and H. So" -, title = "An Apllication of Graph Coloring to Printed Circuit Testing" +, title = "An Application of Graph Coloring to Printed Circuit Testing" , journal = "IEEE Trans. Circuits Syst." , volume = "CAS-23" , number = 10 @@ -66056,7 +66056,7 @@ library, used in several other Gems in the book. Contains C code." @article{gmhhwsbr-cads5-95 , author = "R. Glen and G. Martin and A. Hill and R. Hyde and P. Wollard and J. Salmon and J. Buckingham and A. Robertson" -, title = "Computer-aided design and sythesis of $5$-substituted tryptamines and their pharmacology at the $5-{HT}_{10}$ receptor: {Discovery} of compounds with potential anti-migraine properties" +, title = "Computer-aided design and synthesis of $5$-substituted tryptamines and their pharmacology at the $5-{HT}_{10}$ receptor: {Discovery} of compounds with potential anti-migraine properties" , journal = "J. Medical Chemistry" , volume = 38 , year = 1995 @@ -67844,7 +67844,7 @@ generated in O(dn2d+1) time. We present a simple proof that the (d - , author = "M. T. Goodrich" , title = "Communication-Efficient Parallel Sorting" , type = "Technical {Report}" -, institution = "Dept. of Computer Science, Johns Hopkins Univeristy" +, institution = "Dept. of Computer Science, Johns Hopkins University" , year = 1995 , update = "96.09 orourke" } @@ -67963,7 +67963,7 @@ generated in O(dn2d+1) time. We present a simple proof that the (d - @inproceedings{g-ilspo-89 , author = "M. T. Goodrich" -, title = "Intersectin line segments in parallel with an output sensitive number of processors" +, title = "Intersecting line segments in parallel with an output sensitive number of processors" , booktitle = "Proc. 1st ACM Sympos. Parallel Algorithms Architect." , year = 1989 , pages = "127--137" @@ -69069,7 +69069,7 @@ instance. Contains pseudocode." @inproceedings{gkm-hzbv-93 , author = "N. Greene and M. Kass and G. Miller" -, title = "Hierachical Z-Buffer Visibility" +, title = "Hierarchical Z-Buffer Visibility" , booktitle = "Computer Graphics Proceedings, Annu. Conference Series, 1993" , year = 1993 , pages = "273--278" @@ -76990,7 +76990,7 @@ processing. Contains C code." , author = "E. G. Hoel and H. Samet" , title = "Efficient processing of spatial queries in line segment databases" , editor = "O. G{\"u}nther and H. J. Schek" -, booktitle = "Proc. 2rd Sympos. Advances in Spatial Databases" +, booktitle = "Proc. 2nd Sympos. Advances in Spatial Databases" , publisher = "Springer-Verlag" , address = "Berlin, Germany" , year = 1991 @@ -80919,7 +80919,7 @@ fitting method." , volume = 3 , year = 1996 , pages = "183--186" -, note = "ICIAM95 Proc., Applied Stochastics and Optimzation" +, note = "ICIAM95 Proc., Applied Stochastics and Optimization" , update = "98.07 bibrelex" } @@ -81888,7 +81888,7 @@ fitting method." , title = "Planning Smooth Paths for Mobile Robots" , editor = "Z. Li and J. F. Canny" , booktitle = "Nonholonomic Motion Planning" -, publisher = "Kluwer Academic Pubishers" +, publisher = "Kluwer Academic Publishers" , address = "Norwell, MA" , year = 1992 , pages = "271--342" @@ -82189,7 +82189,7 @@ fitting method." @techreport{jp-wcp-93t , author = "R. Janaardan and F. P. Preparata" -, title = "Widest-corridor problemes" +, title = "Widest-corridor problems" , type = "Technical Report" , number = "TR-93-17" , institution = "Dept. of Computer Science, University of Minnesota" @@ -83207,7 +83207,7 @@ fitting method." @article{j-episc-48 , author = "F. John" -, title = "Extremum problems with inequalities as subsidary conditions" +, title = "Extremum problems with inequalities as subsidiary conditions" , journal = "Courant Anniversary" , volume = "??" , year = 1948 @@ -86151,7 +86151,7 @@ fitting method." @incollection{k-racpc-72 , author = "R. Karp" -, title = "Reducibility among combinatorical problems of computer computaions" +, title = "Reducibility among combinatorial problems of computer computations" , editor = "E. Miller and J. W. Thatcher" , booktitle = "Complexity of Computer Computations" , publisher = "Plenum Press" @@ -86649,7 +86649,7 @@ the R*-tree." , institution = "INRIA" , year = 1996 , update = "02.03 devillers, 97.11 bibrelex" -, abstract = "A set of objects is $k$-pierceable if there exists a set of $k$ poin ts such that each object is pierced by (contains) at least one of these points. Finding the smallest integer $k$ such that a set is $k$-pierceable is NP-complete. In this technical report, we present efficient algorithms for findi ng a piercing set (i.e., a set of $k$ points as above) for several classes of convex objects and small values of $k$. In some of the cases, our algorithms imply known as well as new Helly-type theorems, thus adding to previous results of Danzer and Gr{\"u}nbaum who studied the case of axis-parallel boxes. The problems studied here are related to the collection of optimization problems in which one seeks the smallest scaling factor of a centrally symmetric convex object $K$, so that a set of points can be covered by $k$ congruent homothets of $K$." +, abstract = "A set of objects is $k$-pierceable if there exists a set of $k$ points such that each object is pierced by (contains) at least one of these points. Finding the smallest integer $k$ such that a set is $k$-pierceable is NP-complete. In this technical report, we present efficient algorithms for findi ng a piercing set (i.e., a set of $k$ points as above) for several classes of convex objects and small values of $k$. In some of the cases, our algorithms imply known as well as new Helly-type theorems, thus adding to previous results of Danzer and Gr{\"u}nbaum who studied the case of axis-parallel boxes. The problems studied here are related to the collection of optimization problems in which one seeks the smallest scaling factor of a centrally symmetric convex object $K$, so that a set of points can be covered by $k$ congruent homothets of $K$." } @phdthesis{k-grdsc-85 @@ -91271,7 +91271,7 @@ some 2 curves cross exponentially many times." @article{kn-iscpi-90 , author = "J. Kratochvil and J. Ne{\v s}et{\v r}il" -, title = "Independend set and clique problems in intersection-defined classes of graphs" +, title = "Independent set and clique problems in intersection-defined classes of graphs" , journal = "Comment. Math. Univ. Carol." , volume = 31 , year = 1990 @@ -91584,7 +91584,7 @@ some 2 curves cross exponentially many times." @inproceedings{kbs-csamc-91 , author = "H.-P. Kriegel and T. Brinkhoff and R. Schneider" , title = "The Combination of Spatial Access Methods and Computational Geometry in Geographic Database Systems" -, booktitle = "Proc. 2rd Sympos. Advances in Spatial Databases" +, booktitle = "Proc. 2nd Sympos. Advances in Spatial Databases" , series = "Lecture Notes Comput. Sci." , number = 525 , year = 1991 @@ -92644,7 +92644,7 @@ some 2 curves cross exponentially many times." @article{l-ccsda-85 , author = "J. Lagarias" -, title = "The computational complexity of simultaneos {Diophantine} approximation problems" +, title = "The computational complexity of simultaneous {Diophantine} approximation problems" , journal = "SIAM J. Comput." , volume = 14 , year = 1985 @@ -96116,7 +96116,7 @@ addition to their own purposes before conducting the conversion." } @article{kl-bpss-78 -, author = "G. A. Kabatjansky ans V. Leven{\v s}te{\v i}n" +, author = "G. A. Kabatjansky and V. Leven{\v s}te{\v i}n" , title = "Bounds for packings of the sphere and in space" , journal = "Prob. Information Trans." , volume = 14 @@ -96321,7 +96321,7 @@ addition to their own purposes before conducting the conversion." @book{lc-nmp-92 , title = "Nonholonomic Motion Planning" , editor = "Z. Li and J. F. Canny" -, publisher = "Kluwer Academic Pubishers" +, publisher = "Kluwer Academic Publishers" , address = "Norwell, MA" , year = 1992 , update = "98.03 mitchell, 97.11 bibrelex" @@ -99046,7 +99046,7 @@ used in many computational geometry algorithms. Contains C++ code." @inproceedings{l-cmpue-86 , author = "V. J. Lumelsky" -, title = "Continous motion planning in unknown environment for a $3$d cartesian robot arm" +, title = "Continuous motion planning in unknown environment for a $3$d cartesian robot arm" , booktitle = "Proc. IEEE Internat. Conf. Robot. Autom." , year = 1986 , pages = "1569--1574" @@ -99815,7 +99815,7 @@ used in many computational geometry algorithms. Contains C++ code." @incollection{m-ltn-76 , author = "K. Mahler" -, title = "Lectures on transcendental numbres" +, title = "Lectures on transcendental numbers" , booktitle = "??" , series = "Lecture Notes Math." , volume = 546 @@ -102187,7 +102187,7 @@ used in many computational geometry algorithms. Contains C++ code." @techreport{mr-vdbsc-91 , author = "M. L. Maz{\'o}n and T. Recio" -, title = "Voronoi Diagrams Bases on Stricly Convex Distances on the Plane" +, title = "Voronoi Diagrams Bases on Strictly Convex Distances on the Plane" , type = "Manuscript" , institution = "Departamento de Matem{\'a}ticas, Universidad del Cantabria" , address = "Santander, Spain" @@ -105042,7 +105042,7 @@ used in many computational geometry algorithms. Contains C++ code." @article{m-hpppp-70 , author = "R. E. Miles" -, title = "On the homogenous planar {Poisson} point-process" +, title = "On the homogeneous planar {Poisson} point-process" , journal = "Math. Biosci." , volume = 6 , year = 1970 @@ -107000,7 +107000,7 @@ problems in computational geometry is presented." @article{mr-tcomd-93 , author = "N. E. Mn{\"e}v and J{\"u}rgen Richter-Gebert" -, title = "Two constructions of oriented matroids with disconnected extention space" +, title = "Two constructions of oriented matroids with disconnected extension space" , journal = "Discrete Comput. Geom." , volume = 10 , year = 1993 @@ -108061,7 +108061,7 @@ problems in computational geometry is presented." @article{mrtt-ddm-53 , author = "T. S. Motzkin and H. Raiffa and G. L. Thompson and R. M. Thrall" -, title = "The Double Desription Method" +, title = "The Double Description Method" , journal = "Annals of Math. Studies" , volume = 8 , year = 1953 @@ -109902,7 +109902,7 @@ problems in computational geometry is presented." , title = "Parallel Algorithm Design on the {WPRAM} Model" , type = "Technical {Report}" , number = "94.24" -, institution = "School of Computer Science, Univeristy of Leeds" +, institution = "School of Computer Science, University of Leeds" , year = 1994 , update = "96.09 orourke" } @@ -111847,7 +111847,7 @@ encapsulated PostScript" @article{oww-h2ceg-00 , author = "C. {\'O}'D{\'u}nlaing and C. Watt and D. Wilkins" -, title = "Homeomorphism of 2-complexes is equivalent to grap isomorphism" +, title = "Homeomorphism of 2-complexes is equivalent to graph isomorphism" , journal = "Internat. J. Comput. Geom. Appl." , volume = 10 , year = 2000 @@ -112274,7 +112274,7 @@ distance in two or more dimensions without square roots. Contains C code." , author = "S. Onn" , title = "On the {Radon} number of the integer lattice" , editor = "Ravi Kannan and W. R. Pulleyblank" -, booktitle = "Integer Programmming and Combinatorial Optimization" +, booktitle = "Integer Programming and Combinatorial Optimization" , publisher = "Univ. Waterloo Press" , address = "Waterloo, ON" , year = 1990 @@ -115547,7 +115547,7 @@ dither and stipple patterns." @phdthesis{p-ccmsp-87 , author = "R. S. Palmer" -, title = "Computational Complexity of Motion and Stablility of Polygons" +, title = "Computational Complexity of Motion and Stability of Polygons" , school = "Cornell Univ." , address = "Ithaca, NY" , month = jan @@ -116674,7 +116674,7 @@ dither and stipple patterns." @article{p-axrac-44 , author = "A. L. Patterson" -, title = "Amibguities in the {X}-ray analysis of crystal structures" +, title = "Ambiguities in the {X}-ray analysis of crystal structures" , journal = "Physical Review" , volume = 65 , year = 1944 @@ -116929,7 +116929,7 @@ dither and stipple patterns." @inproceedings{pu-osh-87 , author = "D. Peleg and J. Ullman" -, title = "An optimal synchonizer for the hypercube" +, title = "An optimal synchronizer for the hypercube" , booktitle = "Proc. 6th ACM Symp. on Princ. Distr. Comp." , year = 1987 , pages = "77--85" @@ -116939,7 +116939,7 @@ dither and stipple patterns." @article{pu-osh-89 , author = "D. Peleg and J. Ullman" -, title = "An optimal synchonizer for the hypercube" +, title = "An optimal synchronizer for the hypercube" , journal = "SIAM J. Comput." , volume = 18 , year = 1989 @@ -116970,7 +116970,7 @@ dither and stipple patterns." @phdthesis{p-caasv-91 , author = "M. Pellegrini" -, title = "Combinatorical and algorithmic analysis of stabbing and visibility problems in $3$-dimensional space" +, title = "Combinatorial and algorithmic analysis of stabbing and visibility problems in $3$-dimensional space" , school = "Courant Inst. Math. Sci., New York University" , address = "New York, NY" , month = feb @@ -117541,8 +117541,8 @@ both for rendering and for modeling. Contains C code." } @article{pg-aldit-84 -, author = "M. B. Phillips and M. O. Garret" -, title = "An algorithm for locating and displaying the intersection of two arbitary surfaces" +, author = "M. B. Phillips and Garrett M. Odell" +, title = "An algorithm for locating and displaying the intersection of two arbitrary surfaces" , journal = "IEEE Comput. Graph. Appl." , volume = "??" , year = 1984 @@ -119117,7 +119117,7 @@ both for rendering and for modeling. Contains C code." @inproceedings{p-aapfp-91 , author = "D. Priest" , title = "Algorithms for arbitrary precision floating point arithmetic" -, booktitle = "Proc. 10th Symp. on coputer arithmetic" +, booktitle = "Proc. 10th Symp. on computer arithmetic" , year = 1991 , pages = "132--143" , update = "96.05 devillers" @@ -121909,7 +121909,7 @@ Previous title: On-Line Navigation Through Regions of Variable , update = "93.09 rote" , annote = "linear-time heuristic for the MAXIMUM bipartite matching between two sets of $n$ points in the unit square with - an abolute error of $O(n^{5/6})$. For uniformly distributed + an absolute error of $O(n^{5/6})$. For uniformly distributed points, the $z$ of the value of the maximum matching satisfies $\lim_{n\to\infty} = (\sqrt{3}+\log(1+\sqrt{2}))/3$ almost surely." @@ -127129,7 +127129,7 @@ geophysicists." @unpublished{s-nromd- , author = "F. Santos" -, title = "Non-realizable oriented matroids coming from {Delaunay} triangulations for strictly convex matrics" +, title = "Non-realizable oriented matroids coming from {Delaunay} triangulations for strictly convex matrices" , note = "in preparation" , update = "98.11 bibrelex" } @@ -128227,7 +128227,7 @@ Contains C code." @inproceedings{sss-chbal-93 , author = "J. P. Schmidt and A. Siegel and A. Srinivasan" -, title = "{Chernoff}-{Hoeffding} Bounds for Applications with Limited Idependence" +, title = "{Chernoff}-{Hoeffding} Bounds for Applications with Limited Independence" , booktitle = "Proc. 4th ACM-SIAM Sympos. Discrete Algorithms" , year = 1993 , pages = "331--340" @@ -131490,7 +131490,7 @@ Contains C code." @article{s-frbri-80 , author = "U. Shani" -, title = "Filling regions in binary raster images: a graph-theoretical appoach" +, title = "Filling regions in binary raster images: a graph-theoretical approach" , journal = "Computer graphics" , volume = 14 , year = 1980 @@ -132310,7 +132310,7 @@ Contains C code." @inproceedings{st-tsms-91 , author = "X. Sheng and U. Tucholke" -, title = "On triangulating suface models for {SLA}" +, title = "On triangulating surface models for {SLA}" , booktitle = "Proc. 2nd Internat. Conf. on Rapid Prototyping" , site = "Dayton, OH" , year = 1991 @@ -132518,7 +132518,7 @@ Contains C code." @techreport{s-cgopl-91 , author = "T. Shermer" -, title = "Convering and Guarding Orthogonal Polygons with $l_k$-Sets" +, title = "Covering and Guarding Orthogonal Polygons with $l_k$-Sets" , type = "manuscript" , institution = "Simon Fraser University" , year = 1991 @@ -132527,7 +132527,7 @@ Contains C code." @article{s-cgpul-91 , author = "T. Shermer" -, title = "Convering and Guarding Polygons Using $L_k$-Sets" +, title = "Covering and Guarding Polygons Using $L_k$-Sets" , journal = "Geom. Dedicata" , volume = 37 , year = 1991 @@ -135519,7 +135519,7 @@ Contains C code." @techreport{s-mmp-91 , author = "J.-C. Spehner" -, title = "Merging in maps and pavings" +, title = "Merging in maps and in pavings" , type = "Research {Report}" , number = 48 , institution = "Laboratoire de Math{\'e}matiques et Informatique, Universit{\'e} des Haute-Alsace" @@ -135834,7 +135834,7 @@ Contains C code." @techreport{sntm-amgus-90 , author = "V. Srinivasan and L. R. Nackman and J. Tang and S. N. Meshkat" -, title = "Automatic Mesh Generation unsing the Symmetric Axis Transformation of Polygonal Domains" +, title = "Automatic Mesh Generation using the Symmetric Axis Transformation of Polygonal Domains" , number = "RC 16132" , institution = "IBM Res. Center" , year = 1990 @@ -140905,7 +140905,7 @@ code." @inproceedings{tac-rsmw-92 , author = "C. D. Thomborson and B. Alpern and L. Carter" -, title = "Rectilinear {Steiner} tree minimzation on a workstation" +, title = "Rectilinear {Steiner} tree minimization on a workstation" , booktitle = "Proc. of the DIMACS Workshop on Comput. Support for Discr. Math." , year = 1992 , update = "98.11 bibrelex" @@ -141243,7 +141243,7 @@ code." @article{t-ctud-73 , author = "W. R. Tobler" -, title = "A continous transformation useful for districting" +, title = "A continuous transformation useful for districting" , journal = "Ann. New York Acad. Sci." , volume = 219 , year = 1973 @@ -141480,7 +141480,7 @@ of geometric optics." @article{t-dmwhf-63 , author = "A. Toomre" -, title = "On the distibution of matter within highly flattened galaxies" +, title = "On the distribution of matter within highly flattened galaxies" , journal = "The astrophysical J." , volume = 138 , year = 1963 @@ -141551,7 +141551,7 @@ of geometric optics." , keywords = "points, matching, segments, intersection" , update = "96.09 agarwal, 95.09 korneenko" , abstract = "Given a set of $n$ red and $n$ blue points in the plane, - it is requred to find a nonintersecting red-blue matching, + it is required to find a nonintersecting red-blue matching, i.e., a set of $n$ nonintersecting line segments that connect red and blue points in pairs. \par @@ -144995,7 +144995,7 @@ of geometric optics." @inproceedings{vbh-hsruc-94 , author = "Andreas Voigtmann and Ludger Becker and Klaus Hinrichs" -, title = "Hierachical Surface Representation Using Constrained {Delaunay} Triangulations" +, title = "Hierarchical Surface Representation Using Constrained {Delaunay} Triangulations" , booktitle = "Abstracts 10th European Workshop Comput. Geom." , nickname = "CG '94" , site = "Santander" @@ -145126,7 +145126,7 @@ of geometric optics." @article{vs-dctds-91 , author = "G. Vriend and C. Sander" , title = "Detection of common three-dimensional substructures in proteins" -, journal = "PROTEINS: Structure, Funcion, and Genetics" +, journal = "PROTEINS: Structure, Function, and Genetics" , volume = 11 , year = 1991 , pages = "52--58" @@ -145144,7 +145144,7 @@ of geometric optics." @book{w-rfeb- , author = "E. Wachspress" -, title = "A Rational Finite Elemente Basis" +, title = "A Rational Finite Element Basis" , publisher = "Academic Press" , address = "New York, NY" , year = "??" @@ -145237,12 +145237,12 @@ of geometric optics." @article{w-ortdc-93 , author = "D. Wagner" -, title = "Optimal routing through dense chanels" +, title = "Optimal routing through dense channels" , journal = "Internat. J. Comput. Geom. Appl." , volume = 3 , year = 1993 , pages = "269--289" -, keywords = "VLSI design, knock knee chanel routing, wire length, number of bends, layer assignment" +, keywords = "VLSI design, knock knee channel routing, wire length, number of bends, layer assignment" , succeeds = "w-nakkc-91" , update = "96.09 devillers" } @@ -146841,7 +146841,7 @@ Contains C code." @book{w-cem-99 , author = "E. W. Weisstein" -, title = "CRC Concise Encylopedia of Mathematics" +, title = "CRC Concise Encyclopedia of Mathematics" , publisher = "CRC Press LLC" , address = "Boca Raton, FL" , year = 1999 @@ -147768,7 +147768,7 @@ Contains C code." @article{w-ffcmf-77 , author = "D. Whitney" , title = "Force feedback control of manipulator fine motions" -, journal = "Journal of Dynamic Systems, Measurment and Control" +, journal = "Journal of Dynamic Systems, Measurement and Control" , volume = "??" , month = jun , year = 1977 @@ -148150,7 +148150,7 @@ Contains C code." @techreport{w-cpadv-90 , author = "J. Wilhelms" -, title = "A Coherent Projection Appoach for Direct Volume Rendering" +, title = "A Coherent Projection Approach for Direct Volume Rendering" , type = "Technical Report" , number = "UCSC-CRL-90-38" , institution = "Computer Research Laboratory, University of California" @@ -148605,7 +148605,7 @@ Contains C code." @article{w-tbcav-87 , author = "P. M. H. Wilson" -, title = "Towards Birational Classfication of Algebraic Varieties" +, title = "Towards Birational Classification of Algebraic Varieties" , journal = "Bull. London Math. Soc." , volume = 19 , year = 1987 @@ -148705,7 +148705,7 @@ Contains C code." @article{w-aspep-85 , author = "P. Winter" -, title = "An algortihm for the {Steiner} problem in the {Euclidean} plane" +, title = "An algorithm for the {Steiner} problem in the {Euclidean} plane" , journal = "Networks" , volume = 15 , year = 1985 @@ -150075,7 +150075,7 @@ code." , update = "98.03 mitchell, 96.05 mitchell" , annote = "They consider shortest paths (also MST) in the $L_1$ geodesic metric. They use a path-preserving graph approach, together with -segment draggin. For a set of disjoint rectilinear obstacles +segment dragging. For a set of disjoint rectilinear obstacles having $m$ edges, $t$ of which are ``extreme'' (locally -- having both adjacent edges on the same side of the line through the edge), they compute a shortest path in time $O(m\log t+ t\log^{3/2} t)$, using @@ -150723,7 +150723,7 @@ This improves previous bound of $O(mt+m\log m)$ in , address = "Singapore" , year = 1995 , pages = "452--492" -, keywords = "survey paper, numeral computing, exact compuation, fixed-precision, multiprecision number packages" +, keywords = "survey paper, numeral computing, exact computation, fixed-precision, multiprecision number packages" , update = "98.07 icking+vismara, 97.11 icking, 97.03 devillers+pocchiola" , abstract = "A survey of the approaches to non-robustness of geometric algorithms, and especially the exact computation approach. Also surveys available big-number packages." } @@ -151202,7 +151202,7 @@ This improves previous bound of $O(mt+m\log m)$ in @incollection{z-1aasp-92 , author = "A. Z. Zelikovsky" , title = "An $11/8$-approximation algorithm for the {Steiner} problem on networks with rectilinear distance" -, booktitle = "Sets, Graphs and Nubers" +, booktitle = "Sets, Graphs and Numbers" , series = "Colloquia Mathematica Societatis J{\'a}nos Bolyai" , volume = 60 , publisher = "??" diff --git a/Documentation/doc/resources/1.10.0/BaseDoxyfile.in b/Documentation/doc/resources/1.10.0/BaseDoxyfile.in index 0cc706e0f5d..d37679fa4a5 100644 --- a/Documentation/doc/resources/1.10.0/BaseDoxyfile.in +++ b/Documentation/doc/resources/1.10.0/BaseDoxyfile.in @@ -486,6 +486,24 @@ HTML_HEADER = ${CGAL_DOC_HEADER_PACKAGE} HTML_FOOTER = ${CGAL_DOC_RESOURCE_DIR}/footer.html +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = ${CGAL_DOC_RESOURCE_DIR}/cgal_stylesheet.css + # Doxygen stores a couple of settings persistently in the browser (via e.g. # cookies). By default these settings apply to all HTML pages generated by # doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store diff --git a/Documentation/doc/resources/1.10.0/header.html b/Documentation/doc/resources/1.10.0/header.html index 32657f69fa5..3549905fa84 100644 --- a/Documentation/doc/resources/1.10.0/header.html +++ b/Documentation/doc/resources/1.10.0/header.html @@ -26,8 +26,6 @@ $search $mathjax $darkmode - - $extrastylesheet diff --git a/Documentation/doc/resources/1.10.0/header_package.html b/Documentation/doc/resources/1.10.0/header_package.html index f2309e17bcd..19b6e358b4c 100644 --- a/Documentation/doc/resources/1.10.0/header_package.html +++ b/Documentation/doc/resources/1.10.0/header_package.html @@ -43,8 +43,6 @@ - - $mathjax $darkmode diff --git a/Documentation/doc/resources/1.8.13/BaseDoxyfile.in b/Documentation/doc/resources/1.8.13/BaseDoxyfile.in index 4bd2e290d30..7fb06630c20 100644 --- a/Documentation/doc/resources/1.8.13/BaseDoxyfile.in +++ b/Documentation/doc/resources/1.8.13/BaseDoxyfile.in @@ -477,6 +477,24 @@ HTML_HEADER = ${CGAL_DOC_HEADER_PACKAGE} HTML_FOOTER = ${CGAL_DOC_RESOURCE_DIR}/footer.html +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = ${CGAL_DOC_RESOURCE_DIR}/cgal_stylesheet.css + # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to YES can help to show when doxygen was last run and thus if the diff --git a/Documentation/doc/resources/1.9.6/BaseDoxyfile.in b/Documentation/doc/resources/1.9.6/BaseDoxyfile.in index 8570de39718..10f2b8279a7 100644 --- a/Documentation/doc/resources/1.9.6/BaseDoxyfile.in +++ b/Documentation/doc/resources/1.9.6/BaseDoxyfile.in @@ -486,6 +486,24 @@ HTML_HEADER = ${CGAL_DOC_HEADER_PACKAGE} HTML_FOOTER = ${CGAL_DOC_RESOURCE_DIR}/footer.html +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = ${CGAL_DOC_RESOURCE_DIR}/cgal_stylesheet.css + # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top diff --git a/Documentation/doc/scripts/generate_how_to_cite.py b/Documentation/doc/scripts/generate_how_to_cite.py index 4873b7065e7..ece849f18a9 100644 --- a/Documentation/doc/scripts/generate_how_to_cite.py +++ b/Documentation/doc/scripts/generate_how_to_cite.py @@ -9,7 +9,7 @@ import os ### Constants ### -result_bib=r"""@book{ cgal:eb-${CGAL_RELEASE_YEAR_ID} +RESULT_BIB = r"""@book{ cgal:eb-${CGAL_RELEASE_YEAR_ID} , title = "{CGAL} User and Reference Manual" , author = "{The CGAL Project}" , publisher = "{CGAL Editorial Board}" @@ -18,7 +18,7 @@ result_bib=r"""@book{ cgal:eb-${CGAL_RELEASE_YEAR_ID} , url = "https://doc.cgal.org/${CGAL_CREATED_VERSION_NUM}/Manual/packages.html" }""" -result_txt=r"""// This file was generated by generate_how_to_cite.py. You shouldn't modify it directly. +RESULT_TXT = r"""// This file was generated by generate_how_to_cite.py. You shouldn't modify it directly. /*! \page how_to_cite_cgal Acknowledging %CGAL @@ -73,13 +73,13 @@ The \cgal Project. """ -result_txt_footer=r""" +RESULT_TXT_FOOTER = r"""
    */ """ -pre_html=r""" +PRE_HTML = r""" @@ -90,11 +90,11 @@ pre_html=r""" """ -post_html=r""" +POST_HTML = r""" """ -result_html=r"""

    how_to_cite_cgal.bib

    +RESULT_HTML = r"""

    how_to_cite_cgal.bib

     @book{cgal:eb-${CGAL_RELEASE_YEAR_ID},
       title = {{CGAL} User and Reference Manual},
       author = {{The CGAL Project}},
    @@ -109,122 +109,225 @@ result_html=r"""

    how_to_cite_cgal.bib

    \n\ -\n\ -["+str(k)+"]\n\ +def gen_bib_entry(title, authors, bib, anchor): + res = ( + "\n\ +@incollection{" + + bib + + '-${CGAL_RELEASE_YEAR_ID}\n\ +, author = "' + + authors + + '"\n\ +, title = "' + + title + + '"\n\ +, publisher = "{CGAL Editorial Board}"\n\ +, edition = "{${CGAL_CREATED_VERSION_NUM}}"\n\ +, booktitle = "{CGAL} User and Reference Manual"\n\ +, url = "https://doc.cgal.org/${CGAL_CREATED_VERSION_NUM}/Manual/packages.html#' + + anchor + + '"\n\ +, year = ${CGAL_BUILD_YEAR4}\n\ +}\n' + ) + return res + + +def gen_txt_entry(title, authors, bib, anchor, k): + title_r = ( + title.replace("Kernel", "%Kernel") + .replace("Interval", "%Interval") + .replace("Matrix", "%Matrix") + .replace("Kinetic", "%Kinetic") + .replace("CGAL", r"\cgal") + .replace("Range", "%Range") + ) + authors = authors.replace("CGAL", r"\cgal") + res = ( + '\n\ +\n\ +[' + + str(k) + + ']\n\ \n\ -\n "+authors+".\n "+title_r+".\n\ - In \cgal User and Reference Manual. \cgal Editorial Board,\n\ +\n ' + + authors + + ".\n " + + title_r + + '.\n\ + In \\cgal User and Reference Manual. \\cgal Editorial Board,\n\ ${CGAL_CREATED_VERSION_NUM} edition, ${CGAL_BUILD_YEAR4}.\n\ -[ bib | \n\ -http ]\n\ +[ bib | \n\ +http ]\n\ \n\ \n\ -\n\n\n" - return res +\n\n\n' + ) + return res + def gen_html_entry(title, authors, bib, anchor): - res="
    \n\
    -@incollection{"+bib+"-${CGAL_RELEASE_YEAR_ID},\n\
    -  author = {"+authors+"},\n\
    -  title = {"+title+"},\n\
    +    res = (
    +        '
    \n\
    +@incollection{'
    +        + bib
    +        + "-${CGAL_RELEASE_YEAR_ID},\n\
    +  author = {"
    +        + authors
    +        + "},\n\
    +  title = {"
    +        + title
    +        + '},\n\
       publisher = {{CGAL Editorial Board}},\n\
       edition = {{${CGAL_CREATED_VERSION_NUM}}},\n\
       booktitle = {{CGAL} User and Reference Manual},\n\
    -  url = {https://doc.cgal.org/${CGAL_CREATED_VERSION_NUM}/Manual/packages.html#"+anchor+"},\n\
    +  url = {https://doc.cgal.org/${CGAL_CREATED_VERSION_NUM}/Manual/packages.html#'
    +        + anchor
    +        + "},\n\
       year = ${CGAL_BUILD_YEAR4}\n\
     }\n\
     
    \n\n" - return res + ) + return res + def protect_upper_case(title): - return title.replace("dD","{dD}").replace("2D","{2D}").replace("3D","{3D}").replace("CGAL","{CGAL}").replace("Qt","{Qt}").replace("Boost","{Boost}") + return ( + title.replace("dD", "{dD}") + .replace("2D", "{2D}") + .replace("3D", "{3D}") + .replace("CGAL", "{CGAL}") + .replace("Qt", "{Qt}") + .replace("Boost", "{Boost}") + ) + def protect_accentuated_letters(authors): - res=authors.replace("é",r"{\'e}").replace("è",r"{\`e}").replace("É",r"{\'E}").replace("ä",r"{\"a}").replace("ö",r"{\"o}").replace("ñ",r"{\~n}").replace("ã",r"{\~a}").replace("ë",r"{\"e}").replace("ı",r"{\i}").replace("Ş",r"{\c{S}}").replace("ş",r"{\c{s}}").replace("%","").replace("đ",r"{\-d}") - try: - res.encode('ascii') - except UnicodeEncodeError: - stderr.write("WARNING: a non-ASCII character has been found in author string for bibtex (probably a non-handled accentuated letter)." - "Check the new package added and update the function protect_accentuated_letters in Documentation/scripts/generate_how_to_cite.py\n\n") - return res + res = ( + authors.replace("é", r"{\'e}") + .replace("è", r"{\`e}") + .replace("É", r"{\'E}") + .replace("ä", r"{\"a}") + .replace("ö", r"{\"o}") + .replace("ñ", r"{\~n}") + .replace("ã", r"{\~a}") + .replace("ë", r"{\"e}") + .replace("ı", r"{\i}") + .replace("Ş", r"{\c{S}}") + .replace("ş", r"{\c{s}}") + .replace("%", "") + .replace("đ", r"{\-d}") + ) + try: + res.encode("ascii") + except UnicodeEncodeError: + stderr.write( + "WARNING: a non-ASCII character has been found in author string for bibtex (probably a non-handled accentuated letter)." + "Check the new package added and update the function protect_accentuated_letters in Documentation/scripts/generate_how_to_cite.py\n\n" + ) + return res -def make_doc_path(pkg, arg): - if BRANCH_BUILD: - return os.path.join(SOURCE_DIR, pkg, "doc", pkg, arg) - else: - return os.path.join(SOURCE_DIR, "doc", pkg, arg) -### Start of the main function ### +def make_doc_path(pkg, arg, source_dir, branch_build): + if branch_build: + return os.path.join(source_dir, pkg, "doc", pkg, arg) + else: + return os.path.join(source_dir, "doc", pkg, arg) -assert len(argv) == 4, "require exactly three arguments: source_dir, build_dir, branch_build" + ### Start of the main function ### -SOURCE_DIR = argv[1] -BUILD_DIR = argv[2] -BRANCH_BUILD = argv[3] -pattern = re.compile(r"\\package_listing{([^}]*)}") +def main(): + assert ( + len(argv) == 4 + ), "require exactly three arguments: source_dir, build_dir, branch_build" -pattern_title_and_anchor = re.compile(r"\\cgalPkgDescriptionBegin{([^}]*),\s?([^}]*)}") -pattern_author = re.compile(r"\\cgalPkgAuthors?{([^}]*)}") -pattern_bib = re.compile(r"\\cgalPkgBib{([^}]*)}") + source_dir = argv[1] + build_dir = argv[2] + branch_build = argv[3] -f = codecs.open(make_doc_path("Documentation", "packages.txt"), 'r', encoding='utf-8') -k=2 -for line in f: - match = pattern.match(line) - if(match): - pkg = match.group(1) - filename = make_doc_path(pkg, "PackageDescription.txt") - pkgdesc = codecs.open(filename, 'r', encoding='utf-8') - authors="" - bib="" - anchor="" - for pkg_line in pkgdesc: - match = pattern_title_and_anchor.match(pkg_line) + result_txt = RESULT_TXT + result_bib = RESULT_BIB + result_html = RESULT_HTML + + pattern = re.compile(r"\\package_listing{([^}]*)}") + + pattern_title_and_anchor = re.compile( + r"\\cgalPkgDescriptionBegin{([^}]*),\s?([^}]*)}" + ) + pattern_author = re.compile(r"\\cgalPkgAuthors?{([^}]*)}") + pattern_bib = re.compile(r"\\cgalPkgBib{([^}]*)}") + + f = codecs.open( + make_doc_path("Documentation", "packages.txt", source_dir, branch_build), + "r", + encoding="utf-8", + ) + k = 2 + for line in f: + match = pattern.match(line) if match: - title=match.group(1).replace("\,",",") - anchor=match.group(2) - continue - match = pattern_author.match(pkg_line) - if match: - authors=match.group(1).replace(", and"," and").replace(","," and") - continue - match = pattern_bib.match(pkg_line) - if match: - bib=match.group(1) - continue - assert len(bib)>0, "Did you forget a \cgalPkgBib{} in %r?" % filename - assert len(authors)>0, "Did you forget a \cgalPkgAuthors{} in %r?" % filename - assert len(anchor)>0, "Did you forget the anchor in \cgalPkgDescriptionBegin{} in %r?" % filename - result_txt+=gen_txt_entry(title, authors, bib, anchor,k) - # convert title and author to bibtex format - title=protect_upper_case(title) - authors=protect_accentuated_letters(authors) - result_bib+=gen_bib_entry(title, authors, bib, anchor) - result_html+=gen_html_entry(title, authors, bib, anchor) - k+=1 + pkg = match.group(1) + filename = make_doc_path( + pkg, "PackageDescription.txt", source_dir, branch_build + ) + pkgdesc = codecs.open(filename, "r", encoding="utf-8") + authors = "" + bib = "" + anchor = "" + for pkg_line in pkgdesc: + match = pattern_title_and_anchor.match(pkg_line) + if match: + title = match.group(1).replace(r"\,", ",") + anchor = match.group(2) + continue + match = pattern_author.match(pkg_line) + if match: + authors = ( + match.group(1).replace(", and", " and").replace(",", " and") + ) + continue + match = pattern_bib.match(pkg_line) + if match: + bib = match.group(1) + continue + assert len(bib) > 0, "Did you forget a \\cgalPkgBib{} in %r?" % filename + assert len(authors) > 0, ( + "Did you forget a \\cgalPkgAuthors{} in %r?" % filename + ) + assert len(anchor) > 0, ( + "Did you forget the anchor in \\cgalPkgDescriptionBegin{} in %r?" + % filename + ) + result_txt += gen_txt_entry(title, authors, bib, anchor, k) + # convert title and author to bibtex format + title = protect_upper_case(title) + authors = protect_accentuated_letters(authors) + result_bib += gen_bib_entry(title, authors, bib, anchor) + result_html += gen_html_entry(title, authors, bib, anchor) + k += 1 -f = codecs.open(BUILD_DIR+"/how_to_cite_cgal.bib.in", 'w', encoding='utf-8') -f.write(result_bib) -result_txt+=result_txt_footer -f = codecs.open(BUILD_DIR+"/how_to_cite_cgal.txt.in", 'w', encoding='utf-8') -f.write(result_txt) -f = codecs.open(BUILD_DIR+"/how_to_cite.html.in", 'w', encoding='utf-8') -f.write(pre_html + result_html + post_html) + f = codecs.open(build_dir + "/how_to_cite_cgal.bib.in", "w", encoding="utf-8") + f.write(result_bib) + result_txt += RESULT_TXT_FOOTER + f = codecs.open(build_dir + "/how_to_cite_cgal.txt.in", "w", encoding="utf-8") + f.write(result_txt) + f = codecs.open(build_dir + "/how_to_cite.html.in", "w", encoding="utf-8") + f.write(PRE_HTML + result_html + POST_HTML) + + +if __name__ == "__main__": + main() diff --git a/Envelope_2/examples/Envelope_2/CMakeLists.txt b/Envelope_2/examples/Envelope_2/CMakeLists.txt index 9fe3a04cccd..54144877d58 100644 --- a/Envelope_2/examples/Envelope_2/CMakeLists.txt +++ b/Envelope_2/examples/Envelope_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Envelope_2_Examples) find_package(CGAL REQUIRED) diff --git a/Envelope_2/test/Envelope_2/CMakeLists.txt b/Envelope_2/test/Envelope_2/CMakeLists.txt index 6cab4287b1d..37225c2f3a0 100644 --- a/Envelope_2/test/Envelope_2/CMakeLists.txt +++ b/Envelope_2/test/Envelope_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Envelope_2_Tests) find_package(CGAL REQUIRED) diff --git a/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h b/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h index 30cbba6d642..9956191905b 100644 --- a/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h +++ b/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h @@ -24,7 +24,7 @@ namespace CGAL { * two triangles, onto the \f$ xy\f$-plane, we obtain line segments. Indeed, * `Env_triangle_traits_3` inherits from the traits class that substitutes * `ArrSegmentTraits`, and extends it by adding operations on 3D objects, namely - * spacial triangles. Note that the traits class does not define + * spatial triangles. Note that the traits class does not define * `Kernel::Triangle_3` as its surface (and \f$ xy\f$-monotone surface) type, as * one may expect. This is because the traits class needs to store extra data * with the triangles in order to efficiently operate on them. Nevertheless, diff --git a/Envelope_3/doc/Envelope_3/Envelope_3.txt b/Envelope_3/doc/Envelope_3/Envelope_3.txt index f87ee9b9127..6921d5e10de 100644 --- a/Envelope_3/doc/Envelope_3/Envelope_3.txt +++ b/Envelope_3/doc/Envelope_3/Envelope_3.txt @@ -97,9 +97,9 @@ of planar arrangements, the `EnvelopeTraits_3` refines the concept must define the planar types `Point_2` and `X_monotone_curve_2` and support basic operations on them, as listed in Section \ref aos_sec-geom_traits. Moreover, it must define the -spacial types `Surface_3` and `Xy_monotone_surface_3` (in practice, +spatial types `Surface_3` and `Xy_monotone_surface_3` (in practice, these two types may be the same). Any model of the envelope-traits -concept must also support the following operations on these spacial +concept must also support the following operations on these spatial types: \cgalFigureAnchor{env3_figcomp_over} diff --git a/Envelope_3/examples/Envelope_3/CMakeLists.txt b/Envelope_3/examples/Envelope_3/CMakeLists.txt index 8e2f7b77326..089c44b56b4 100644 --- a/Envelope_3/examples/Envelope_3/CMakeLists.txt +++ b/Envelope_3/examples/Envelope_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Envelope_3_Examples) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Envelope_3/include/CGAL/Env_triangle_traits_3.h b/Envelope_3/include/CGAL/Env_triangle_traits_3.h index 0bb6e384c45..b02d478caa0 100644 --- a/Envelope_3/include/CGAL/Env_triangle_traits_3.h +++ b/Envelope_3/include/CGAL/Env_triangle_traits_3.h @@ -367,7 +367,7 @@ public: // case, to find whether a 2d point lies below/above/on a line // this test is simply computing the sign of: // (1) [(y3 - y1)(z2 - z1) - (z3 - z1)(y2 - y1)] * sign(y3 - y1) - // abd comparing to 0, where pi = (xi, yi, zi), and p2 is compared to the + // and comparing it with 0, where pi = (xi, yi, zi), and p2 is compared to the // line formed by p1 and p3 (in the direction p1 -> p3) // // for general vertical plane, we change (x, y) coordinates to (v, w), diff --git a/Envelope_3/include/CGAL/Envelope_3/Envelope_element_visitor_3.h b/Envelope_3/include/CGAL/Envelope_3/Envelope_element_visitor_3.h index 815b23f6cc2..d092f5a58cc 100644 --- a/Envelope_3/include/CGAL/Envelope_3/Envelope_element_visitor_3.h +++ b/Envelope_3/include/CGAL/Envelope_3/Envelope_element_visitor_3.h @@ -2067,7 +2067,7 @@ protected: v2_is_new = true; } - // now use the approppriate method to insert the new edge + // now use the appropriate method to insert the new edge if (v1_is_new && v2_is_new) { // if both vertices are new - use the O(1) operation // _insert_in_face_interior (in the face mapped to by he->face()) diff --git a/Envelope_3/include/CGAL/Envelope_3/Envelope_overlay_functor.h b/Envelope_3/include/CGAL/Envelope_3/Envelope_overlay_functor.h index 6b7c6cba674..126629c41e9 100644 --- a/Envelope_3/include/CGAL/Envelope_3/Envelope_overlay_functor.h +++ b/Envelope_3/include/CGAL/Envelope_3/Envelope_overlay_functor.h @@ -311,7 +311,7 @@ protected: Halfedge_handle hh = vc; // update the map traversed_vertices[Vertex_face_pair(v, hh->face())] = hh; - // check for reult + // check for result if (hh->face() == f) result = hh; } while (++vc != vc_begin); } diff --git a/Envelope_3/test/Envelope_3/CMakeLists.txt b/Envelope_3/test/Envelope_3/CMakeLists.txt index c5eb08f87fa..251474dc57a 100644 --- a/Envelope_3/test/Envelope_3/CMakeLists.txt +++ b/Envelope_3/test/Envelope_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Envelope_3_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Filtered_kernel/TODO b/Filtered_kernel/TODO index 5d1cecd8962..e8d36f278b2 100644 --- a/Filtered_kernel/TODO +++ b/Filtered_kernel/TODO @@ -166,7 +166,7 @@ class Filtered_Point_2 #endif }; -// For filtered constructions, we should be able to re-use the same predicates, +// For filtered constructions, we should be able to reuse the same predicates, // but have different constructions and objects Point_2... template > class Filtered_kernel diff --git a/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt b/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt index b240de403f8..9852fdad283 100644 --- a/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt +++ b/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Filtered_kernel_test) add_executable(bench_simple_comparisons bench_simple_comparisons.cpp) diff --git a/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt b/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt index ed16bb5c82c..bd9a629f447 100644 --- a/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt +++ b/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Filtered_kernel_Examples) find_package(CGAL REQUIRED) diff --git a/Filtered_kernel/include/CGAL/Filtered_kernel/internal/Static_filters/Static_filters.h b/Filtered_kernel/include/CGAL/Filtered_kernel/internal/Static_filters/Static_filters.h index a927eb80958..04456597083 100644 --- a/Filtered_kernel/include/CGAL/Filtered_kernel/internal/Static_filters/Static_filters.h +++ b/Filtered_kernel/include/CGAL/Filtered_kernel/internal/Static_filters/Static_filters.h @@ -84,7 +84,7 @@ // - others ? // - benchmark on more algorithms. // - improve fit_in_double() for other NTs (MP_Float, Lazy). cf tools.h. -// - try to automatize : have a struct a la Static_filter_error, with one part +// - try to automate : have a struct a la Static_filter_error, with one part // which is runtime, and the other which can be constant-propagated by the // compiler. g++ 4.0 should be able to cprop the second part... diff --git a/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt b/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt index bf640418dc9..da741c2f754 100644 --- a/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt +++ b/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Filtered_kernel_Tests) find_package(CGAL REQUIRED) diff --git a/Generalized_map/examples/Generalized_map/CMakeLists.txt b/Generalized_map/examples/Generalized_map/CMakeLists.txt index c662b980977..d0ec729d64c 100644 --- a/Generalized_map/examples/Generalized_map/CMakeLists.txt +++ b/Generalized_map/examples/Generalized_map/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Generalized_map_Examples) find_package(CGAL REQUIRED) diff --git a/Generalized_map/include/CGAL/Generalized_map_storages_with_index.h b/Generalized_map/include/CGAL/Generalized_map_storages_with_index.h index ffd867477f2..8e65e1cf171 100644 --- a/Generalized_map/include/CGAL/Generalized_map_storages_with_index.h +++ b/Generalized_map/include/CGAL/Generalized_map_storages_with_index.h @@ -75,7 +75,7 @@ namespace CGAL { struct Container_for_attributes : public Compact_container_with_index, - Multiply_by_two_policy_for_cc_with_size<64>, size_type > + Multiply_by_two_policy_for_cc_with_size<64>, Index_type > {}; /// Typedef for attributes typedef typename internal::template Get_attributes_tuple::type diff --git a/Generalized_map/test/Generalized_map/CMakeLists.txt b/Generalized_map/test/Generalized_map/CMakeLists.txt index e773e5c3218..5839c02a698 100644 --- a/Generalized_map/test/Generalized_map/CMakeLists.txt +++ b/Generalized_map/test/Generalized_map/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Generalized_map_Tests) # CGAL and its components diff --git a/Generator/benchmark/Generator/CMakeLists.txt b/Generator/benchmark/Generator/CMakeLists.txt index 7cc0116c64b..a31ce526369 100644 --- a/Generator/benchmark/Generator/CMakeLists.txt +++ b/Generator/benchmark/Generator/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Generator_example) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Generator/examples/Generator/CMakeLists.txt b/Generator/examples/Generator/CMakeLists.txt index e04617c3546..39e4934705d 100644 --- a/Generator/examples/Generator/CMakeLists.txt +++ b/Generator/examples/Generator/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Generator_Examples) find_package(CGAL REQUIRED) diff --git a/Generator/examples/Generator/README b/Generator/examples/Generator/README index 8bf916628f1..e6c25f358eb 100644 --- a/Generator/examples/Generator/README +++ b/Generator/examples/Generator/README @@ -45,7 +45,7 @@ ball_d.cpp generates random points within an hyper ball in dim d. cube_d.cpp - generates random points wthin an hyper cube in dim d. + generates random points within an hyper cube in dim d. grid_d.cpp generates points on a grid in dim d. diff --git a/Generator/test/Generator/CMakeLists.txt b/Generator/test/Generator/CMakeLists.txt index 5bd1befed5e..e7708299971 100644 --- a/Generator/test/Generator/CMakeLists.txt +++ b/Generator/test/Generator/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Generator_Tests) find_package(CGAL REQUIRED) diff --git a/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt b/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt index 39e6c10e48b..62a0eccf382 100644 --- a/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt +++ b/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Alpha_shapes_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt b/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt index 219466b7941..157517fa35d 100644 --- a/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt +++ b/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Apollonius_graph_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/Bounding_volumes/CMakeLists.txt b/GraphicsView/demo/Bounding_volumes/CMakeLists.txt index 0a3457ba8a4..42b98ccf55f 100644 --- a/GraphicsView/demo/Bounding_volumes/CMakeLists.txt +++ b/GraphicsView/demo/Bounding_volumes/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Bounding_volumes_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt b/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt index 940c5bcc27d..351fb788b3f 100644 --- a/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt +++ b/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Circular_kernel_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/Generator/CMakeLists.txt b/GraphicsView/demo/Generator/CMakeLists.txt index 6a3c0d9a4ac..fd3550dd5e6 100644 --- a/GraphicsView/demo/Generator/CMakeLists.txt +++ b/GraphicsView/demo/Generator/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Generator_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/GraphicsView/CMakeLists.txt b/GraphicsView/demo/GraphicsView/CMakeLists.txt index aa84ba549cb..f5df86dac28 100644 --- a/GraphicsView/demo/GraphicsView/CMakeLists.txt +++ b/GraphicsView/demo/GraphicsView/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(GraphicsView_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt b/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt index 058ac7ad55b..437603b1abb 100644 --- a/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt +++ b/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(L1_Voronoi_diagram_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/L1_Voronoi_diagram_2/include/CGAL/L1_voronoi_traits_2.h b/GraphicsView/demo/L1_Voronoi_diagram_2/include/CGAL/L1_voronoi_traits_2.h index e7d9b163a4c..33b7a5eaee5 100644 --- a/GraphicsView/demo/L1_Voronoi_diagram_2/include/CGAL/L1_voronoi_traits_2.h +++ b/GraphicsView/demo/L1_Voronoi_diagram_2/include/CGAL/L1_voronoi_traits_2.h @@ -115,7 +115,7 @@ public: if (l.is_vertical()) { // Could be a tie. - // To be "above" the curve, we acutually need to have smaller x coordinate, + // To be "above" the curve, we actually need to have smaller x coordinate, // the order of the comparison function here is opposite to the none vertical // case. side = CGAL::opposite(side); diff --git a/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt b/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt index 275095d4b70..369d938d467 100644 --- a/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt +++ b/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Largest_empty_rect_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt b/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt index f6b0698e4cb..ba2b3e85708 100644 --- a/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt +++ b/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_2_triangulation_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/Polygon/CMakeLists.txt b/GraphicsView/demo/Polygon/CMakeLists.txt index ee30af0275e..e3e4758a1cf 100644 --- a/GraphicsView/demo/Polygon/CMakeLists.txt +++ b/GraphicsView/demo/Polygon/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygon_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6 Core) diff --git a/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt b/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt index 463f5a424c1..4662d848a9e 100644 --- a/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt +++ b/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Segment_Delaunay_graph_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6 Core) diff --git a/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt b/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt index 842ed5ff23b..45d7de3f21b 100644 --- a/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt +++ b/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Segment_Delaunay_graph_Linf_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6 Core) diff --git a/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt b/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt index ab1015f2fc3..84a65d8d79d 100644 --- a/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt +++ b/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Snap_rounding_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt b/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt index 78c6acd254d..a5cbfc4346c 100644 --- a/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt +++ b/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Spatial_searching_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/Stream_lines_2/CMakeLists.txt b/GraphicsView/demo/Stream_lines_2/CMakeLists.txt index f3f3133898a..85a1a90d145 100644 --- a/GraphicsView/demo/Stream_lines_2/CMakeLists.txt +++ b/GraphicsView/demo/Stream_lines_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Stream_lines_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/GraphicsView/demo/Triangulation_2/CMakeLists.txt b/GraphicsView/demo/Triangulation_2/CMakeLists.txt index a3ff3a16dd4..515dfca6781 100644 --- a/GraphicsView/demo/Triangulation_2/CMakeLists.txt +++ b/GraphicsView/demo/Triangulation_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_2_Demo) set(CMAKE_AUTOMOC ON) diff --git a/GraphicsView/include/CGAL/Qt/camera_impl.h b/GraphicsView/include/CGAL/Qt/camera_impl.h index bded07f7692..2997b4778e4 100644 --- a/GraphicsView/include/CGAL/Qt/camera_impl.h +++ b/GraphicsView/include/CGAL/Qt/camera_impl.h @@ -155,7 +155,7 @@ since the latter automatically updates these values when it is resized (hence overwriting your values). Non-positive dimension are silently replaced by a 1 pixel value to ensure -frustrum coherence. +frustum coherence. If your Camera is used without a CGAL::QGLViewer (offscreen rendering, shadow maps), use setAspectRatio() instead to define the projection matrix. */ diff --git a/HalfedgeDS/doc/HalfedgeDS/HalfedgeDS.txt b/HalfedgeDS/doc/HalfedgeDS/HalfedgeDS.txt index 29ea4d99b27..161487e6b55 100644 --- a/HalfedgeDS/doc/HalfedgeDS/HalfedgeDS.txt +++ b/HalfedgeDS/doc/HalfedgeDS/HalfedgeDS.txt @@ -172,7 +172,7 @@ in a consistent, i.e., valid, state. \subsection HalfedgeDSExampleAddingColortoFaces Example Adding Color to Faces -This example re-uses the base class available for faces and adds a +This example reuses the base class available for faces and adds a member variable `color`. \cgalExample{HalfedgeDS/hds_prog_color.cpp} diff --git a/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt b/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt index 7a6bcd18079..49a4bd1c16f 100644 --- a/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt +++ b/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(HalfedgeDS_Examples) find_package(CGAL REQUIRED) diff --git a/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt b/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt index 2423b09042c..bab4ef15f0a 100644 --- a/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt +++ b/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(HalfedgeDS_Tests) find_package(CGAL REQUIRED) diff --git a/Hash_map/benchmark/Hash_map/CMakeLists.txt b/Hash_map/benchmark/Hash_map/CMakeLists.txt index 6aaaab62124..51860317694 100644 --- a/Hash_map/benchmark/Hash_map/CMakeLists.txt +++ b/Hash_map/benchmark/Hash_map/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Hash_map) # CGAL and its components diff --git a/Hash_map/test/Hash_map/CMakeLists.txt b/Hash_map/test/Hash_map/CMakeLists.txt index 107424e7177..c2a6220bc7a 100644 --- a/Hash_map/test/Hash_map/CMakeLists.txt +++ b/Hash_map/test/Hash_map/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Hash_map_Tests) find_package(CGAL REQUIRED) diff --git a/Heat_method_3/doc/Heat_method_3/Heat_method_3.txt b/Heat_method_3/doc/Heat_method_3/Heat_method_3.txt index 2b2d3f8aab3..99ad2fb4344 100644 --- a/Heat_method_3/doc/Heat_method_3/Heat_method_3.txt +++ b/Heat_method_3/doc/Heat_method_3/Heat_method_3.txt @@ -22,7 +22,7 @@ as a gradient red/green corresponding to close/far from the source vertices. The heat method is highly efficient, since the algorithm boils down to two standard sparse linear algebra problems. It is especially useful in situations where one wishes to perform repeated distance queries -on a fixed domain, since precomputation done for the first query can be re-used. +on a fixed domain, since precomputation done for the first query can be reused. As a rule of thumb, the method works well on triangle meshes, which are Delaunay, though in practice may also work fine for meshes that are far from diff --git a/Heat_method_3/examples/Heat_method_3/CMakeLists.txt b/Heat_method_3/examples/Heat_method_3/CMakeLists.txt index 42c7c498369..5eeb1961f16 100644 --- a/Heat_method_3/examples/Heat_method_3/CMakeLists.txt +++ b/Heat_method_3/examples/Heat_method_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Heat_method_3_Examples) # CGAL and its components diff --git a/Heat_method_3/test/Heat_method_3/CMakeLists.txt b/Heat_method_3/test/Heat_method_3/CMakeLists.txt index bd1f923430e..314f023165c 100644 --- a/Heat_method_3/test/Heat_method_3/CMakeLists.txt +++ b/Heat_method_3/test/Heat_method_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Heat_method_3_Tests) # CGAL and its components diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/function_objects.h b/Homogeneous_kernel/include/CGAL/Homogeneous/function_objects.h index 3028950d7af..b88aab964dc 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/function_objects.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/function_objects.h @@ -189,7 +189,7 @@ namespace HomogeneousKernelFunctors { // want to solve alpha*v1 + beta*v2 + gamma*v3 == vp // let vi' == vi*vi.hw() // we solve alpha'*v1' + beta'*v2' + gamma'*v3' == vp' / vp.hw() - // muliplied by vp.hw() + // multiplied by vp.hw() // then we have alpha = alpha'*v1.hw() / vp.hw() // and beta = beta' *v2.hw() / vp.hw() // and gamma = gamma'*v3.hw() / vp.hw() diff --git a/Hyperbolic_triangulation_2/TODO b/Hyperbolic_triangulation_2/TODO index 0bc3cc547d9..f38377d2492 100644 --- a/Hyperbolic_triangulation_2/TODO +++ b/Hyperbolic_triangulation_2/TODO @@ -17,7 +17,7 @@ understand why remove variant for supporting circle or line of bisector call it only when we know that it is a circle -it will simplyfy the code of Construct_hyperbolic_bisector_2 at least in some cases +it will simplify the code of Construct_hyperbolic_bisector_2 at least in some cases test bisectors dual functions in special cases of euclidean line segments diff --git a/Hyperbolic_triangulation_2/benchmark/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/benchmark/Hyperbolic_triangulation_2/CMakeLists.txt index bb1b77b196f..7664529ebee 100644 --- a/Hyperbolic_triangulation_2/benchmark/Hyperbolic_triangulation_2/CMakeLists.txt +++ b/Hyperbolic_triangulation_2/benchmark/Hyperbolic_triangulation_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Hyperbolic_triangulation_2_benchmark) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt index 2f75d88b48a..7c0da4ed37b 100644 --- a/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt +++ b/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Hyperbolic_triangulation_2_Demo) # Find includes in corresponding build directories diff --git a/Hyperbolic_triangulation_2/doc/Hyperbolic_triangulation_2/CGAL/Hyperbolic_Delaunay_triangulation_2.h b/Hyperbolic_triangulation_2/doc/Hyperbolic_triangulation_2/CGAL/Hyperbolic_Delaunay_triangulation_2.h index 4d2b45ca343..ef2d984340b 100644 --- a/Hyperbolic_triangulation_2/doc/Hyperbolic_triangulation_2/CGAL/Hyperbolic_Delaunay_triangulation_2.h +++ b/Hyperbolic_triangulation_2/doc/Hyperbolic_triangulation_2/CGAL/Hyperbolic_Delaunay_triangulation_2.h @@ -236,7 +236,7 @@ public: void remove(Vertex_handle v); /*! - Removes the vertices in the iterator range `[firs, last)` from the triangulation. + Removes the vertices in the iterator range `[first, last)` from the triangulation. \pre all vertices in `[first, last)` are vertices of the triangulation. */ template diff --git a/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/CMakeLists.txt index 15433a72b16..04291fd4612 100644 --- a/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/CMakeLists.txt +++ b/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Hyperbolic_triangulation_2_Examples) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Hyperbolic_triangulation_2/test/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/test/Hyperbolic_triangulation_2/CMakeLists.txt index b61314c788b..4d4c4397245 100644 --- a/Hyperbolic_triangulation_2/test/Hyperbolic_triangulation_2/CMakeLists.txt +++ b/Hyperbolic_triangulation_2/test/Hyperbolic_triangulation_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Hyperbolic_triangulation_2_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt b/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt index e6ca6bcbc4d..ae8130bfe5d 100644 --- a/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt +++ b/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Inscribed_areas_Examples) find_package(CGAL REQUIRED) diff --git a/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt b/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt index fe345e89fab..afd79762867 100644 --- a/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt +++ b/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Inscribed_areas_Tests) find_package(CGAL REQUIRED) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 6c8befb902b..a8ddd38c1a1 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -226,6 +226,11 @@ Release date: June 2024 - **Breaking change**: Removed the class templates `CGAL::Gray_image_mesh_domain_3`, `CGAL::Implicit_mesh_domain_3`, and `CGAL::Labeled_image_mesh_domain_3`, which were deprecated since CGAL-4.13. +### [3D Surface Mesh Generation](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMesher3) + +- This package is deprecated and the package [3D Mesh Generation](https://doc.cgal.org/6.0/Manual/packages.html#PkgMesh3) should + be used instead. + ### [Surface Mesh Parameterization](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMeshParameterization) - **Breaking change**: The method [`CGAL::Surface_mesh_parameterization::LSCM_parameterizer_3`](https://doc.cgal.org/6.0/Surface_mesh_parameterization/classCGAL_1_1Surface__mesh__parameterization_1_1LSCM__parameterizer__3.html) @@ -3364,7 +3369,7 @@ Release date: October 2013 #### CGAL and Boost Property Maps - The `key_type` of the property maps provided by CGAL used to be an - iterator. In order to be more easily re-used, the `key_type` has + iterator. In order to be more easily reused, the `key_type` has been changed to be the `value_type` of the iterator. The packages that have been updated to match these changes are **Point Set Processing** and **Surface Reconstruction from Point Sets**. @@ -4933,7 +4938,7 @@ CGAL now works around the preprocessor macros 'min' and 'max' defined in allows users to extend the DCEL of the underlying arrangement. - Added a function template called connect\_holes() that connects the holes in a given polygon with holes, turning it into a - sequence of points, where the holes are connceted to the outer + sequence of points, where the holes are connected to the outer boundary using zero-width passages. - Added a non-const function member to General\_polygon\_set\_2 that obtains the underlying arrangement. diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 98d27538371..c5df6f680c6 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -4,7 +4,7 @@ # ${CGAL_SOURCE_DIR} and to the root binary directory of the project as # ${CGAL_BINARY_DIR} or ${CGAL_BINARY_DIR}. if(NOT PROJECT_NAME) - cmake_minimum_required(VERSION 3.1...3.23) + cmake_minimum_required(VERSION 3.12...3.29) project(CGAL CXX C) endif() diff --git a/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake index 26d32c3df0b..0b0a2b80b1b 100644 --- a/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake +++ b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.11...3.23) +cmake_minimum_required(VERSION 3.12...3.29) if(Boost_IOSTREAMS_FOUND AND NOT TARGET CGAL::Boost_iostreams_support) if( WIN32 ) diff --git a/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake b/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake index 347ab99e71c..60e2bd25c4d 100644 --- a/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake +++ b/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake @@ -23,7 +23,7 @@ # If set, the `LEDA` library will be searched and used to provide # the exact number types used by CGAL kernels. # -cmake_minimum_required(VERSION 3.11...3.23) +cmake_minimum_required(VERSION 3.12...3.29) if(CGAL_SetupCGALDependencies_included) return() endif() diff --git a/Installation/cmake/modules/CGAL_SetupLEDA.cmake b/Installation/cmake/modules/CGAL_SetupLEDA.cmake index 8ad720b4767..171f6f39e9d 100644 --- a/Installation/cmake/modules/CGAL_SetupLEDA.cmake +++ b/Installation/cmake/modules/CGAL_SetupLEDA.cmake @@ -9,7 +9,7 @@ # find_package(LEDA) # # and defines the function :command:`use_CGAL_LEDA_support`. -cmake_minimum_required(VERSION 3.11...3.23) +cmake_minimum_required(VERSION 3.12...3.29) if(CGAL_SetupLEDA_included) return() endif() diff --git a/Installation/cmake/modules/CGAL_enable_end_of_configuration_hook.cmake b/Installation/cmake/modules/CGAL_enable_end_of_configuration_hook.cmake index 671d5e23680..4559bf506d1 100644 --- a/Installation/cmake/modules/CGAL_enable_end_of_configuration_hook.cmake +++ b/Installation/cmake/modules/CGAL_enable_end_of_configuration_hook.cmake @@ -6,7 +6,7 @@ # the configuration. # # See https://stackoverflow.com/a/43300621/1728537 for the starting point. -cmake_minimum_required(VERSION 3.3...3.24) +cmake_minimum_required(VERSION 3.12...3.29) if(CGAL_SKIP_CMAKE_HOOKS) return() diff --git a/Installation/cmake/modules/CGAL_pointmatcher_support.cmake b/Installation/cmake/modules/CGAL_pointmatcher_support.cmake index ed6aa479c70..4c2f9997368 100644 --- a/Installation/cmake/modules/CGAL_pointmatcher_support.cmake +++ b/Installation/cmake/modules/CGAL_pointmatcher_support.cmake @@ -8,7 +8,7 @@ if(libpointmatcher_FOUND AND NOT TARGET CGAL::pointmatcher_support) AND Boost_date_time_FOUND) add_library(CGAL::pointmatcher_support INTERFACE IMPORTED) target_compile_definitions(CGAL::pointmatcher_support INTERFACE "CGAL_LINKED_WITH_POINTMATCHER") - target_include_directories(CGAL::pointmatcher_support INTERFACE "${libpointmatcher_INCLUDE_DIR}") + target_include_directories(CGAL::pointmatcher_support INTERFACE "${libpointmatcher_INCLUDE_DIRS}") target_link_libraries(CGAL::pointmatcher_support INTERFACE ${libpointmatcher_LIBRARIES} libnabo::nabo) else() message(STATUS "NOTICE: the libpointmatcher library requires the following boost components: thread filesystem system program_options date_time chrono.") diff --git a/Installation/cmake/modules/FindSuiteSparse.cmake b/Installation/cmake/modules/FindSuiteSparse.cmake index a58cdefdfcc..1782083e294 100644 --- a/Installation/cmake/modules/FindSuiteSparse.cmake +++ b/Installation/cmake/modules/FindSuiteSparse.cmake @@ -139,10 +139,10 @@ macro(SuiteSparse_FIND_COMPONENTS ) ## special check for suitesparse component (allow to find on windows but not on linux because doesn't exist) list(FIND SuiteSparse_FIND_COMPONENTS "suitesparse" ss_index) if(${ss_index} MATCHES "-1") - ## do nothing, the user didn't provide the suisparse componnent + ## do nothing, the user didn't provide the suisparse component else() if(WIN32) - ## do nothing, the user provide the suisparse componnent we will try to find + ## do nothing, the user provide the suisparse component we will try to find else() list(REMOVE_AT SuiteSparse_FIND_COMPONENTS ${ss_index}) if(SuiteSparse_VERBOSE) diff --git a/Installation/demo/CMakeLists.txt b/Installation/demo/CMakeLists.txt index 8b6b39e1839..96c284fa9d8 100644 --- a/Installation/demo/CMakeLists.txt +++ b/Installation/demo/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(CGAL_DEMOS) if(CGAL_BRANCH_BUILD) diff --git a/Installation/examples/CMakeLists.txt b/Installation/examples/CMakeLists.txt index f23eedf18e7..e62d49c187d 100644 --- a/Installation/examples/CMakeLists.txt +++ b/Installation/examples/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(CGAL_EXAMPLES) if(CGAL_BRANCH_BUILD) diff --git a/Installation/include/CGAL/version.h b/Installation/include/CGAL/version.h index 81f7166bc7c..6840e2546e3 100644 --- a/Installation/include/CGAL/version.h +++ b/Installation/include/CGAL/version.h @@ -17,12 +17,12 @@ #define CGAL_VERSION_H #ifndef SWIG -#define CGAL_VERSION 6.0-beta1 +#define CGAL_VERSION 6.0-beta2 #define CGAL_GIT_HASH abcdef #endif -#define CGAL_VERSION_NR 1060000910 +#define CGAL_VERSION_NR 1060000920 #define CGAL_SVN_REVISION 99999 -#define CGAL_RELEASE_DATE 20240601 +#define CGAL_RELEASE_DATE 20240701 #include diff --git a/Installation/lib/cmake/CGAL/CGALConfig.cmake b/Installation/lib/cmake/CGAL/CGALConfig.cmake index 0ebd009ac8d..81f84153dde 100644 --- a/Installation/lib/cmake/CGAL/CGALConfig.cmake +++ b/Installation/lib/cmake/CGAL/CGALConfig.cmake @@ -214,6 +214,6 @@ if ( NOT "${CGAL_CMAKE_EXACT_NT_BACKEND}" STREQUAL "Default" ) TARGET CGAL APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "CMAKE_OVERRIDDEN_DEFAULT_ENT_BACKEND=${DEB_VAL}" - ) # do not use set_target_properties to avoid overwritting + ) # do not use set_target_properties to avoid overwriting endif() diff --git a/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake b/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake index b18ddc04690..df15f9e3108 100644 --- a/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake +++ b/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake @@ -2,7 +2,7 @@ set(CGAL_MAJOR_VERSION 6) set(CGAL_MINOR_VERSION 0) set(CGAL_BUGFIX_VERSION 0) include(${CMAKE_CURRENT_LIST_DIR}/CGALConfigBuildVersion.cmake) -set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "6.0-beta1") +set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "6.0-beta2") set(CGAL_VERSION_PUBLIC_RELEASE_NAME "CGAL-${CGAL_VERSION_PUBLIC_RELEASE_VERSION}") if (CGAL_BUGFIX_VERSION AND CGAL_BUGFIX_VERSION GREATER 0) diff --git a/Installation/test/CMakeLists.txt b/Installation/test/CMakeLists.txt index f61a6bf3eb6..e0163f201ab 100644 --- a/Installation/test/CMakeLists.txt +++ b/Installation/test/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(CGAL_TESTS) if(CGAL_BRANCH_BUILD) diff --git a/Installation/test/Installation/CMakeLists.txt b/Installation/test/Installation/CMakeLists.txt index a38b9d6785d..fa828e9e82b 100644 --- a/Installation/test/Installation/CMakeLists.txt +++ b/Installation/test/Installation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project( Installation_Tests ) diff --git a/Installation/test/Installation/test_configuration.cmake.in b/Installation/test/Installation/test_configuration.cmake.in index 3bb9e263061..4f4a08bc8dd 100644 --- a/Installation/test/Installation/test_configuration.cmake.in +++ b/Installation/test/Installation/test_configuration.cmake.in @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(test_configuration) find_package(CGAL) add_definitions(-DQT_NO_KEYWORDS) diff --git a/Installation/test/Installation/test_configuration_qt.cmake.in b/Installation/test/Installation/test_configuration_qt.cmake.in index 6283fc66120..0001202e61c 100644 --- a/Installation/test/Installation/test_configuration_qt.cmake.in +++ b/Installation/test/Installation/test_configuration_qt.cmake.in @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(test_configuration) find_package(CGAL COMPONENTS Qt6) add_definitions(-DCGAL_USE_BASIC_VIEWER -DQT_NO_KEYWORDS) diff --git a/Installation/test/Installation/test_find_package.cmake.in b/Installation/test/Installation/test_find_package.cmake.in index 1bcdc9b5c6b..cf759c73b85 100644 --- a/Installation/test/Installation/test_find_package.cmake.in +++ b/Installation/test/Installation/test_find_package.cmake.in @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project( test_find_package_${mode} ) find_package(CGAL ${VERSION} ${EXACT}REQUIRED PATHS ${CGAL_DIR} diff --git a/Interpolation/examples/Interpolation/CMakeLists.txt b/Interpolation/examples/Interpolation/CMakeLists.txt index e211ad00d1b..0277e9aaf30 100644 --- a/Interpolation/examples/Interpolation/CMakeLists.txt +++ b/Interpolation/examples/Interpolation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Interpolation_Examples) find_package(CGAL REQUIRED) diff --git a/Interpolation/test/Interpolation/CMakeLists.txt b/Interpolation/test/Interpolation/CMakeLists.txt index 145d4afbeb7..cbfc358658e 100644 --- a/Interpolation/test/Interpolation/CMakeLists.txt +++ b/Interpolation/test/Interpolation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Interpolation_Tests) find_package(CGAL REQUIRED) diff --git a/Intersections_2/test/Intersections_2/CMakeLists.txt b/Intersections_2/test/Intersections_2/CMakeLists.txt index f7b105f1256..5fc9f53991f 100644 --- a/Intersections_2/test/Intersections_2/CMakeLists.txt +++ b/Intersections_2/test/Intersections_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Intersections_2_Tests) find_package(CGAL REQUIRED) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/Triangle_3_Triangle_3_intersection.h b/Intersections_3/include/CGAL/Intersections_3/internal/Triangle_3_Triangle_3_intersection.h index 471904cd97a..a70bf84ad79 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/Triangle_3_Triangle_3_intersection.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/Triangle_3_Triangle_3_intersection.h @@ -142,7 +142,7 @@ struct Point_on_triangle } }; -// the intersection of two triangles is computed by interatively intersection t2 +// the intersection of two triangles is computed by iteratively intersection t2 // with halfspaces defined by edges of t1. The following function is called // for each each on t1 on edge of the current intersection. // pq is such an edge and p1q1 from t1 defines the halfspace intersection diff --git a/Intersections_3/test/Intersections_3/CMakeLists.txt b/Intersections_3/test/Intersections_3/CMakeLists.txt index d71ca250b30..9b9ae08edee 100644 --- a/Intersections_3/test/Intersections_3/CMakeLists.txt +++ b/Intersections_3/test/Intersections_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Intersections_3_Tests) find_package(CGAL REQUIRED) diff --git a/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt b/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt index 1104b0b8471..458b71b043f 100644 --- a/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt +++ b/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Interval_skip_list_Examples) find_package(CGAL REQUIRED) diff --git a/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt b/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt index e4eca3e7b44..690a918f787 100644 --- a/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt +++ b/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Interval_skip_list_Tests) find_package(CGAL REQUIRED) diff --git a/Interval_support/test/Interval_support/CMakeLists.txt b/Interval_support/test/Interval_support/CMakeLists.txt index 274c2353a7a..fd3788e50e9 100644 --- a/Interval_support/test/Interval_support/CMakeLists.txt +++ b/Interval_support/test/Interval_support/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Interval_support_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt b/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt index b68d6a52fd0..d28114222f4 100644 --- a/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt +++ b/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Jet_fitting_3_Examples) find_package(CGAL REQUIRED) diff --git a/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt b/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt index 008acda4622..5995efe5389 100644 --- a/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt +++ b/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Jet_fitting_3_Tests) find_package(CGAL REQUIRED) diff --git a/Kernel_23/benchmark/Kernel_23/CMakeLists.txt b/Kernel_23/benchmark/Kernel_23/CMakeLists.txt index 862b98b2152..3d2109157eb 100644 --- a/Kernel_23/benchmark/Kernel_23/CMakeLists.txt +++ b/Kernel_23/benchmark/Kernel_23/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Kernel_23_benchmark) find_package(CGAL QUIET OPTIONAL_COMPONENTS Core) diff --git a/Kernel_23/doc/Kernel_23/CGAL/Filtered_kernel.h b/Kernel_23/doc/Kernel_23/CGAL/Filtered_kernel.h index 5935300f991..5b1775d1614 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Filtered_kernel.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Filtered_kernel.h @@ -59,13 +59,11 @@ techniques from \cgalCite{cgal:mp-fcafg-05}. The geometric constructions are exactly those of the kernel `CK`, which means that they are not necessarily exact. -\cgalHeading{Parameters} - -The first parameter, `CK`, is the "Construction Kernel", namely the kernel +\tparam CK the "Construction Kernel", namely the kernel from which are taken the types of the geometric objects as well as the geometric constructions. -The second parameter, `UseStaticFilters`, is a Boolean value which +\tparam UseStaticFilters a Boolean value which activates or not an additional layer of semi-static filters. It defaults to `true` (activated), unless the `CGAL_NO_STATIC_FILTERS` macro is defined. This option is mostly for debugging and testing, there should be no @@ -94,7 +92,7 @@ each predicate of the kernel traits interface. Additionally, faster static filters may be used for a few selected critical predicates. */ -template< typename CK > +template< typename CK, bool UseStaticFilters > struct Filtered_kernel { /// \name Types diff --git a/Kernel_23/doc/Kernel_23/CGAL/Tetrahedron_3.h b/Kernel_23/doc/Kernel_23/CGAL/Tetrahedron_3.h index 6af609250b8..eee115731e1 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Tetrahedron_3.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Tetrahedron_3.h @@ -92,7 +92,7 @@ Bounded_side bounded_side(const Point_3 &p) const; /// @} -/// \name Convencience Boolean Functions +/// \name Convenience Boolean Functions /// @{ /*! diff --git a/Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h b/Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h index 77cd20715ad..7057cf95ccd 100644 --- a/Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h +++ b/Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h @@ -764,6 +764,32 @@ public: const K::Point_3& b, const K::Point_3& c, const K::FT& cosine); + + /*! + compares the angles \f$ \theta_1\f$ and \f$ \theta_2\f$, where + \f$ \theta_1\f$ is the angle in \f$ [0, \pi]\f$ of the triangle + \f$ (a1, b1, c1)\f$ at the vertex `b1`, and \f$ \theta_2\f$ + is the angle in \f$ [0, \pi]\f$ of the triangle \f$ (a2, b2, c2)\f$ at the vertex `b2`. + \pre `a1!=b1 && c1!=b1 && a2!=b2 && c2!=b2`. + */ + Comparison_result operator()(const K::Point_3& a1, + const K::Point_3& b1, + const K::Point_3& c1, + const K::Point_3& a2, + const K::Point_3& b2, + const K::Point_3& c2); + + /*! + compares the angles \f$ \theta_1\f$ and \f$ \theta_2\f$, where + \f$ \theta_1\f$ is the angle in \f$ [0, \pi]\f$ between the vectors + \f$ u1\f$ and \f$ v1\f$, and \f$ \theta_2\f$ is the angle in \f$ [0, \pi]\f$ + between the vectors \f$ u2\f$ and \f$ v2\f$. + \pre none of the vectors have zero length. + */ + Comparison_result operator()(const K::Vector_3& u1, + const K::Vector_3& v1, + const K::Vector_3& u2, + const K::Vector_3& v2); }; /*! diff --git a/Kernel_23/doc/Kernel_23/PackageDescription.txt b/Kernel_23/doc/Kernel_23/PackageDescription.txt index 1714b371c12..71f339fd082 100644 --- a/Kernel_23/doc/Kernel_23/PackageDescription.txt +++ b/Kernel_23/doc/Kernel_23/PackageDescription.txt @@ -60,7 +60,7 @@ - `CGAL::Cartesian` - `CGAL::Cartesian_converter` - `CGAL::cartesian_to_homogeneous` -- `CGAL::Filtered_kernel` +- `CGAL::Filtered_kernel` - `CGAL::Filtered_kernel_adaptor` - `CGAL::Filtered_predicate` - `CGAL::Homogeneous` diff --git a/Kernel_23/examples/Kernel_23/CMakeLists.txt b/Kernel_23/examples/Kernel_23/CMakeLists.txt index 3f86edfab56..f1a8ba7716f 100644 --- a/Kernel_23/examples/Kernel_23/CMakeLists.txt +++ b/Kernel_23/examples/Kernel_23/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Kernel_23_Examples) find_package(CGAL REQUIRED) diff --git a/Kernel_23/include/CGAL/Kernel/function_objects.h b/Kernel_23/include/CGAL/Kernel/function_objects.h index d8ae9f4bbf4..2e39f539753 100644 --- a/Kernel_23/include/CGAL/Kernel/function_objects.h +++ b/Kernel_23/include/CGAL/Kernel/function_objects.h @@ -206,16 +206,15 @@ namespace CommonKernelFunctors { typedef typename K::Comparison_result result_type; result_type - operator()(const Point_3& a1, const Point_3& b1, const Point_3& c1, - const Point_3& a2, const Point_3& b2, const Point_3& c2) const + operator()(const Vector_3& ba1, const Vector_3& bc1, + const Vector_3& ba2, const Vector_3& bc2) const { - using FT = typename K::FT; - const Vector_3 ba1 = a1 - b1; - const Vector_3 bc1 = c1 - b1; - const Vector_3 ba2 = a2 - b2; - const Vector_3 bc2 = c2 - b2; - const FT sc_prod_1 = ba1 * bc1; - const FT sc_prod_2 = ba2 * bc2; + typename K::Compute_scalar_product_3 scalar_product = K().compute_scalar_product_3_object(); + typename K::Compute_squared_length_3 sq_length = K().compute_squared_length_3_object(); + + const FT sc_prod_1 = scalar_product(ba1, bc1); + const FT sc_prod_2 = scalar_product(ba2, bc2); + // Reminder: cos(angle) = scalar_product(ba, bc) / (length(ba)*length(bc)) // cosine is decreasing on 0, pi // thus angle1 < angle2 is equivalent to cos(angle1) > cos(angle2) @@ -223,26 +222,36 @@ namespace CommonKernelFunctors { if(sc_prod_2 >= 0) { // the two cosine are >= 0, we can compare the squares // (square(x) is increasing when x>=0 - return CGAL::compare(CGAL::square(sc_prod_2)* - ba1.squared_length()*bc1.squared_length(), - CGAL::square(sc_prod_1)* - ba2.squared_length()*bc2.squared_length()); + return CGAL::compare(CGAL::square(sc_prod_2) * sq_length(ba1) * sq_length(bc1), + CGAL::square(sc_prod_1) * sq_length(ba2) * sq_length(bc2)); } else { return SMALLER; } } else { if(sc_prod_2 < 0) { // the two cosine are < 0, square(x) is decreasing when x<0 - return CGAL::compare(CGAL::square(sc_prod_1)* - ba2.squared_length()*bc2.squared_length(), - CGAL::square(sc_prod_2)* - ba1.squared_length()*bc1.squared_length()); + return CGAL::compare(CGAL::square(sc_prod_1) * sq_length(ba2) * sq_length(bc2), + CGAL::square(sc_prod_2) * sq_length(ba1) * sq_length(bc1)); } else { return LARGER; } } } + result_type + operator()(const Point_3& a1, const Point_3& b1, const Point_3& c1, + const Point_3& a2, const Point_3& b2, const Point_3& c2) const + { + typename K::Construct_vector_3 vector = K().construct_vector_3_object(); + + const Vector_3 ba1 = vector(b1, a1); + const Vector_3 bc1 = vector(b1, c1); + const Vector_3 ba2 = vector(b2, a2); + const Vector_3 bc2 = vector(b2, c2); + + return this->operator()(ba1, bc1, ba2, bc2); + } + result_type operator()(const Point_3& a, const Point_3& b, const Point_3& c, const FT& cosine) const diff --git a/Kernel_23/include/CGAL/Kernel/global_functions_3.h b/Kernel_23/include/CGAL/Kernel/global_functions_3.h index aa16e5d7cb8..6fb9b975647 100644 --- a/Kernel_23/include/CGAL/Kernel/global_functions_3.h +++ b/Kernel_23/include/CGAL/Kernel/global_functions_3.h @@ -318,6 +318,24 @@ compare_angle(const Point_3& a, const Point_3& b, const Point_3& c, return internal::compare_angle(a, b, c, cosine, K()); } +template < class K > +inline +typename K::Comparison_result +compare_angle(const Point_3& a1, const Point_3& b1, const Point_3& c1, + const Point_3& a2, const Point_3& b2, const Point_3& c2) +{ + return internal::compare_angle(a1, b1, c1, a2, b2, c2, K()); +} + +template < class K > +inline +typename K::Comparison_result +compare_angle(const Vector_3& u1, const Vector_3& v1, + const Vector_3& u2, const Vector_3& v2) +{ + return internal::compare_angle(u1, v1, u2, v2, K()); +} + template < class K > inline typename K::Comparison_result diff --git a/Kernel_23/include/CGAL/Kernel/global_functions_internal_3.h b/Kernel_23/include/CGAL/Kernel/global_functions_internal_3.h index 8ae26a9c787..9aa8e4a339e 100644 --- a/Kernel_23/include/CGAL/Kernel/global_functions_internal_3.h +++ b/Kernel_23/include/CGAL/Kernel/global_functions_internal_3.h @@ -333,6 +333,32 @@ compare_angle(const typename K::Point_3& a, return k.compare_angle_3_object()(a, b, c, cosine); } +template < class K > +inline +typename K::Comparison_result +compare_angle(const typename K::Point_3& a1, + const typename K::Point_3& b1, + const typename K::Point_3& c1, + const typename K::Point_3& a2, + const typename K::Point_3& b2, + const typename K::Point_3& c2, + const K& k) +{ + return k.compare_angle_3_object()(a1, b1, c1, a2, b2, c2); +} + +template < class K > +inline +typename K::Comparison_result +compare_angle(const typename K::Vector_3& u1, + const typename K::Vector_3& v1, + const typename K::Vector_3& u2, + const typename K::Vector_3& v2, + const K& k) +{ + return k.compare_angle_3_object()(u1, v1, u2, v2); +} + template < class K > inline typename K::Comparison_result diff --git a/Kernel_23/test/Kernel_23/CMakeLists.txt b/Kernel_23/test/Kernel_23/CMakeLists.txt index 740f9325814..e617a788242 100644 --- a/Kernel_23/test/Kernel_23/CMakeLists.txt +++ b/Kernel_23/test/Kernel_23/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Kernel_23_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Kernel_23/test/Kernel_23/include/CGAL/_test_compare_angle_3.h b/Kernel_23/test/Kernel_23/include/CGAL/_test_compare_angle_3.h index 573880380a1..6ed84a5ecd6 100644 --- a/Kernel_23/test/Kernel_23/include/CGAL/_test_compare_angle_3.h +++ b/Kernel_23/test/Kernel_23/include/CGAL/_test_compare_angle_3.h @@ -14,8 +14,10 @@ template bool _test_compare_angle_3(const R& rep) { - typedef typename R::Point_3 Point_3; typedef typename R::FT FT; + typedef typename R::Point_3 Point_3; + typedef typename R::Vector_3 Vector_3; + typename R::Compare_angle_3 compare_angle = rep.compare_angle_3_object(); @@ -33,6 +35,18 @@ _test_compare_angle_3(const R& rep) return false; if ( CGAL::compare(abs(theta1), abs(theta2)) != compare_angle(a, b, c, FT(std::cos(angle2))) ) return false; + + Point_3 d((int)(std::cos(angle2)*1000), (int)(std::sin(angle2)*1000), 0); + if ( CGAL::compare(abs(theta1), abs(theta2)) != CGAL::compare_angle(a, b, c, a, b, d ) ) + return false; + if ( CGAL::compare(abs(theta1), abs(theta2)) != compare_angle(a, b, c, a, b, d ) ) + return false; + + Vector_3 u1(b, a), v1(b, c), v2(b, d); + if ( CGAL::compare(abs(theta1), abs(theta2)) != CGAL::compare_angle(u1, v1, u1, v2) ) + return false; + if ( CGAL::compare(abs(theta1), abs(theta2)) != compare_angle(u1, v1, u1, v2) ) + return false; } // end loop on theta2 } // end loop and theta1 return true; diff --git a/Kernel_d/test/Kernel_d/CMakeLists.txt b/Kernel_d/test/Kernel_d/CMakeLists.txt index da63267597c..6798d13a087 100644 --- a/Kernel_d/test/Kernel_d/CMakeLists.txt +++ b/Kernel_d/test/Kernel_d/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Kernel_d_Tests) find_package(CGAL REQUIRED) diff --git a/Kinetic_space_partition/doc/Kinetic_space_partition/Doxyfile.in b/Kinetic_space_partition/doc/Kinetic_space_partition/Doxyfile.in index 96fddd29413..89e41efc75c 100644 --- a/Kinetic_space_partition/doc/Kinetic_space_partition/Doxyfile.in +++ b/Kinetic_space_partition/doc/Kinetic_space_partition/Doxyfile.in @@ -4,4 +4,3 @@ PROJECT_NAME = "CGAL ${CGAL_DOC_VERSION} - Kinetic Space Partition" EXTRACT_ALL = NO HIDE_UNDOC_CLASSES = YES WARN_IF_UNDOCUMENTED = NO -PREDEFINED += DOXYGEN_RUNNING diff --git a/Kinetic_space_partition/doc/Kinetic_space_partition/PackageDescription.txt b/Kinetic_space_partition/doc/Kinetic_space_partition/PackageDescription.txt index 24fc0f33b6e..c0e9c21b476 100644 --- a/Kinetic_space_partition/doc/Kinetic_space_partition/PackageDescription.txt +++ b/Kinetic_space_partition/doc/Kinetic_space_partition/PackageDescription.txt @@ -17,7 +17,7 @@ \cgalPkgShortInfoBegin \cgalPkgSince{6.0} \cgalPkgDependsOn{\ref PkgSurfaceMesh, \ref PkgLinearCellComplex} -\cgalPkgBib{cgal:ol-kinetic} +\cgalPkgBib{cgal:ol-kinetic-partition} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgShortInfoEnd diff --git a/Kinetic_space_partition/examples/Kinetic_space_partition/CMakeLists.txt b/Kinetic_space_partition/examples/Kinetic_space_partition/CMakeLists.txt index 2e3f55c04c6..344a8029ca7 100644 --- a/Kinetic_space_partition/examples/Kinetic_space_partition/CMakeLists.txt +++ b/Kinetic_space_partition/examples/Kinetic_space_partition/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists. # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Kinetic_space_partition_Examples) diff --git a/Kinetic_space_partition/examples/Kinetic_space_partition/include/Terminal_parser.h b/Kinetic_space_partition/examples/Kinetic_space_partition/include/Terminal_parser.h index f009abf03e1..2011d650871 100644 --- a/Kinetic_space_partition/examples/Kinetic_space_partition/include/Terminal_parser.h +++ b/Kinetic_space_partition/examples/Kinetic_space_partition/include/Terminal_parser.h @@ -149,7 +149,7 @@ namespace KSR { std::cout << "parameter name: -silent" << std::endl << - "description: supress any intermediate output except for the final result" << std::endl << std::endl; + "description: suppress any intermediate output except for the final result" << std::endl << std::endl; std::cout << "parameter name: -params" << std::endl << diff --git a/Kinetic_space_partition/package_info/Kinetic_space_partition/description.txt b/Kinetic_space_partition/package_info/Kinetic_space_partition/description.txt index f1a7576f3cb..2c329ae32c8 100644 --- a/Kinetic_space_partition/package_info/Kinetic_space_partition/description.txt +++ b/Kinetic_space_partition/package_info/Kinetic_space_partition/description.txt @@ -1,4 +1,4 @@ Kinetic Shape Partition This CGAL package provides a way to partition 2D or 3D space by propagating -2D segments or 3D polygons until they interesect the predefined number of times. +2D segments or 3D polygons until they intersect the predefined number of times. diff --git a/Kinetic_space_partition/package_info/Kinetic_space_partition/long_description.txt b/Kinetic_space_partition/package_info/Kinetic_space_partition/long_description.txt index 520f26605bf..d17b005140f 100644 --- a/Kinetic_space_partition/package_info/Kinetic_space_partition/long_description.txt +++ b/Kinetic_space_partition/package_info/Kinetic_space_partition/long_description.txt @@ -2,5 +2,5 @@ Kinetic Shape Partition This CGAL package provides a way to partition 2D or 3D space by propagating 2D segments or 3D polygons until they intersect the predefined number of times. -Once the partion is found, a 3D shape can be reconstructed by utilizing a graph cut approach. +Once the partition is found, a 3D shape can be reconstructed by utilizing a graph cut approach. The final result is a piece-wise linear approximation of the given smooth shape. diff --git a/Kinetic_space_partition/test/Kinetic_space_partition/CMakeLists.txt b/Kinetic_space_partition/test/Kinetic_space_partition/CMakeLists.txt index b09377a4fa7..39ac1e88597 100644 --- a/Kinetic_space_partition/test/Kinetic_space_partition/CMakeLists.txt +++ b/Kinetic_space_partition/test/Kinetic_space_partition/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists. # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Kinetic_space_partition_Tests) diff --git a/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/Doxyfile.in b/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/Doxyfile.in index 9917bea6e2a..542b2a7688d 100644 --- a/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/Doxyfile.in +++ b/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/Doxyfile.in @@ -3,7 +3,6 @@ PROJECT_NAME = "CGAL ${CGAL_DOC_VERSION} - Kinetic Surface Reconstruction" EXTRACT_ALL = YES WARN_IF_UNDOCUMENTED = NO -PREDEFINED += DOXYGEN_RUNNING INPUT += \ ${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Kinetic_surface_reconstruction_3.h \ \ No newline at end of file diff --git a/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/Kinetic_surface_reconstruction.txt b/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/Kinetic_surface_reconstruction.txt index 09d7c3dc488..08cb4000e2f 100644 --- a/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/Kinetic_surface_reconstruction.txt +++ b/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/Kinetic_surface_reconstruction.txt @@ -36,7 +36,7 @@ The reconstruction is posed as an energy minimization labeling the convex volume -The labels \f$l \in {\{0, 1\}}^n\f$ denote the label for the \f$n\f$ volumes of the kinetic space partition. The data term measures the coherence of the labeled volumes with the orientation of normals of the input points. The prefered label for a volume is determined by a voting of the input points and their associated normals. +The labels \f$l \in {\{0, 1\}}^n\f$ denote the label for the \f$n\f$ volumes of the kinetic space partition. The data term measures the coherence of the labeled volumes with the orientation of normals of the input points. The preferred label for a volume is determined by a voting of the input points and their associated normals. For each volume \f$i \in C\f$ the inliers from the shape detection associated with the faces of the volume \f$I_i\f$ either vote inside or outside for the volume. The vote is inside \f$d_i(p, inside) = 1\f$ and \f$d_i(p, outside = 0)\f$ if the normal associated to the point is directed to the outwards of the volume or outside \f$d_i(p, inside) = 0\f$ and \f$d_i(p, outside = 1)\f$ if the normal is oriented inwards. The regularization term is penalizing the total surface area of the surface and thus favoring less complex surfaces. To put the data term and regularization term into balance, area of each face is normalized by the total area of all faces \f$A\f$ and scaled by twice the total number of inliners \f$I\f$ from the shape detection as each inlier counts as one *inside* and one *outside* vote. @@ -62,7 +62,7 @@ The reconstruction adds two new parameters: The min-cut formulation embeds a vertex into each volume and connects all vertices if the corresponding volumes share a common face. While each face inside the kinetic space partition is exactly between two volumes, faces on the boundary do not. Thus, 6 external vertices are inserted into the graph representing a volume on each side of the bounding box. The parameter *external_nodes* allows the user to either provide a fixed label *inside* or *outside* for each node or leave the label up to the energy minimization. Typical choices for this parameter are to choose all external nodes as outside for scanned objects, e.g., as in \cgalFigureRef{Ksr_pipelinefig}, or the *ZMIN* node *inside* and all other nodes *outside* as for exterior scans of buildings, e.g., as in \cgalFigureRef{Ksr_parametersfig}. The default value for this parameter is to leave the labels of the external nodes up to the energy minimization. The alternative method `reconstruct_with_ground` estimates a ground plane within the detected shapes and sets up all faces on the bounding box below that ground plane to be connected to an external node set as *inside* while all other faces on the outside are connected to external nodes set to *outside*. It assumes the z-axis to be the upward pointing vertical direction. - *lambda*: -The *lambda* parameter trades the data faithfulness of the energy minimization for low complexity. The parameter has to be choosen in the range of \f$[0,1)\f$. \f$0\f$ indicates maximal data faithfulness, while the default value of \f$0.5\f$ gives an equal weight to data faithfulness and low complexity. The value should be choosen according to the quality of the input data. If the point cloud is accurate, low in noise and complete a low value can be chosen. +The *lambda* parameter trades the data faithfulness of the energy minimization for low complexity. The parameter has to be chosen in the range of \f$[0,1)\f$. \f$0\f$ indicates maximal data faithfulness, while the default value of \f$0.5\f$ gives an equal weight to data faithfulness and low complexity. The value should be chosen according to the quality of the input data. If the point cloud is accurate, low in noise and complete a low value can be chosen. \section ksrParameterChoice Choice of Parameters The kinetic space partition determines all possible reconstructions as the energy formulation only decides about the labels for the volumes, but cannot change the volumes themselves. Thus, the first stages of the pipeline, \ref PkgShapeDetection "Shape Detection" and \ref PkgShapeRegularization "Shape Regularization", have a large impact on the final reconstruction. In the simple case of a cube, one missing side would depending on the chosen *lambda* parameter either make the cube expand on that side towards the bounding box or make the full cube disappear. A proper parameterization of the \ref PkgShapeDetection "Shape Detection" to detect all relevant shapes may have a large impact. The *debug* parameter allows to export intermediate results for inspection. This is especially helpful for larger scenes, where the time for the whole reconstruction requires more computational effort. diff --git a/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/PackageDescription.txt b/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/PackageDescription.txt index 7c43c893a54..02fae11525d 100644 --- a/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/PackageDescription.txt +++ b/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/PackageDescription.txt @@ -14,7 +14,7 @@ \cgalPkgShortInfoBegin \cgalPkgSince{6.0} \cgalPkgDependsOn{\ref PkgKineticSpacePartition, \ref PkgSurfaceMesh, \ref PkgLinearCellComplex, \ref PkgShapeDetection} -\cgalPkgBib{cgal:ol-kinetic} +\cgalPkgBib{cgal:ol-kinetic-reconstruction} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgShortInfoEnd diff --git a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/CMakeLists.txt b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/CMakeLists.txt index 0b4739aed72..90a1acd129e 100644 --- a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/CMakeLists.txt +++ b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists. # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Kinetic_surface_reconstruction_Examples) diff --git a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/include/Terminal_parser.h b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/include/Terminal_parser.h index f2f618e3227..248abe895c0 100644 --- a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/include/Terminal_parser.h +++ b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/include/Terminal_parser.h @@ -149,7 +149,7 @@ namespace KSR { std::cout << "parameter name: -silent" << std::endl << - "description: supress any intermediate output except for the final result" << std::endl << std::endl; + "description: suppress any intermediate output except for the final result" << std::endl << std::endl; std::cout << "parameter name: -params" << std::endl << diff --git a/Kinetic_surface_reconstruction/test/Kinetic_surface_reconstruction/CMakeLists.txt b/Kinetic_surface_reconstruction/test/Kinetic_surface_reconstruction/CMakeLists.txt index b862e3e97e3..ada01e60017 100644 --- a/Kinetic_surface_reconstruction/test/Kinetic_surface_reconstruction/CMakeLists.txt +++ b/Kinetic_surface_reconstruction/test/Kinetic_surface_reconstruction/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists. # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Kinetic_surface_reconstruction_Tests) diff --git a/Lab/demo/Lab/CMakeLists.txt b/Lab/demo/Lab/CMakeLists.txt index 53dc1409c89..eb2a5dc56b6 100644 --- a/Lab/demo/Lab/CMakeLists.txt +++ b/Lab/demo/Lab/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.11...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Lab_Demo) include(FeatureSummary) diff --git a/Lab/demo/Lab/Plugins/Alpha_wrap_3/Alpha_wrap_3_plugin.cpp b/Lab/demo/Lab/Plugins/Alpha_wrap_3/Alpha_wrap_3_plugin.cpp index 0ab0d872c88..3374d7fe619 100644 --- a/Lab/demo/Lab/Plugins/Alpha_wrap_3/Alpha_wrap_3_plugin.cpp +++ b/Lab/demo/Lab/Plugins/Alpha_wrap_3/Alpha_wrap_3_plugin.cpp @@ -53,7 +53,7 @@ using Wrapper = CGAL::Alpha_wraps_3::internal::Alpha_wrapper_3; // - The visitor has a shared pointer to an emiter (can't emit directly from the visitor) // - The visitor has shared pointers to a polygon soup (+ colors), which it updates itself // before emitting a signal -// - There is a pause in the emition because it needs to wait for the main thread to draw the +// - There is a pause in the starting of the thread because it needs to wait for the main thread to draw the // polygon soup before the visitor updates the polygon soup. struct Iterative_update_emiter diff --git a/Lab/demo/Lab/Plugins/Classification/Classification_plugin.cpp b/Lab/demo/Lab/Plugins/Classification/Classification_plugin.cpp index d75cf0e3f73..bb02daf1655 100644 --- a/Lab/demo/Lab/Plugins/Classification/Classification_plugin.cpp +++ b/Lab/demo/Lab/Plugins/Classification/Classification_plugin.cpp @@ -643,7 +643,7 @@ public Q_SLOTS: QString filename; int classifier = get_classifier(); - if (classifier == CGAL_CLASSIFICATION_SOWF_NUMBER) // Sum of Weighted Featuers + if (classifier == CGAL_CLASSIFICATION_SOWF_NUMBER) // Sum of Weighted Features filename = QFileDialog::getSaveFileName(mw, tr("Save classification configuration"), tr("%1 (CGAL classif config).xml").arg(classif->item()->name()), @@ -690,7 +690,7 @@ public Q_SLOTS: QString filename; int classifier = get_classifier(); - if (classifier == CGAL_CLASSIFICATION_SOWF_NUMBER) // Sum of Weighted Featuers + if (classifier == CGAL_CLASSIFICATION_SOWF_NUMBER) // Sum of Weighted Features filename = QFileDialog::getOpenFileName(mw, tr("Open CGAL classification configuration"), ".", @@ -1321,7 +1321,7 @@ public Q_SLOTS: QMultipleInputDialog dialog ("Train Classifier", mw); int classifier = get_classifier(); - if (classifier == CGAL_CLASSIFICATION_SOWF_NUMBER) // Sum of Weighted Featuers + if (classifier == CGAL_CLASSIFICATION_SOWF_NUMBER) // Sum of Weighted Features { QSpinBox* trials = dialog.add ("Number of trials: ", "trials"); trials->setRange (1, 99999); diff --git a/Lab/demo/Lab/Plugins/Convex_hull/Kernel_plugin.cpp b/Lab/demo/Lab/Plugins/Convex_hull/Kernel_plugin.cpp index a5aaf34054a..bf4291ae35e 100644 --- a/Lab/demo/Lab/Plugins/Convex_hull/Kernel_plugin.cpp +++ b/Lab/demo/Lab/Plugins/Convex_hull/Kernel_plugin.cpp @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -95,6 +94,7 @@ void CGAL_Lab_kernel_plugin::on_actionKernel_triggered() // get inside point Point inside_point = kernel.inside_point(); + Vector translate = inside_point - CGAL::ORIGIN; // compute dual of translated polyhedron w.r.t. inside point. @@ -132,9 +132,6 @@ void CGAL_Lab_kernel_plugin::on_actionKernel_triggered() typedef CGAL::Dual Dual; typedef boost::graph_traits::vertex_descriptor dual_vertex_descriptor; - std::ofstream out("primal.off"); - out << convex_hull << std::endl; - out.close(); Dual dual(convex_hull); std::map vpm; diff --git a/Lab/demo/Lab/Plugins/Mesh_3/Volume_plane.h b/Lab/demo/Lab/Plugins/Mesh_3/Volume_plane.h index 6dbe84a28e8..a5399210b43 100644 --- a/Lab/demo/Lab/Plugins/Mesh_3/Volume_plane.h +++ b/Lab/demo/Lab/Plugins/Mesh_3/Volume_plane.h @@ -279,7 +279,7 @@ private: QString name(z_tag) const { return tr("Z Slice for %2").arg(name_); } //according to the tag, a,b,c dim change but not the scale. We look for the max dimension of the whole image. - //A high scale factor will often go with a low dimesion, to compensate it. So we don't want a max being the + //A high scale factor will often go with a low dimension, to compensate it. So we don't want a max being the //higher scale * the higher dim, hence the tag specialisation. //TODO: set the scale factors according to the dimensipon to avoid doing that. double compute_maxDim(x_tag) const diff --git a/Lab/demo/Lab/Plugins/PCA/Basic_generator_plugin.cpp b/Lab/demo/Lab/Plugins/PCA/Basic_generator_plugin.cpp index 3c4af7ce421..15883fa976a 100644 --- a/Lab/demo/Lab/Plugins/PCA/Basic_generator_plugin.cpp +++ b/Lab/demo/Lab/Plugins/PCA/Basic_generator_plugin.cpp @@ -732,92 +732,130 @@ void Basic_generator_plugin::generateLines() { QString text = dock_widget->line_textEdit->toPlainText(); std::list > polylines; - polylines.resize(polylines.size()+1); - std::vector& polyline = *(polylines.rbegin()); - QStringList polylines_metadata; - QStringList list = text.split(QRegularExpression("\\s+"), CGAL_QT_SKIP_EMPTY_PARTS); - int counter = 0; - double coord[3]; + auto read_polyline = [&polylines](const QStringList& list, bool is_2d, bool is_closed) + { + int counter = -1; + double coord[3]; + bool ok = true; + + if(!is_2d && list.size()%3!=0){ + QMessageBox *msgBox = new QMessageBox; + msgBox->setWindowTitle("Error"); + msgBox->setText("ERROR : Input should consists of triplets."); + msgBox->exec(); + return false; + } + else if(is_2d && list.size()%2!=0){ + QMessageBox *msgBox = new QMessageBox; + msgBox->setWindowTitle("Error"); + msgBox->setText("ERROR : Input should consists of pairs."); + msgBox->exec(); + return false; + } + + polylines.back().reserve(list.size()+(is_closed?1:0)); + + for(QString s : list) + { + if(!s.isEmpty()) + { + double res = s.toDouble(&ok); + if(!ok) + { + QMessageBox *msgBox = new QMessageBox; + msgBox->setWindowTitle("Error"); + msgBox->setText("ERROR : Coordinates are invalid."); + msgBox->exec(); + return false; + } + else + { + coord[++counter] = res; + } + } + if(!is_2d && counter == 2) + { + Scene_polylines_item::Point_3 p(coord[0], coord[1], coord[2]); + polylines.back().push_back(p); + counter=-1; + } + else if(is_2d && counter == 1) + { + Scene_polylines_item::Point_3 p(coord[0], coord[1], 0); + polylines.back().push_back(p); + counter=-1; + } + } + if(is_closed) + { + if (polylines.back().back()!=polylines.back().front()) + polylines.back().push_back(polylines.back().front()); //close if not already closed + } + + return true; + }; + + const bool is_2d = dock_widget->dim2_checkBox->isChecked(); + const bool is_closed = dock_widget->polygon_checkBox->isChecked(); + const bool shall_fill = is_closed && dock_widget->fill_checkBox->isChecked(); + const bool oneperline = dock_widget->oneperline_checkBox->isChecked(); + bool ok = true; - if (list.isEmpty()) return; - if(!dock_widget->polygon_checkBox->isChecked() && list.size()%3!=0){ - QMessageBox *msgBox = new QMessageBox; - msgBox->setWindowTitle("Error"); - msgBox->setText("ERROR : Input should consists of triplets."); - msgBox->exec(); - return; - } - else if(dock_widget->polygon_checkBox->isChecked()&& list.size()%2!=0){ - QMessageBox *msgBox = new QMessageBox; - msgBox->setWindowTitle("Error"); - msgBox->setText("ERROR : Input should consists of pairs."); - msgBox->exec(); - return; - } - for(QString s : list) + if (oneperline) { - if(!s.isEmpty()) + QStringList poly_list = text.split(QRegularExpression("\\n"), CGAL_QT_SKIP_EMPTY_PARTS); + if (poly_list.empty()) return; + + for(const QString& qs : poly_list) { - double res = s.toDouble(&ok); - if(!ok) - { - QMessageBox *msgBox = new QMessageBox; - msgBox->setWindowTitle("Error"); - msgBox->setText("ERROR : Coordinates are invalid."); - msgBox->exec(); - break; - } - else - { - coord[counter] = res; - counter++; - } - } - if(!dock_widget->polygon_checkBox->isChecked() && counter == 3) - { - Scene_polylines_item::Point_3 p(coord[0], coord[1], coord[2]); - polyline.push_back(p); - counter =0; - } - else if(dock_widget->polygon_checkBox->isChecked() && counter == 2) - { - Scene_polylines_item::Point_3 p(coord[0], coord[1], 0); - polyline.push_back(p); - counter = 0; + QStringList list = qs.split(QRegularExpression("\\s+"), CGAL_QT_SKIP_EMPTY_PARTS); + if (list.isEmpty()) continue; + polylines.emplace_back(); + ok = read_polyline(list, is_2d, is_closed); + if (!ok) return; } } - if(dock_widget->polygon_checkBox->isChecked()) + else { - polyline.push_back(polyline.front()); //polygon_2 are not closed. + QStringList list = text.split(QRegularExpression("\\s+"), CGAL_QT_SKIP_EMPTY_PARTS); + if (list.isEmpty()) return; + polylines.emplace_back(); + ok = read_polyline(list, is_2d, is_closed); + if (!ok) return; } + if(ok) { dock_widget->line_textEdit->clear(); - if(dock_widget->fill_checkBox->isChecked()) + if(shall_fill) { CGAL::Three::Three::CursorScopeGuard guard(Qt::WaitCursor); QApplication::processEvents(); - if(polyline.front() != polyline.back()) { - polyline.push_back(polyline.front()); - } - if(polyline.size() < 4) { // no triangle, skip it (needs at least 3 + 1 repeat) - QMessageBox::warning(mw, "Warning", "Needs at least 3 points to triangulate. Aborting."); - return; - } - std::vector patch; - CGAL::Polygon_mesh_processing::triangulate_hole_polyline(polyline, - std::back_inserter(patch), - CGAL::parameters::use_delaunay_triangulation(true)); - if(patch.empty()) { - QMessageBox::warning(mw, "Warning", "Triangulation failed."); - return; - } SMesh* poly = new SMesh; - CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh(polyline, - patch, - *poly); + for (const auto& polyline : polylines) + { + if(polyline.size() < 4) { // no triangle, skip it (needs at least 3 + 1 repeat) + QMessageBox::warning(mw, "Warning", "Needs at least 3 points to triangulate. Aborting."); + delete poly; + return; + } + + std::vector patch; + CGAL::Polygon_mesh_processing::triangulate_hole_polyline(polyline, + std::back_inserter(patch), + CGAL::parameters::use_delaunay_triangulation(true)); + + if(patch.empty()) { + QMessageBox::warning(mw, "Warning", "Triangulation failed."); + return; + } + + CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh(polyline, + patch, + *poly); + } Scene_surface_mesh_item* poly_item = new Scene_surface_mesh_item(poly); poly_item->setName(dock_widget->name_lineEdit->text()); @@ -831,6 +869,7 @@ void Basic_generator_plugin::generateLines() item->invalidateOpenGLBuffers(); item->setName(dock_widget->name_lineEdit->text()); item->setColor(Qt::black); + QStringList polylines_metadata; item->setProperty("polylines metadata", polylines_metadata); Scene_interface::Item_id id = scene->addItem(item); scene->setSelectedItem(id); diff --git a/Lab/demo/Lab/Plugins/PCA/Basic_generator_widget.ui b/Lab/demo/Lab/Plugins/PCA/Basic_generator_widget.ui index da9b85da186..eed6885a04c 100644 --- a/Lab/demo/Lab/Plugins/PCA/Basic_generator_widget.ui +++ b/Lab/demo/Lab/Plugins/PCA/Basic_generator_widget.ui @@ -1101,20 +1101,37 @@ li.checked::marker { content: "\2612"; } + + + + 2D + + + - From Polygon_2 + Polygon(s) + + false + Triangulate + + + + One Per Line + + + @@ -1222,5 +1239,22 @@ li.checked::marker { content: "\2612"; } - + + + polygon_checkBox + stateChanged(int) + fill_checkBox + setEnabled(bool) + + + 190 + 83 + + + 534 + 83 + + + + diff --git a/Lab/demo/Lab/Plugins/PCA/Scene_aff_transformed_point_set_item.cpp b/Lab/demo/Lab/Plugins/PCA/Scene_aff_transformed_point_set_item.cpp index ebf07545f44..a103c56fd52 100644 --- a/Lab/demo/Lab/Plugins/PCA/Scene_aff_transformed_point_set_item.cpp +++ b/Lab/demo/Lab/Plugins/PCA/Scene_aff_transformed_point_set_item.cpp @@ -8,7 +8,7 @@ using namespace CGAL::Three; -// const std::size_t limit_fast_drawing = 300000; //arbitraty large value +// const std::size_t limit_fast_drawing = 300000; //arbitrary large value Scene_aff_transformed_point_set_item:: Scene_aff_transformed_point_set_item(Scene_points_with_normal_item* pts_item, diff --git a/Lab/demo/Lab/Plugins/PCA/Scene_edit_box_item.cpp b/Lab/demo/Lab/Plugins/PCA/Scene_edit_box_item.cpp index af7ae5a3145..d05f67c9a41 100644 --- a/Lab/demo/Lab/Plugins/PCA/Scene_edit_box_item.cpp +++ b/Lab/demo/Lab/Plugins/PCA/Scene_edit_box_item.cpp @@ -322,7 +322,7 @@ QString Scene_edit_box_item::toolTip() const { QMenu* Scene_edit_box_item::contextMenu() { - // diasable "Alpha slider" in menu + // disable "Alpha slider" in menu QMenu* resMenu = Scene_item::contextMenu(); bool prop = property("menu_changed").toBool(); if(!prop) diff --git a/Lab/demo/Lab/Plugins/PMP/Selection_plugin.cpp b/Lab/demo/Lab/Plugins/PMP/Selection_plugin.cpp index f9ce55fd6f7..eaf633c7cf5 100644 --- a/Lab/demo/Lab/Plugins/PMP/Selection_plugin.cpp +++ b/Lab/demo/Lab/Plugins/PMP/Selection_plugin.cpp @@ -211,8 +211,13 @@ public: connect(ui_widget.selectionOrEuler, SIGNAL(currentChanged(int)), this, SLOT(on_SelectionOrEuler_changed(int))); connect(ui_widget.editionBox, SIGNAL(currentIndexChanged(int)), this, SLOT(on_editionBox_changed(int))); + ui_widget.Sharp_edges_label->hide(); + ui_widget.Sharp_angle_spinbox->hide(); + ui_widget.Select_sharp_edges_button->hide(); + ui_widget.Select_boundaryButton->hide(); ui_widget.Add_to_selection_button->hide(); ui_widget.Select_all_NTButton->hide(); + QObject* scene = dynamic_cast(scene_interface); if(scene) { connect(scene, SIGNAL(itemAboutToBeDestroyed(CGAL::Three::Scene_item*)), this, SLOT(item_about_to_be_destroyed(CGAL::Three::Scene_item*))); @@ -227,11 +232,12 @@ public: "Create Facegraph from Selected Facets" , "Erase Selected Facets" , "Keep Connected Components of Selected Facets" , - "Expand Face Selection to Stay Manifold After Removal" , - "Convert from Edge Selection to Facets Selection" , - "Convert from Edge Selection to Point Selection" , - "Convert from Facet Selection to Boundary Edge Selection", - "Convert from Facet Selection to Point Selection" + "Expand Face Selection to Remain Manifold After Removal" , + "Select Edges Incident to Selected Facets" , + "Select Vertices Incident to Selected Edges" , + "Select Edges on the Boundary of Regions of Selected Facets", + "Select Vertices of Selected Facets", + "Add Triangle Face from Selected Vertices" }; operations_map[operations_strings[0]] = 0; @@ -244,6 +250,7 @@ public: operations_map[operations_strings[7]] = 7; operations_map[operations_strings[8]] = 8; operations_map[operations_strings[9]] = 9; + operations_map[operations_strings[10]] = 10; } virtual void closure() override { @@ -544,6 +551,9 @@ public Q_SLOTS: for(Selection_item_map::iterator it = selection_item_map.begin(); it != selection_item_map.end(); ++it) { it->second->set_lasso_mode(b); + ui_widget.Brush_label->setEnabled(!b); + ui_widget.Brush_size_spin_box->setEnabled(!b); + ui_widget.Brush_size_spin_box->setValue(0); } } void on_Selection_type_combo_box_changed(int index) { @@ -551,48 +561,72 @@ public Q_SLOTS: for(Selection_item_map::iterator it = selection_item_map.begin(); it != selection_item_map.end(); ++it) { it->second->set_active_handle_type(static_cast(index)); Q_EMIT save_handleType(); + + it->second->setPathSelection(false); + + ui_widget.Sharp_edges_label->hide(); + ui_widget.Sharp_angle_spinbox->hide(); + ui_widget.Select_sharp_edges_button->hide(); + ui_widget.Select_boundaryButton->hide(); + ui_widget.Add_to_selection_button->hide(); + ui_widget.Select_all_NTButton->hide(); + + ui_widget.Get_minimum_button->setEnabled(false); + ui_widget.Select_isolated_components_button->setEnabled(false); + switch(index) { - case 0: - case 1: - case 2: + case 0: // vertex + case 1: // face + case 2: // edge ui_widget.lassoCheckBox->show(); + ui_widget.Brush_label->show(); + ui_widget.Brush_size_spin_box->show(); + + ui_widget.Get_minimum_button->setEnabled(true); + ui_widget.Select_isolated_components_button->setEnabled(true); break; + case 3: // CC of faces + case 4: // Path of edges default: ui_widget.lassoCheckBox->hide(); ui_widget.lassoCheckBox->setChecked(false); it->second->set_lasso_mode(false); + ui_widget.Brush_label->hide(); + ui_widget.Brush_size_spin_box->hide(); + ui_widget.Brush_size_spin_box->setValue(0); break; } - if(index == 1) + + if(index == 0) // vertex + { + Q_EMIT set_operation_mode(-1); + } + else if(index == 1) // face { ui_widget.Select_all_NTButton->show(); - ui_widget.Add_to_selection_button->hide(); - ui_widget.Select_boundaryButton->hide(); Q_EMIT set_operation_mode(-1); } - else if(index == 2) + else if(index == 2) // edge { - ui_widget.Select_all_NTButton->hide(); - ui_widget.Add_to_selection_button->hide(); ui_widget.Select_boundaryButton->show(); + ui_widget.Sharp_angle_spinbox->show(); + ui_widget.Select_sharp_edges_button->show(); Q_EMIT set_operation_mode(-1); } - else if(index == 4) + else if(index == 3) // CC of faces + { + Q_EMIT set_operation_mode(-1); + } + else if(index == 4) // Path of edges { it->second->setPathSelection(true); - ui_widget.Select_all_NTButton->hide(); ui_widget.Add_to_selection_button->show(); - ui_widget.Select_boundaryButton->show(); Q_EMIT set_operation_mode(-2); } else { - ui_widget.Add_to_selection_button->hide(); - ui_widget.Select_all_NTButton->hide(); - ui_widget.Select_boundaryButton->hide(); - it->second->setPathSelection(false); - Q_EMIT set_operation_mode(-1); + std::cerr << "Error: unknown selection type" << std::endl; } } filter_operations(); @@ -872,6 +906,20 @@ public Q_SLOTS: selection_item->itemChanged(); break; } + //Add Triangle Face to FaceGraph + case 10: + { + Scene_polyhedron_selection_item* selection_item = getSelectedItem(); + if(!selection_item) { + print_message("Error: there is no selected polyhedron selection item!"); + return; + } + if(selection_item->selected_vertices.size() != 3) { + print_message("Error: there is not exactly 3 vertices selected!"); + return; + } + selection_item->add_facet_from_selected_vertices(); + } default : break; } @@ -1141,6 +1189,8 @@ void filter_operations() if(has_v) { ui_widget.operationsBox->addItem(operations_strings[0]); + if(selection_item->selected_vertices.size() == 3) + ui_widget.operationsBox->addItem(operations_strings[10]); } if(has_e) { diff --git a/Lab/demo/Lab/Plugins/PMP/Selection_widget.ui b/Lab/demo/Lab/Plugins/PMP/Selection_widget.ui index f7d5f7e6302..d7b76c83d06 100644 --- a/Lab/demo/Lab/Plugins/PMP/Selection_widget.ui +++ b/Lab/demo/Lab/Plugins/PMP/Selection_widget.ui @@ -6,8 +6,8 @@ 0 0 - 613 - 409 + 630 + 532 @@ -21,7 +21,6 @@ - 75 true @@ -30,20 +29,20 @@ - - - - - - - Clear Selection - - - + + + + Show selector + + + true + + + @@ -57,16 +56,6 @@ - - - - Highlight - - - true - - - @@ -79,6 +68,46 @@ Selection + + + + + + Selection Type : + + + + + + + + Vertex + + + + + Facet + + + + + Edge + + + + + Facet Connected Component + + + + + Edge Path Between Vertices + + + + + + @@ -92,42 +121,55 @@ - + - - - Selection Type : - - + + + + + Insertion + + + true + + + + + + + Removal + + + + - + - - Vertex - + + + Lasso + + + + + + + + + + + Brush &size: + + + Brush_size_spin_box + + - - Facet - + - - - Edge - - - - - Connected Component (Facet) - - - - - Path Between Vertices - - - + @@ -145,36 +187,9 @@ - - - - - Lasso - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - + - - - - Select All Non Triangle - - - @@ -182,21 +197,78 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Sharp edges angle: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + 180 + + + 60 + + + + + + + Select + + + + + + + + + + 0 + 0 + + + + Add Path to Selection + + + + + + + Select All Non Triangle Facets + + + - - - - - 0 - 0 - - - - Add to Selection - - - @@ -212,40 +284,6 @@ - - - - - - Insertion - - - true - - - - - - - Removal - - - - - - - Brush &size: - - - Brush_size_spin_box - - - - - - - - @@ -253,55 +291,6 @@ Components - - - - - - - 0 - 0 - - - - Threshold: - - - Threshold_size_spin_box - - - - - - - - 0 - 0 - - - - 999999999 - - - 8 - - - - - - - - 0 - 0 - - - - &Get Minimum - - - - - @@ -316,11 +305,64 @@ - - - Select &Isolated Components Below Threshold - - + + + + + + + + 0 + 0 + + + + Threshold: + + + Threshold_size_spin_box + + + + + + + + 0 + 0 + + + + 999999999 + + + 8 + + + + + + + + + + 0 + 0 + + + + Set Threshold to Simplex Count of Smallest CC + + + + + + + Select CCs With Simplex Count Below Threshold + + + + @@ -335,43 +377,6 @@ - - - - - - Sharp edges angle: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - 180 - - - 60 - - - - - - - Select - - - - - @@ -432,12 +437,12 @@ - + - + - &Clear Current Type + Select &All Current Type @@ -452,12 +457,22 @@ - + - + - Select &All + &Clear Current Type + + + + + + + + + + Clear All @@ -638,7 +653,7 @@ - Instructions + Instructions diff --git a/Lab/demo/Lab/Plugins/Point_set/Surface_reconstruction_poisson_impl.cpp b/Lab/demo/Lab/Plugins/Point_set/Surface_reconstruction_poisson_impl.cpp index 11a8fe9a7b3..23b2b28d48d 100644 --- a/Lab/demo/Lab/Plugins/Point_set/Surface_reconstruction_poisson_impl.cpp +++ b/Lab/demo/Lab/Plugins/Point_set/Surface_reconstruction_poisson_impl.cpp @@ -7,19 +7,23 @@ #include // must be included before kernel #include #include -#include -#include -#include -#include -#include + #include #include +#include +#include +#include +#include +#include +#include + #include #include #include +#include #include "Kernel_type.h" #include "SMesh_type.h" @@ -179,10 +183,11 @@ SMesh* poisson_reconstruct(Point_set& points, // 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::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; @@ -273,7 +278,7 @@ SMesh* poisson_reconstruct(Point_set& points, else { //*************************************** - // Surface mesh generation + // Surface mesh generation using Mesh_3 //*************************************** std::cerr << "Surface meshing...\n"; @@ -301,45 +306,43 @@ SMesh* poisson_reconstruct(Point_set& points, // conservative bounding sphere centered at inner point. Kernel::FT sm_sphere_radius = 5.0 * radius; Kernel::FT sm_dichotomy_error = sm_distance*average_spacing/1000.0; // Dichotomy error must be << sm_distance - Surface_3 surface(function, - Kernel::Sphere_3(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); - CGAL_TRACE_STREAM << " make_surface_mesh(sphere center=("<(domain, criteria, + CGAL::parameters::no_exude().no_perturb() + .manifold_with_boundary()); // Prints status std::cerr << "Surface meshing: " << task_timer.time() << " seconds, " - << tr.number_of_vertices() << " output vertices" + << c3t3.triangulation().number_of_vertices() << " output vertices" << std::endl; task_timer.reset(); - if(tr.number_of_vertices() == 0) + if(c3t3.triangulation().number_of_vertices() == 0) { delete mesh; return nullptr; } // Converts to polyhedron - CGAL::facets_in_complex_2_to_triangle_mesh(c2t3, *mesh); + CGAL::facets_in_complex_3_to_triangle_mesh(c3t3, *mesh); // Prints total reconstruction duration std::cerr << "Total reconstruction (implicit function + meshing): " << reconstruction_timer.time() << " seconds\n"; diff --git a/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Deform_mesh.ui b/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Deform_mesh.ui index 2f7fdca658e..4f985764876 100644 --- a/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Deform_mesh.ui +++ b/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Deform_mesh.ui @@ -6,8 +6,8 @@ 0 0 - 547 - 347 + 561 + 294 @@ -135,45 +135,6 @@ - - - - - - - - Isolated Component Size: - - - - - - - 999999999 - - - 8 - - - - - - - Get Minimum - - - - - - - - - Select Isolated Components Below Threshold - - - - - diff --git a/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Edit_polyhedron_plugin.cpp b/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Edit_polyhedron_plugin.cpp index c83ba2b196d..1fb180c2526 100644 --- a/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Edit_polyhedron_plugin.cpp +++ b/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Edit_polyhedron_plugin.cpp @@ -62,8 +62,6 @@ public Q_SLOTS: void on_SaveROIPushButton_clicked(); void on_ReadROIPushButton_clicked(); void dock_widget_visibility_changed(bool visible); - void on_Select_isolated_components_button_clicked(); - void on_Get_minimum_button_clicked(); void on_BrushSpinBoxCtrlVert_changed(int); void on_BrushSpinBoxRoi_changed(int); @@ -150,8 +148,6 @@ void CGAL_Lab_edit_cgal_lab_plugin::init(QMainWindow* mainWindow, CGAL::Three::S connect(ui_widget.ActivateFixedPlaneCheckBox, SIGNAL(stateChanged(int)), this, SLOT(on_ActivateFixedPlaneCheckBox_stateChanged(int))); connect(ui_widget.ActivatePivotingCheckBox, SIGNAL(stateChanged(int)), this, SLOT(on_ActivatePivotingCheckBox_stateChanged(int))); connect(ui_widget.OverwritePushButton, SIGNAL(clicked()), this, SLOT(on_OverwritePushButton_clicked())); - connect(ui_widget.Select_isolated_components_button, SIGNAL(clicked()), this, SLOT(on_Select_isolated_components_button_clicked())); - connect(ui_widget.Get_minimum_button, SIGNAL(clicked()), this, SLOT(on_Get_minimum_button_clicked())); connect(ui_widget.SaveROIPushButton, SIGNAL(clicked()), this, SLOT(on_SaveROIPushButton_clicked())); connect(ui_widget.ReadROIPushButton, SIGNAL(clicked()), this, SLOT(on_ReadROIPushButton_clicked())); @@ -304,28 +300,6 @@ void CGAL_Lab_edit_cgal_lab_plugin::on_OverwritePushButton_clicked() edit_item->overwrite_deform_object(); } -void CGAL_Lab_edit_cgal_lab_plugin::on_Select_isolated_components_button_clicked() { - int item_id = scene->selectionIndices().front(); - Scene_edit_polyhedron_item* edit_item = qobject_cast(scene->item(item_id)); - if(!edit_item) return; // the selected item is not of the right type - - std::optional minimum = - edit_item->select_isolated_components(ui_widget.Threshold_size_spin_box->value()); - if(minimum) { - ui_widget.Threshold_size_spin_box->setValue((int) *minimum); - } -} - -void CGAL_Lab_edit_cgal_lab_plugin::on_Get_minimum_button_clicked() { - int item_id = scene->selectionIndices().front(); - Scene_edit_polyhedron_item* edit_item = qobject_cast(scene->item(item_id)); - if(!edit_item) return; // the selected item is not of the right type - - std::optional minimum = edit_item->get_minimum_isolated_component(); - if(minimum) { - ui_widget.Threshold_size_spin_box->setValue((int) *minimum); - } -} void CGAL_Lab_edit_cgal_lab_plugin::on_SaveROIPushButton_clicked() { diff --git a/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.cpp b/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.cpp index 86cd884ed14..786727bc145 100644 --- a/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.cpp +++ b/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.cpp @@ -1621,28 +1621,6 @@ void Scene_edit_polyhedron_item::reset_deform_object() refresh_all_group_centers(); } -std::optional Scene_edit_polyhedron_item::get_minimum_isolated_component() { - Travel_isolated_components::Minimum_visitor visitor; - Travel_isolated_components(*surface_mesh()).travel - (vertices(*surface_mesh()).first, vertices(*surface_mesh()).second, - num_vertices(*surface_mesh()), Is_selected(d->deform_sm_mesh), visitor); - return visitor.minimum; -} - - -std::optional Scene_edit_polyhedron_item::select_isolated_components(std::size_t threshold) { - typedef boost::function_output_iterator > Output_iterator; - Output_iterator out(d->deform_sm_mesh); - - Travel_isolated_components::Selection_visitor visitor(threshold, out); - Travel_isolated_components(*surface_mesh()).travel - (vertices(*surface_mesh()).first, vertices(*surface_mesh()).second, - num_vertices(*surface_mesh()), Is_selected(d->deform_sm_mesh), visitor); - - if(visitor.any_inserted) { invalidateOpenGLBuffers(); Q_EMIT itemChanged(); } - return visitor.minimum_visitor.minimum; -} - bool Scene_edit_polyhedron_item::is_there_any_ctrl_vertices_group() { if(d->sm_item) diff --git a/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.h b/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.h index cd185bd797d..4479cc63cc1 100644 --- a/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.h +++ b/Lab/demo/Lab/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.h @@ -379,7 +379,6 @@ public: } }; - std::optional get_minimum_isolated_component(); template struct Select_roi_output{ typedef typename CGAL::Surface_mesh_deformation tr(this); Travel_isolated_components::Minimum_visitor visitor; Travel_isolated_components(*polyhedron()).travel - (tr.iterator_begin(), tr.iterator_end(), tr.size(), tr.container(), visitor); + (tr.iterator_begin(), tr.iterator_end(), tr.size(), visitor); return visitor.minimum; } @@ -516,7 +516,8 @@ public: } } template // use fg_vertex_descriptor, fg_face_descriptor, fg_edge_descriptor - std::optional select_isolated_components(std::size_t threshold) { + std::optional select_isolated_components(std::size_t threshold) + { typedef Selection_traits Tr; Tr tr(this); typedef std::insert_iterator Output_iterator; @@ -524,7 +525,7 @@ public: Travel_isolated_components::Selection_visitor visitor(threshold , out); Travel_isolated_components(*polyhedron()).travel - (tr.iterator_begin(), tr.iterator_end(), tr.size(), tr.container(), visitor); + (tr.iterator_begin(), tr.iterator_end(), tr.size(), visitor); if(visitor.any_inserted) { invalidateOpenGLBuffers(); Q_EMIT itemChanged(); } return visitor.minimum_visitor.minimum; @@ -780,6 +781,66 @@ public: return num_vertices(*out) > 0; } + fg_face_descriptor add_facet_from_selected_vertices() + { + fg_face_descriptor null_face = boost::graph_traits::null_face(); + + if(selected_vertices.size() != 3) // NYI + return null_face; + + // since the selected vertices are a set, we lost order in the process, + // so find back the correct orientation + std::array vs; + for(std::size_t i=0; i<3; ++i) + vs[i] = *(std::next(selected_vertices.begin(), i)); + + int pos_counter = 0, neg_counter = 0; + for(std::size_t i=0; i<3; ++i) + { + auto res = halfedge(vs[i], vs[(i+1)%3], *polyhedron()); + if(res.second && !is_border(res.first, *polyhedron())) + { + // the halfedge 'vs[i] - vs[i+1]' already exists in the graph and is not border, + // so vote for orienting the facet the other way + ++neg_counter; + } + + res = halfedge(vs[(i+1)%3], vs[i], *polyhedron()); + if(res.second && !is_border(res.first, *polyhedron())) + { + // the halfedge 'vs[i+1] - vs[i]' already exists in the graph and is not border, + // so vote for keeping the current orientationorientation + ++pos_counter; + } + } + + if(pos_counter > 0 && neg_counter > 0) + { + // disagreement, can't insert the face (@todo duplicate and insert?) + std::cerr << "Failed to find a valid orientation (" << pos_counter << " VS " << neg_counter << ")!" << std::endl; + return null_face; + } + else if(neg_counter > 0) + { + std::swap(vs[0], vs[1]); + } + + fg_face_descriptor new_f = CGAL::Euler::add_face(vs, *polyhedron()); + const bool successful_insertion = (new_f != null_face); + if(successful_insertion) + { + selected_vertices.clear(); + invalidateOpenGLBuffers(); + changed_with_poly_item(); + } + else + { + std::cerr << "Failed to insert face!" << std::endl; + } + + return new_f; + } + void select_sharp_edges(const double angle) { CGAL::detect_sharp_edges(polyhedron(), angle); diff --git a/Lab/demo/Lab/Scene_surface_mesh_item.cpp b/Lab/demo/Lab/Scene_surface_mesh_item.cpp index 5c021784cd1..30e0d59ab83 100644 --- a/Lab/demo/Lab/Scene_surface_mesh_item.cpp +++ b/Lab/demo/Lab/Scene_surface_mesh_item.cpp @@ -626,11 +626,17 @@ void Scene_surface_mesh_item_priv::compute_elements(Scene_item_rendering_helper: } else if(is_convex) { - triangulate_convex_facet(fd, &fnormals, &fcolors.value(), nullptr, name, false); + if(has_fcolors) + triangulate_convex_facet(fd, &fnormals, &fcolors.value(), nullptr, name, false); + else + triangulate_convex_facet(fd, &fnormals, nullptr, nullptr, name, false); } else { - triangulate_facet(fd, &fnormals, &fcolors.value(), nullptr, name, false); + if(has_fcolors) + triangulate_facet(fd, &fnormals, &fcolors.value(), nullptr, name, false); + else + triangulate_facet(fd, &fnormals, nullptr, nullptr, name, false); } } } diff --git a/Lab/demo/Lab/Travel_isolated_components.h b/Lab/demo/Lab/Travel_isolated_components.h index c1e1124f6b2..3ca03d70e1e 100644 --- a/Lab/demo/Lab/Travel_isolated_components.h +++ b/Lab/demo/Lab/Travel_isolated_components.h @@ -110,11 +110,10 @@ public: } */ // NOTE: prior to call this function, id fields should be updated - template + template void travel(InputIterator begin, InputIterator end, std::size_t size, - const IsSelected& selection, Visitor& visitor) { std::vector mark(size, false); @@ -123,28 +122,29 @@ public: { Descriptor h = *begin; - if(mark[id(h)] || selection.count(h)) { continue; } + if(mark[id(h)]) + continue; std::vector C; C.push_back(h); mark[id(h)] = true; std::size_t current_index = 0; - bool neigh_to_selection = false; while(current_index < C.size()) { Descriptor current = C[current_index++]; for(One_ring_iterator circ(current, mesh); circ; ++circ) { Descriptor nv = circ; - neigh_to_selection |= (selection.count(nv)!=0); - if(!mark[id(nv)] && !selection.count(nv)) { + if(!mark[id(nv)]) + { mark[id(nv)] = true; C.push_back(nv); } } } - if(neigh_to_selection) { visitor(C); } + + visitor(C); } } }; diff --git a/Lab/demo/Lab/implicit_functions/CMakeLists.txt b/Lab/demo/Lab/implicit_functions/CMakeLists.txt index 9862da0a39d..5b42135b28f 100644 --- a/Lab/demo/Lab/implicit_functions/CMakeLists.txt +++ b/Lab/demo/Lab/implicit_functions/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling the CGAL Mesh_3 demo implicit functions. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) include(CGALlab_macros) diff --git a/Lab/demo/Lab/include/CGAL/Dualizer.h b/Lab/demo/Lab/include/CGAL/Dualizer.h deleted file mode 100644 index cfaff385371..00000000000 --- a/Lab/demo/Lab/include/CGAL/Dualizer.h +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef _DUALIZER_ -#define _DUALIZER_ - -#include -#include -template -struct Facet_cmp -{ - bool operator()(Face_handle a, Face_handle b) const - { - return &*a < &*b; - } -}; - -template -class CModifierDual : public CGAL::Modifier_base -{ -private: - typedef typename Kernel::Point_3 Point; - typedef typename Kernel::Plane_3 Plane; - typedef typename Kernel::Vector_3 Vector; - typedef typename Kernel::FT FT; - - typedef typename HDS::Vertex Vertex; - typedef typename HDS::Face_handle Face_handle; - typedef typename HDS::Halfedge_handle Halfedge_handle; - - typedef typename Polyhedron::Facet_iterator Facet_iterator; - typedef typename Polyhedron::Vertex_iterator Vertex_iterator; - typedef typename Polyhedron::Halfedge_around_vertex_circulator HV_circulator; - - typedef typename CGAL::Polyhedron_incremental_builder_3 builder; - Polyhedron *m_pMesh; - std::map > m_face_map; - -public: - - // life cycle - CModifierDual(Polyhedron *pMesh) - { - CGAL_assertion(pMesh != NULL); - m_pMesh = pMesh; - } - ~CModifierDual() {} - - void operator()( HDS& hds) - { - builder B(hds,true); - B.begin_surface(3,1,6); - add_vertices(B); - add_facets(B); - B.end_surface(); - } - - // add vertices - void add_vertices(builder &B) - { - int index = 0; - Facet_iterator it; - for(it = m_pMesh->facets_begin(); - it != m_pMesh->facets_end(); - it++) - { - Face_handle f = it; - m_face_map[f] = index++; - B.add_vertex(dual(f)); - } - } - - Plane facet_plane(Face_handle f) - { - const Point& a = f->halfedge()->vertex()->point(); - const Point& b = f->halfedge()->next()->vertex()->point(); - const Point& c = f->halfedge()->next()->next()->vertex()->point(); - return Plane(a,b,c); - } - - Point dual(Face_handle f) - { - Plane plane = facet_plane(f); - FT sqd = CGAL::squared_distance(Point(CGAL::ORIGIN),plane); - FT distance_to_origin = std::sqrt(sqd); - Vector normal = plane.orthogonal_vector(); - normal = normal / std::sqrt(normal * normal); - return CGAL::ORIGIN + normal / distance_to_origin; - } - - // add facets - void add_facets(builder &B) - { - Vertex_iterator v; - for(v = m_pMesh->vertices_begin(); - v != m_pMesh->vertices_end(); - v++) - { - B.begin_facet(); - HV_circulator he = v->vertex_begin(); - HV_circulator end = he; - CGAL_For_all(he,end) - B.add_vertex_to_facet(m_face_map[he->facet()]); - B.end_facet(); - } - } - -}; - -template -class Dualizer -{ -public: - typedef typename Polyhedron::HalfedgeDS HalfedgeDS; - Dualizer() {} - ~Dualizer() {} - -public: - void run(Polyhedron &input, Polyhedron &output) - { - CModifierDual dualizer(&input); - output.delegate(dualizer); - } -}; - -#endif // _DUALIZER_ diff --git a/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt b/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt index cfa7f45bb92..ce0dd87df2f 100644 --- a/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt +++ b/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(LCC_performance_2) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/) diff --git a/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt b/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt index 5502fe39111..8bbdcaddddb 100644 --- a/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt +++ b/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(LCC_performance_3) if(NOT POLICY CMP0070 AND POLICY CMP0053) diff --git a/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt b/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt index b152c55bd9d..d0349077d7f 100644 --- a/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt +++ b/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt @@ -2,7 +2,7 @@ # This is the CMake script for compiling a CGAL application. # cmake ../ -DCMAKE_BUILD_TYPE=Debug -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Linear_cell_complex_Demo) # Find includes in corresponding build directories diff --git a/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt b/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt index e3c32160e7b..27ab5b842c5 100644 --- a/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt +++ b/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Linear_cell_complex_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) @@ -10,7 +10,7 @@ find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) # ADD_DEFINITIONS("-pg") # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") -# To use valgrind, we must disable rounding math ckeck. +# To use valgrind, we must disable rounding math check. # add_definitions(-DCGAL_DISABLE_ROUNDING_MATH_CHECK) create_single_source_cgal_program("gmap_linear_cell_complex_3.cpp") diff --git a/Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3_incremental_builder.cpp b/Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3_incremental_builder.cpp index 414be85978a..70f649f2a38 100644 --- a/Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3_incremental_builder.cpp +++ b/Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3_incremental_builder.cpp @@ -30,7 +30,7 @@ int main() ib.add_facet({5,4,7,6}); ib.begin_facet(); // Create a new facet version 2: begin facet - ib.add_vertex_to_facet(0); // add sucessively its indices + ib.add_vertex_to_facet(0); // add successively its indices ib.add_vertex_to_facet(3); ib.add_vertex_to_facet(4); ib.add_vertex_to_facet(5); diff --git a/Linear_cell_complex/include/CGAL/CMap_linear_cell_complex_storages_with_index.h b/Linear_cell_complex/include/CGAL/CMap_linear_cell_complex_storages_with_index.h index 96b388fd172..c85b1476fb9 100644 --- a/Linear_cell_complex/include/CGAL/CMap_linear_cell_complex_storages_with_index.h +++ b/Linear_cell_complex/include/CGAL/CMap_linear_cell_complex_storages_with_index.h @@ -85,7 +85,7 @@ namespace CGAL { struct Container_for_attributes : public Compact_container_with_index, - Multiply_by_two_policy_for_cc_with_size<64>, size_type > + Multiply_by_two_policy_for_cc_with_size<64>, Index_type > {}; /// Typedef for attributes typedef typename internal::template Get_attributes_tuple::type diff --git a/Linear_cell_complex/include/CGAL/Cell_attribute_with_point.h b/Linear_cell_complex/include/CGAL/Cell_attribute_with_point.h index 17c17d1b87b..24099a24851 100644 --- a/Linear_cell_complex/include/CGAL/Cell_attribute_with_point.h +++ b/Linear_cell_complex/include/CGAL/Cell_attribute_with_point.h @@ -91,10 +91,10 @@ namespace CGAL { public: typedef Cell_attribute_with_point Self; + Functor_on_split_, WithID> Self; typedef Cell_attribute Base1; + Functor_on_merge_, Functor_on_split_, WithID> Base1; typedef Point_for_cell Base2; typedef typename LCC::Point Point; diff --git a/Linear_cell_complex/include/CGAL/Cell_attribute_with_point_and_id.h b/Linear_cell_complex/include/CGAL/Cell_attribute_with_point_and_id.h index 332290737e8..60503071387 100644 --- a/Linear_cell_complex/include/CGAL/Cell_attribute_with_point_and_id.h +++ b/Linear_cell_complex/include/CGAL/Cell_attribute_with_point_and_id.h @@ -32,6 +32,9 @@ namespace CGAL { template friend class Concurrent_compact_container; + template + friend class Compact_container_with_index; + public: typedef typename Base::Point Point; @@ -64,6 +67,9 @@ namespace CGAL { template friend class Concurrent_compact_container; + template + friend class Compact_container_with_index; + public: typedef typename Base::Point Point; diff --git a/Linear_cell_complex/include/CGAL/GMap_linear_cell_complex_storages_with_index.h b/Linear_cell_complex/include/CGAL/GMap_linear_cell_complex_storages_with_index.h index 5d260bee1ec..e283358e16e 100644 --- a/Linear_cell_complex/include/CGAL/GMap_linear_cell_complex_storages_with_index.h +++ b/Linear_cell_complex/include/CGAL/GMap_linear_cell_complex_storages_with_index.h @@ -85,7 +85,7 @@ namespace CGAL { struct Container_for_attributes : public Compact_container_with_index, - Multiply_by_two_policy_for_cc_with_size<64>, size_type > + Multiply_by_two_policy_for_cc_with_size<64>, Index_type > {}; /// Typedef for attributes typedef typename internal::template Get_attributes_tuple::type diff --git a/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt b/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt index b5adbf664ec..dde51b6546b 100644 --- a/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt +++ b/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Linear_cell_complex_Tests) find_package(CGAL REQUIRED) diff --git a/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_2_test.cpp b/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_2_test.cpp index 89f981f53d1..becc8d5bfb1 100644 --- a/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_2_test.cpp +++ b/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_2_test.cpp @@ -55,6 +55,7 @@ struct Myitems_2b { #ifdef USE_COMPACT_CONTAINER_WITH_INDEX typedef CGAL::Tag_true Use_index; + using Index_type=std::uint16_t; #endif template struct Dart_wrapper diff --git a/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_3_test.cpp b/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_3_test.cpp index 6e04cbb07a3..627051d911c 100644 --- a/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_3_test.cpp +++ b/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_3_test.cpp @@ -61,6 +61,7 @@ struct Myitems_3b { #ifdef USE_COMPACT_CONTAINER_WITH_INDEX typedef CGAL::Tag_true Use_index; + using Index_type=std::uint32_t; #endif template struct Dart_wrapper diff --git a/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_4_test.cpp b/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_4_test.cpp index b4d88213275..3a55f75df82 100644 --- a/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_4_test.cpp +++ b/Linear_cell_complex/test/Linear_cell_complex/Linear_cell_complex_4_test.cpp @@ -58,6 +58,7 @@ struct Myitems_4b { #ifdef USE_COMPACT_CONTAINER_WITH_INDEX typedef CGAL::Tag_true Use_index; + using Index_type=std::uint64_t; #endif template struct Dart_wrapper diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/bin/create_internal_release_of_the_day.py b/Maintenance/infrastructure/cgal.geometryfactory.com/bin/create_internal_release_of_the_day.py index 5dd07ba2879..f2a97610321 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/bin/create_internal_release_of_the_day.py +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/bin/create_internal_release_of_the_day.py @@ -18,7 +18,7 @@ actions = { "Thursday": integration, "Friday": release("5.5"), "Saturday": release("5.6"), - "Sunday": beta_release_from_master(1), + "Sunday": beta_release_from_master(2), } diff --git a/Maintenance/public_release/announcement/announcement-beta.md b/Maintenance/public_release/announcement/announcement-beta.md index 72057d53540..d847b9b1386 100644 --- a/Maintenance/public_release/announcement/announcement-beta.md +++ b/Maintenance/public_release/announcement/announcement-beta.md @@ -1,103 +1,153 @@ -The CGAL Open Source Project is pleased to announce the release 5.6 Beta 1 of CGAL, the Computational Geometry Algorithms Library. +The CGAL Open Source Project is pleased to announce the release 6.0 Beta 1 of CGAL, the Computational Geometry Algorithms Library. -CGAL version 5.6 Beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release of the final version of CGAL 5.6 in July 2022. +CGAL version 6.0 Beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release of the final version of CGAL 6.0 in July 2024. -Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.5: +Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.6: ### General Changes -- **Breaking change**: Package-specific assertions, preconditions, and postconditions (such as `CGAL_triangulation_assertion`) have been removed. Corresponding CGAL-wide versions (such as `CGAL_assertion`) should be used instead. +- CGAL 6.0 is the first release of CGAL that requires a C++ compiler with the support of C++17 or later. The new list of supported compilers is: + - Visual C++ 15.9, 16.10, 17.0 (from Visual Studio 2017, 2019 and 2022) or later + - Gnu g++ 11.4.0 or later (on Linux or macOS) + - LLVM Clang version 15.0.7 or later (on Linux) + - Apple Clang compiler versions 10.0.1, 12.0.5, and 15.0.0 (on macOS) +- The minimal supported version of Boost is now 1.72.0. +- The CGAL `Core` library is no longer based on GMP, but on [Boost.Multiprecision](https://www.boost.org/doc/libs/1_72_0/libs/multiprecision/doc/html/index.html). Either GMP backend or Boost backend can be used. +- All demos are now based on Qt6. +- **Breaking change**: The CMake file `UseCGAL.cmake` has been removed from CGAL. Usages of the CMake variables `${CGAL_USE_FILE}` and `${CGAL_LIBRARIES}` must be replaced by a link to the imported target `CGAL::CGAL`, for example: `target_link_library(your_target PRIVATE CGAL::CGAL)`. -### [Shape Detection](https://doc.cgal.org/5.6/Manual/packages.html#PkgShapeDetection) (major changes) +### [Kinetic Space Partition](https://doc.cgal.org/6.0/Manual/packages.html#PkgKineticSpacePartition) (new package) -- **Breaking change**: The region growing part of the package have been reworked to fix design issues introduced with the handling of `FaceGraph` models. In particular, the notion of `Item` has been introduced to reference an element in the input range of elements. Region maps now operates on `Item` and no longer on the value type of the input range. -- **Breaking change**: The method `update()` in the concept `RegionType` now returns a `Boolean` instead of `void`, that is used inside the class `Region_growing` for detecting if the input conditions for the new region are satisfied. This change affects only user-defined types of regions. -- **Breaking change**: The constructors of all models used together with the region growing algorithm now enable users to provide parameters through the [named parameters](https://doc.cgal.org/5.6/BGL/group__bgl__namedparameters.html) mechanism. -- All fitting classes in the region growing framework are now using better versions of the region conditions, more precise and faster, including the correct normal orientations. -- Added new models of the concept `RegionType` for getting linear regions in a set of 2D and 3D segments and on 2D and 3D polylines. -- Added the class `Polyline_graph` for extracting a set of polylines from a face graph, which splits this graph into a set of user-defined regions. -- Added new shapes to the Region Growing algorithm on a point set: circles in 2D, spheres in 3D, and cylinders in 3D. +- This package implements kinetic space partition: based on a set of planar input shapes, the bounding box of the input data is split into convex volumes. The complexity of the partition can be adjusted with a single parameter. -### [2D Straight Skeleton and Polygon Offsetting](https://doc.cgal.org/5.6/Manual/packages.html#PkgStraightSkeleton2) (major changes) -- Added weighted straight skeletons: weighted straight skeletons are a generalization of straight skeletons. Contour edges are assigned a positive weight, which can be understood as assigning a speed to the wavefront spawned from the contour edge. -- Added straight skeleton extrusion: this CGAL package now implements the extrusion of weighted straight skeletons of polygons with holes. The output is a closed, combinatorially 2-manifold surface triangle mesh. - See also the [news entry](https://www.cgal.org/2023/05/09/improved_straight_skeleton/). +### [Kinetic Surface Reconstruction](https://doc.cgal.org/6.0/Manual/packages.html#PkgKineticSurfaceReconstruction) (new package) -### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.6/Manual/packages.html#PkgKernel23) +- The package implements a piece-wise planar surface reconstruction pipeline from point clouds combining methods from the [Shape Detection](https://doc.cgal.org/6.0/Manual/packages.html#PkgShapeDetection), [Shape Regularization](https://doc.cgal.org/6.0/Manual/packages.html#PkgShapeRegularization) and [Kinetic Shape Partition](https://doc.cgal.org/6.0/Manual/packages.html#PkgKineticSpacePartition) packages and graph-cut to reconstruct surfaces from point clouds. -- Added the functor [`CompareAngle_3`](https://doc.cgal.org/5.6/Kernel_23/classKernel_1_1CompareAngle__3.html) to the concept [`Kernel`](https://doc.cgal.org/5.6/Kernel_23/classKernel.html) to compare an angle defined by three points to the cosinus of another angle. +### [Basic Viewer](https://doc.cgal.org/6.0/Basic_viewer/index.html#Chapter_Basic_viewer) (new package) -### [Combinatorial Maps](https://doc.cgal.org/5.6/Manual/packages.html#PkgCombinatorialMaps), [Generalized Maps](https://doc.cgal.org/5.6/Manual/packages.html#PkgGeneralizedMaps), and [Linear Cell Complex](https://doc.cgal.org/5.6/Manual/packages.html#PkgLinearCellComplex) +- The basic viewer package provides interactive visualization for most CGAL packages, such as [2D Arrangements](https://doc.cgal.org/6.0/Manual/packages.html#PkgArrangementOnSurface2), [2D Regularized Boolean Set-Operations](https://doc.cgal.org/6.0/Manual/packages.html#PkgBooleanSetOperations2), [Linear Cell Complex](https://doc.cgal.org/6.0/Manual/packages.html#PkgLinearCellComplex), [3D Boolean Operations on Nef Polyhedra](https://doc.cgal.org/6.0/Manual/packages.html#PkgNef3), [2D Periodic Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgPeriodic2Triangulation2), [3D Point Set](https://doc.cgal.org/6.0/Manual/packages.html#PkgPointSet3), [2D Polygons](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolygon2), [3D Polyhedral Surface](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolyhedron), [2D Straight Skeleton and Polygon Offsetting](https://doc.cgal.org/6.0/Manual/packages.html#PkgStraightSkeleton2), [Surface Mesh](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMesh), [2D Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulation2), [3D Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulation3), [2D Voronoi Diagrams](https://doc.cgal.org/6.0/Manual/packages.html#PkgVoronoiDiagram2), and more. The most simple use case of the basic viewer is the call of the global `CGAL::draw()` function. There is one such `draw()` function for each CGAL package that has a basic viewer. Such a call opens an interactive window showing the given model and allowing to navigate in the scene, show or hide some specific cells, show the interior of the model if any, etc. The `Basic_viewer` is based on Qt6. -- Added a version that uses indices instead of handles as dart and attribute descriptors. As the indices are integers convertible from and to `std::size_t`, they can be used as index into vectors which store properties. To use the index version, `Use_index` must be defined and be equal to `CGAL::Tag_true` in the item class. +### [Polygon Repair](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolygonRepair) (new package) -### [Linear Cell Complex](https://doc.cgal.org/5.6/Manual/packages.html#PkgLinearCellComplex) +- This package provides algorithms to repair 2D polygons, polygons with holes, and multipolygons with holes, by selecting faces of the arrangement of the input using the odd-even heuristic. -- Added the class [`Linear_cell_complex_incremental_builder_3`](https://doc.cgal.org/5.6/Linear_cell_complex/classCGAL_1_1Linear__cell__complex__incremental__builder__3.html). +### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/6.0/Manual/packages.html#PkgKernel23) -### [2D Arrangements](https://doc.cgal.org/5.6/Manual/packages.html#PkgArrangementOnSurface2) +- **Breaking change**: Replaced all instances of `boost::variant` with `std::variant` in the intersection functions. +- **Breaking change**: Replaced all instances of `boost::optional` with `std::optional` in the intersection functions. -- Introduced an overload function template, namely `draw(arr)`, that renders arrangements based on the `Basic_viewer_qt` class template. As of now, only 2D arrangements on the plane induced by (i) segments, (ii) conics, and (iii) circular arcs or (linear) segments are supported. -- Improved the traits class template that handles conics, namely [`Arr_conic_traits_2`](https://doc.cgal.org/5.6/Arrangement_on_surface_2/classCGAL_1_1Arr__conic__traits__2.html). This includes the following: 1. Fixed a couple of bugs and slightly optimized some functions. 2. Introduced functionality that approximates conics with polylines. (This is used to draw conic curves.) 3. **Breaking change**: Changed the interface to generate conic curves. In the past, curves where generated directly using the constructors of the conic and x-monotone conic constructs. Now, they are constructed via function objects provided by the traits. This eliminates the constructions of temporary kernels. The old functionality is obsolete, but still supported for a limited number of versions. It depends on a static member function of the traits. In a future version this function will no longer be static, implying that the old functionality will no longer be supported. -- Introduced functionality that approximates circular segments with polylines. (This is used to draw conic curves.) +### [3D Polyhedral Surface](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolyhedron) -### [Polygon Mesh Processing](https://doc.cgal.org/5.6/Manual/packages.html#PkgPolygonMeshProcessing) +- The demo of this package, also known as “Polyhedron Demo” has been renamed “CGAL Lab” and moved to its own package (“Lab”). -- Added functions [`CGAL::Polygon_mesh_processing::region_growing_of_planes_on_faces()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PkgPolygonMeshProcessingRef.html#ga50dcd2f6295f584d2e378b57290ae2af) and [`CGAL::Polygon_mesh_processing::detect_corners_of_regions()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PkgPolygonMeshProcessingRef.html#gac8e445730d718a2fc49604e865017d2e), which enable partitioning a mesh into planar regions using the region growing algorithm from the [Shape Detection](https://doc.cgal.org/5.6/Manual/packages.html#PkgShapeDetection) package. +### [2D and 3D Fast Intersection and Distance Computation (AABB Tree)](https://doc.cgal.org/6.0/Manual/packages.html#PkgAABBTree) -- Added the functions [`CGAL::Polygon_mesh_processing::remesh_planar_patches()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga7fca6fa2db94560ab6d32e6a77fc35b6) and [`CGAL::Polygon_mesh_processing::remesh_almost_planar_patches()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga0e6da479548199a5d82c3cf0ed36e8a0), which can be used to remesh patches of coplanar faces in a mesh. +- The AABB tree can now be used with 2D or 3D primitives: + - The concepts `AABBGeomTraits` and `AABBRayIntersectionGeomTraits` have been replaced by [`AABBGeomTraits_3`](https://doc.cgal.org/6.0/AABB_tree/classAABBGeomTraits__3.html) and by [`AABBRayIntersectionGeomTraits_3`](https://doc.cgal.org/6.0/AABB_tree/classAABBRayIntersectionGeomTraits__3.html), respectively. + - The concepts [`AABBGeomTraits_2`](https://doc.cgal.org/6.0/AABB_tree/classAABBGeomTraits__2.html) and [`AABBRayIntersectionGeomTraits_2`](https://doc.cgal.org/6.0/AABB_tree/classAABBRayIntersectionGeomTraits__2.html) have been introduced, as the 2D counterparts. + - The class [`CGAL::AABB_traits`](https://doc.cgal.org/6.0/AABB_tree/group__PkgAABBTreeRef.html#ga764f0fc59c96355877536810aa1aca5b) is deprecated and replaced by [`CGAL::AABB_traits_3`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__traits__3.html). + - The class [`CGAL::AABB_traits_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__traits__2.html) is introduced as the 2D counterpart. + - The class [`CGAL::AABB_segment_primitive`](https://doc.cgal.org/6.0/AABB_tree/group__PkgAABBTreeRef.html#gad0acfd5c4a3c081b7570cc6bd4594c8d) has been deprecated and replaced by the class [`CGAL::AABB_segment_primitive_3`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__segment__primitive__3.html). + - The class [`CGAL::AABB_triangle_primitive`](https://doc.cgal.org/6.0/AABB_tree/group__PkgAABBTreeRef.html#ga54a56f01dc8024624f7d83ee0a01add0) has been deprecated and replaced by the class [`CGAL::AABB_triangle_primitive_3`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__triangle__primitive__3.html). + - The following 2D primitive classes have been added: [`CGAL::AABB_segment_primitive_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__segment__primitive__2.html), [`CGAL::AABB_polyline_segment_primitive_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__polyline__segment__primitive__2.html), [`CGAL::AABB_triangle_primitive_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__triangle__primitive__2.html), [`CGAL::AABB_indexed_triangle_primitive_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__indexed__triangle__primitive__2.html). +- **Breaking change**: The concept [`AABBTraits`](https://doc.cgal.org/6.0/AABB_tree/classAABBTraits.html) now refines the concept [`SearchTraits`](https://doc.cgal.org/6.0/Spatial_searching/classSearchTraits.html). +- **Breaking change**: Replaced all instances of `boost::optional` with `std::optional`. -- Added the function [`CGAL::Polygon_mesh_processing::surface_Delaunay_remeshing()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#gaff62f9415d2fe96d1d3095351f156ced), which can be used to remesh a surface triangle mesh using the Delaunay refinement algorithm from the [3D Mesh Generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh3) package. +### [2D Arrangements](https://doc.cgal.org/6.0/Manual/packages.html#PkgArrangementOnSurface2) -- Added the function [`CGAL::Polygon_mesh_processing::remove_almost_degenerate_faces()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__geometric__repair__grp.html#ga48008d2b66de8a68a7068f29db15dad6), which can be used to remove badly shaped triangles faces in a mesh. +- **Breaking change**: Replaced all instances of `boost::variant` with `std::variant`. +- **Breaking change**: The type of the result of point location queries has been changed to `std::variant`. Support for the old macro `CGAL_ARR_POINT_LOCATION_VERSION` has been removed. +- **Breaking change**: Eliminated the error-prone C-type casting that was used to define observers. In general, backward compatibility was maintained; however, the class template [`CGAL::Arr_observer`](https://doc.cgal.org/6.0/Arrangement_on_surface_2/group__PkgArrangementOnSurface2Ref.html#ga8019f986f5469920136c4b92290b7b1b) has been replaced by an alias template. (The class `CGAL::Arr_observer` was renamed to [`CGAL::Aos_observer`](https://doc.cgal.org/6.0/Arrangement_on_surface_2/classCGAL_1_1Aos__observer.html)). +- Introduced [`Arr_dcel`](https://doc.cgal.org/6.0/Arrangement_on_surface_2/classCGAL_1_1Arr__dcel.html), which essentially replaces the former `CGAL::Arr_default_dcel`. Backward compatibility was maintained by the introduction of the alias template [`CGAL::Arr_default_dcel`](https://doc.cgal.org/6.0/Arrangement_on_surface_2/group__PkgArrangementOnSurface2DCEL.html#gaf9635869a3794a46d7dcfce63d7de2a6). `CGAL::Arr_dcel`, as opposed to the former `CGAL::Arr_default_dcel` is templated (in addition to the geometry traits) by `Vertex`, `Halfedge`, and `Face` template parameters, and they have default type values. All this enables the layered extension of DCEL records. +- Fixed a bug in the zone construction code applied to arrangements of geodesic arcs on a sphere, when inserting an arc that lies on the identification curve. +- Introduced a new interactive program that demonstrates 2D arrangements embedded on the sphere called `earth`. The program (i) reads a database of all administrative boundaries of the countries in the world, (ii) displays the globe with all countries and land covered by water (which is land not covered by countries) on a window, and (ii) enables interaction with the user. -- Added the functions [`CGAL::Polygon_mesh_processing::does_triangle_soup_self_intersect()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__intersection__grp.html#ga4909920dc48b8285e69feb845feb1e53) and [`CGAL::Polygon_mesh_processing::triangle_soup_self_intersections()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__intersection__grp.html#ga1c5fee17bd0d92d5a2fba77ed94d4b4d) to identify and report self-intersections in a triangle soup, similarly to existing functions on triangle meshes. +### [3D Envelopes](https://doc.cgal.org/6.0/Manual/packages.html#PkgEnvelope3) -- Added the function [`CGAL::Polygon_mesh_processing::triangulate_polygons()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga8b7db6aa8c3e79526b594739ba926d82), which allows users to triangulate polygon soups. +- **Breaking change**: [`Construct_projected_boundary_2`](https://doc.cgal.org/6.0/Envelope_3/classEnvelopeTraits__3.html#ac7b8f72870f0572834a0a3de62c67bc1) in [`EnvelopeTraits_3`](https://doc.cgal.org/6.0/Envelope_3/classEnvelopeTraits__3.html) now uses `std::variant` instead of [`CGAL::Object`](https://doc.cgal.org/6.0/STL_Extension/classCGAL_1_1Object.html). +- Passed the base class of [`CGAL::Env_plane_traits_3`](https://doc.cgal.org/6.0/Envelope_3/classCGAL_1_1Env__plane__traits__3.html) as a template parameter with a default value (being the 2D arrangement linear traits). Similarly, passed the base class of `CGAL::Env_triangle_traits_3` as a template parameter with a default value (being the 2D arrangement segment traits). -- Added a named parameter to [`CGAL::Polygon_mesh_processing::smooth_shape()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga57fa999abe8dc557003482444df2a189) to disable the scaling, which otherwise aims to compensate volume loss during smoothing. +### [Combinatorial Maps](https://doc.cgal.org/6.0/Manual/packages.html#PkgCombinatorialMaps) and [Generalized Maps](https://doc.cgal.org/6.0/Manual/packages.html#PkgGeneralizedMaps) -- Deprecated the overloads of functions [`CGAL::Polygon_mesh_processing::triangulate_hole()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__hole__filling__grp.html#ga3abdf2d0558822e85f060966b69cae98), [`CGAL::Polygon_mesh_processing::triangulate_and_refine_hole()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__hole__filling__grp.html#ga9868fac4d9dca77462ad7828bc99d8a1), and [`CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__hole__filling__grp.html#ga18eac756a8f8e5d5f73e645fd4e26cad) which have output iterators for vertices and faces as parameter. They are replaced by overloads with two additional named parameters. +- Added the function [`insert_cell_1_between_two_cells_2()`](https://doc.cgal.org/6.0/Combinatorial_map/classGenericMap.html#aa29570a0812094c7876e24a228373f12) to the [`GenericMap`](https://doc.cgal.org/6.0/Combinatorial_map/classGenericMap.html) concept, which enables users to insert an edge between two different faces in order to create faces with holes. -### [2D Convex Hulls](https://doc.cgal.org/5.6/Manual/packages.html#PkgConvexHull2) +- Added new meshing criterion `edge_distance`, an upper bound for the distance from the edge to the 1D feature. -- **Breaking change**: The concept [`ConvexHullTraits_2`](https://doc.cgal.org/5.6/Convex_hull_2/classConvexHullTraits__2.html) no longer requires the functor `Less_signed_distance_to_line_2`, but requires the functor `Compare_signed_distance_to_line_2` instead. -- The long-deprecated classes `Convex_hull_projective_xy_traits_2`, `Convex_hull_projective_xz_traits_2`, and `Convex_hull_projective_yz_traits_2` have been removed. Users should use [`Projection_traits_xy_3`](https://doc.cgal.org/5.6/Kernel_23/classCGAL_1_1Projection__traits__xy__3.html), [`Projection_traits_xz_3`](https://doc.cgal.org/5.6/Kernel_23/classCGAL_1_1Projection__traits__xz__3.html), and [`Projection_traits_yz_3`](https://doc.cgal.org/5.6/Kernel_23/classCGAL_1_1Projection__traits__yz__3.html) instead. +- **Breaking change**: the concept `MeshEdgeCriteria_3` was modified to include the new meshing criterion `edge_distance`. -### [2D Triangulations](https://doc.cgal.org/5.6/Manual/packages.html#PkgTriangulation2) +### [Quadtrees, Octrees, and Orthtrees](https://doc.cgal.org/6.0/Manual/packages.html#PkgOrthtree) -- Added the function [`CGAL::mark_domain_in_triangulation()`](https://doc.cgal.org/5.6/Triangulation_2/group__PkgTriangulation2Miscellaneous.html#ga0409755d0eb89100810230443a85e7eb) to mark faces connected with non-constrained edges as inside of the domain based on the nesting level. +- **Breaking change**: + - Node splitting behavior and per-node data are now customizable via the Traits class. + - Nodes are now stored as a property map, with properties of each node accessed by index. + - Nearest neighbors functions only work for Orthtrees which provide the necessary functionality. -### [2D Conforming Triangulations and Meshes](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh2) +### [CGAL and the Boost Graph Library (BGL)](https://doc.cgal.org/6.0/Manual/packages.html#PkgBGL) -- Added new overloads to the function [`write_VTU()`](https://doc.cgal.org/5.6/Mesh_2/group__PkgMesh2IO.html), with property maps for specifying the domain. -- Deprecated usage of boost parameters in favor of function named parameters in [`CGAL::lloyd_optimize_mesh_2()`](https://doc.cgal.org/5.6/Mesh_2/group__PkgMesh2Functions.html#gafeaf59d3fa014da287f8514913b38d05). -- Deprecated two overloads of the function [`refine_Delaunay_mesh()`](https://doc.cgal.org/5.6/Mesh_2/group__PkgMesh2Functions.html), and replaced them with versions using function named parameters. +- Added the function [`CGAL::remove_all_elements()`](https://doc.cgal.org/6.0/BGL/group__PkgBGLHelperFct.html#gac7e199820c95ed1fc6ab536750749358), which removes vertices, halfedges, and faces without collecting garbage and without removing properties. +- [Dynamic property maps](https://doc.cgal.org/6.0/BGL/group__PkgBGLPropertiesDynamic.html) can now have a default value. +- The class [`CGAL::Face_filtered_graph`](https://doc.cgal.org/6.0/BGL/structCGAL_1_1Face__filtered__graph.html) now supports patch IDs of any type and not just `faces_size_type`. The only requirement is that the type is hashable. -### [2D Hyperbolic Triangulations](https://doc.cgal.org/5.6/Manual/packages.html#PkgHyperbolicTriangulation2) +### [Polygon Mesh Processing](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolygonMeshProcessing) -- **Breaking change**: the concept [`HyperbolicTriangulationFaceBase_2`](https://doc.cgal.org/5.6/Hyperbolic_triangulation_2/classHyperbolicTriangulationFaceBase__2.html) has been modified to better reflect the triangulation's requirements and avoid a conflict with the requirements described by the concept `TriangulationDataStructure_2::Face`. The model [`CGAL::Hyperbolic_triangulation_face_base_2`](https://doc.cgal.org/5.6/Hyperbolic_triangulation_2/classCGAL_1_1Hyperbolic__triangulation__face__base__2.html) has been adapted correspondingly. +- Added the function [`CGAL::Polygon_mesh_processing::autorefine_triangle_soup()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PMP__corefinement__grp.html#gaec85370aa0b2acc0919e5f8406cfb74c), which can be used to refine a soup of triangles such that no pair of triangles intersects in their interiors. Also added, the function [`CGAL::Polygon_mesh_processing::autorefine()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PMP__corefinement__grp.html#ga3e3a0a82b6c04bdc3a6c070e8da4aed5) operating directly on a triangle mesh and updating it using the aforementioned function on a triangle soup. +- Added the class [`CGAL::Corefinement::Non_manifold_output_visitor`](https://doc.cgal.org/6.0/Polygon_mesh_processing/structCGAL_1_1Polygon__mesh__processing_1_1Corefinement_1_1Non__manifold__output__visitor.html), which can be used in corefinement based functions to deal with non-manifold outputs. +- Added the option to use a variable sizing field for [`CGAL::Polygon_mesh_processing::isotropic_remeshing()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga66cb01cf228ed22f0a2a474cfa2aeb3f), and a sizing function based on a measure of local curvature for adaptive remeshing. +- Added the function [`CGAL::Polygon_mesh_processing::interpolated_corrected_curvatures()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PMP__corrected__curvatures__grp.html#ga22665c9ce92aaedab07df1b05f20bdb2) which can be used to compute the mean and Gaussian curvatures, as well as the principal curvature and directions. +- Added the function [`CGAL::Polygon_mesh_processing::refine_mesh_at_isolevel()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PkgPolygonMeshProcessingRef.html#ga396505d5a60b5f6d29792b214fa59352) which can be used to refine a polygon mesh along an isocurve. +- Added the function [`CGAL::Polygon_mesh_processing::add_bbox()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PkgPolygonMeshProcessingRef.html#gabaf98d2fd9ae599ff1f3a5a6cde79cf3), which enables adding a tight or extended, triangulated or not, bounding box to a face graph. -### [3D Simplicial Mesh Data Structure](https://doc.cgal.org/5.6/Manual/packages.html#PkgSMDS3) (new package) +### [2D Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulation2) -- This new package wraps all the existing code that deals with a [`MeshComplex_3InTriangulation_3`](https://doc.cgal.org/5.6/SMDS_3/classMeshComplex__3InTriangulation__3.html) to describe 3D simplicial meshes, and makes the data structure independent from the [tetrahedral mesh generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh3) package. +- **Breaking change**: the concept [`TriangulationTraits_2`](https://doc.cgal.org/6.0/Triangulation_2/classTriangulationTraits__2.html) now requires an additional functor `Compare_xy_2`. -### [3D Mesh Generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh3) +### [3D Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulation3) -- Added two new named parameters to the named constructor [`CGAL::create_labeled_image_mesh_domain()`](https://doc.cgal.org/5.6/Mesh_3/classCGAL_1_1Labeled__mesh__domain__3.html#aec3f58e9883a8036a1b3e379df7d8fa9) for automatic detection and protection of 1D-curves that lie at the intersection of three or more subdomains extracted from labeled images. -- Added [`CGAL::Sizing_field_with_aabb_tree`](https://doc.cgal.org/5.6/Mesh_3/structCGAL_1_1Sizing__field__with__aabb__tree.html), a geometry-aware sizing field for feature edges in polyhedral domains. -- Added new meshing criterion [`edge_min_size`](https://doc.cgal.org/5.6/Mesh_3/classCGAL_1_1Mesh__criteria__3.html#a5f1c2649cb7ea346a3b6a2a8724b4df1) to avoid subdividing sharp edges that are shorter than a prescribed size bound. -- Added new meshing criteria [`facet_min_size`](https://doc.cgal.org/5.6/Mesh_3/classCGAL_1_1Mesh__criteria__3.html#a5f1c2649cb7ea346a3b6a2a8724b4df1) and [`cell_min_size`](https://doc.cgal.org/5.6/Mesh_3/classCGAL_1_1Mesh__criteria__3.html#a5f1c2649cb7ea346a3b6a2a8724b4df1) to prevent Delaunay refinement from creating simplices smaller than a prescribed bound. -- Deprecated usage of boost parameters in favor of function named parameters. +- Added three member functions [`vertices()`](https://doc.cgal.org/6.0/Triangulation_3/classCGAL_1_1Triangulation__3.html#a02faf334255e1ca8caa1a6f412533759) to the class [`CGAL::Triangulation_3`](https://doc.cgal.org/6.0/Triangulation_3/classCGAL_1_1Triangulation__3.html). Each of them returns an array containing the vertices of the given triangulation simplex. -### [3D Periodic Mesh Generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgPeriodic3Mesh3) +### [dD Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulations) -- Periodic Mesh Generation now supports non-cubic domains. -- Deprecated usage of boost parameters in favor of function named parameters. +- **Breaking change**: `CGAL::TDS_full_cell_mirror_storage_policy` is now unsupported in dimension larger than 127. +- **Breaking change**: Inserting multiple unweighted points in the same position now keeps the first one, instead of switching to the latest. This only affects custom point types where not all points in the same position are equivalent. -### [Surface Mesh Simplification](https://doc.cgal.org/5.6/Manual/packages.html#PkgSurfaceMeshSimplification) -- The stop predicates [`Count_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Count__stop__predicate.html) and [`Count_ratio_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Count__ratio__stop__predicate.html) are renamed to [`Edge_count_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Edge__count__stop__predicate.html) and [`Edge_count_ratio_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Edge__count__ratio__stop__predicate.html). Older versions have been deprecated. -- Introduced [`Face_count_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Face__count__stop__predicate.html) and [`Face_count_ratio_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Face__count__ratio__stop__predicate.html), which can be used to stop the simplification algorithm based on a desired number of faces in the output, or a ratio between input and output face numbers. +### [Tetrahedral Remeshing](https://doc.cgal.org/6.0/Manual/packages.html#PkgTetrahedralRemeshing) -### [2D Regularized Boolean Set Operations](https://doc.cgal.org/5.6/Manual/packages.html#PkgBooleanSetOperations2) -- Exposed all required member functions of the [`GeneralPolygonWithHoles_2`](https://doc.cgal.org/5.6/Polygon/classGeneralPolygonWithHoles__2.html) concept (e.g., [`clear_outer_boundary()`](https://doc.cgal.org/5.6/Polygon/classGeneralPolygonWithHoles__2.html#a9f5f035047505a2ccab3e68770f51bc6), [`clear_holes()`](https://cgal.geometryfactory.com/CGAL/doc/master/Polygon/classGeneralPolygonWithHoles__2.html#a2a507be648f127ac605da8c670ea2580), and [`clear()`](https://doc.cgal.org/5.6/Polygon/classGeneralPolygonWithHoles__2.html#a2ca4d9b43cc9216c1b2cdb080a915944) ). +- Added a sizing field as new parameter of [`CGAL::tetrahedral_isotropic_remeshing()`](https://doc.cgal.org/6.0/Tetrahedral_remeshing/group__PkgTetrahedralRemeshingRef.html#ga263775c52eeb483a86a16aeb9eb31af0), which can be used to perform non-uniform and adaptive remeshing. +- **Breaking change**: The template parameters of [`CGAL::Tetrahedral_remeshing::Remeshing_cell_base_3`](https://doc.cgal.org/6.0/Tetrahedral_remeshing/classCGAL_1_1Tetrahedral__remeshing_1_1Remeshing__cell__base__3.html) have been modified, reverting changes introduced in CGAL 5.6. +- **Breaking change**: The vertex base of [`CGAL::Tetrahedral_remeshing::Remeshing_vertex_base_3`](https://doc.cgal.org/6.0/Tetrahedral_remeshing/classCGAL_1_1Tetrahedral__remeshing_1_1Remeshing__vertex__base__3.html) must now be a model of the concept [`SimplicialMeshVertexBase_3`](https://doc.cgal.org/6.0/SMDS_3/classSimplicialMeshVertexBase__3.html) (and not only [`TriangulationVertexBase_3`](https://doc.cgal.org/6.0/Triangulation_3/classTriangulationVertexBase__3.html)). + +### [3D Simplicial Mesh Data Structure](https://doc.cgal.org/6.0/Manual/packages.html#PkgSMDS3) + +- **Breaking change**: The template parameters of [`CGAL::Simplicial_mesh_cell_base_3`](https://doc.cgal.org/6.0/SMDS_3/classCGAL_1_1Simplicial__mesh__cell__base__3.html) have been modified to enable passing a geometric traits and a custom cell base class. + +### [3D Mesh Generation](https://doc.cgal.org/6.0/Manual/packages.html#PkgMesh3) + +- **Breaking change**: Removed the concept `TriangleAccessor`, the template parameter `TriangleAccessor`, as well as the class `Triangle_accessor`. These were no longer used for several releases. +- **Breaking change**: Removed the class templates `CGAL::Gray_image_mesh_domain_3`, `CGAL::Implicit_mesh_domain_3`, and `CGAL::Labeled_image_mesh_domain_3`, which were deprecated since CGAL-4.13. + +### [3D Surface Mesh Generation](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMesher3) + +- This package is deprecated and the package [3D Mesh Generation](https://doc.cgal.org/6.0/Manual/packages.html#PkgMesh3) should be used instead. + +### [Surface Mesh Parameterization](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMeshParameterization) + +- **Breaking change**: The method [`CGAL::Surface_mesh_parameterization::LSCM_parameterizer_3`](https://doc.cgal.org/6.0/Surface_mesh_parameterization/classCGAL_1_1Surface__mesh__parameterization_1_1LSCM__parameterizer__3.html) now requires the Eigen library. +- **Breaking change**: CGAL no longer ships its own version of OpenNL. + +### [Surface Mesh](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMesh) + +- **Breaking change**: The return type of [`CGAL::Surface_mesh::property_map()`](https://doc.cgal.org/6.0/Surface_mesh/classCGAL_1_1Surface__mesh.html#afc99c7ea179dc1c21a2ab59ed183184a) has been changed to `std::optional`. + +### [3D Point Set](https://doc.cgal.org/6.0/Manual/packages.html#PkgPointSet3) + +- **Breaking change**: The return type of [`CGAL::Point_set_3::property_map()`](https://doc.cgal.org/6.0/Point_set_3/classCGAL_1_1Point__set__3.html#a571ecc603cd32d78c7effaf86fe120ad) has been changed to `std::optional`. + +### [Shape Detection](https://doc.cgal.org/6.0/Manual/packages.html#PkgShapeDetection) + +- **Breaking change**: Replaced all instances of `boost::shared_ptr` with `std::shared_ptr`. + +### [2D Straight Skeleton and Polygon Offsetting](https://doc.cgal.org/6.0/Manual/packages.html#PkgStraightSkeleton2) + +- **Breaking change**: Replaced all instances of `boost::shared_ptr` with `std::shared_ptr`. +- **Breaking change**: Replaced all instances of `boost::optional` with `std::optional`. diff --git a/Maintenance/public_release/announcement/mailing-beta.eml b/Maintenance/public_release/announcement/mailing-beta.eml index f63a09adc8d..fba33a225f0 100644 --- a/Maintenance/public_release/announcement/mailing-beta.eml +++ b/Maintenance/public_release/announcement/mailing-beta.eml @@ -1,168 +1,301 @@ -Subject: CGAL 5.6 Beta 1 Released, Computational Geometry Algorithms Library +Subject: CGAL 6.0 Beta 1 Released, Computational Geometry Algorithms Library Content-Type: text/plain; charset="utf-8" Body: -The CGAL Open Source Project is pleased to announce the release 5.6 Beta 1 of -CGAL, the Computational Geometry Algorithms Library. +The CGAL Open Source Project is pleased to announce the release +6.0 Beta 1 of CGAL, the Computational Geometry Algorithms Library. -CGAL version 5.6 Beta 1 is a public testing release. It should provide a +CGAL version 6.0 Beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release -of the final version of CGAL 5.6 in July 2023. +of the final version of CGAL 6.0 in July 2024. Besides fixes and general enhancement to existing packages, the -following has changed since CGAL 5.5: +following has changed since CGAL 5.6: General Changes -- Breaking change: Package-specific assertions, preconditions, and - postconditions (such as CGAL_triangulation_assertion) have been - removed. Corresponding CGAL-wide versions (such as CGAL_assertion) - should be used instead. +- CGAL 6.0 is the first release of CGAL that requires a C++ compiler + with the support of C++17 or later. The new list of supported + compilers is: + - Visual C++ 15.9, 16.10, 17.0 (from Visual Studio 2017, 2019 + and 2022) or later + - Gnu g++ 11.4.0 or later (on Linux or macOS) + - LLVM Clang version 15.0.7 or later (on Linux) + - Apple Clang compiler versions 10.0.1, 12.0.5, and 15.0.0 (on + macOS) +- The minimal supported version of Boost is now 1.72.0. +- The CGAL Core library is no longer based on GMP, but on + Boost.Multiprecision. Either GMP backend or Boost backend can be + used. +- All demos are now based on Qt6. +- Breaking change: The CMake file UseCGAL.cmake has been removed from + CGAL. Usages of the CMake variables ${CGAL_USE_FILE} and + ${CGAL_LIBRARIES} must be replaced by a link to the imported target + CGAL::CGAL, for example: + target_link_library(your_target PRIVATE CGAL::CGAL). -Shape Detection (major changes) +Kinetic Space Partition (new package) -- Breaking change: The region growing part of the package have been - reworked to fix design issues introduced with the handling of - FaceGraph models. In particular, the notion of Item has been - introduced to reference an element in the input range of elements. - Region maps now operates on Item and no longer on the value type of - the input range. -- Breaking change: The method update() in the concept RegionType now - returns a Boolean instead of void, that is used inside the class - Region_growing for detecting if the input conditions for the new - region are satisfied. This change affects only user-defined types of - regions. -- Breaking change: The constructors of all models used together with - the region growing algorithm now enable users to provide parameters - through the named parameters mechanism. -- All fitting classes in the region growing framework are now using - better versions of the region conditions, more precise and faster, - including the correct normal orientations. -- Added new models of the concept RegionType for getting linear - regions in a set of 2D and 3D segments and on 2D and 3D polylines. -- Added the class Polyline_graph for extracting a set of polylines - from a face graph, which splits this graph into a set of - user-defined regions. -- Added new shapes to the Region Growing algorithm on a point set: - circles in 2D, spheres in 3D, and cylinders in 3D. +- This package implements kinetic space partition: based on a set of + planar input shapes, the bounding box of the input data is split + into convex volumes. The complexity of the partition can be adjusted + with a single parameter. -2D Straight Skeleton and Polygon Offsetting (major changes) +Kinetic Surface Reconstruction (new package) -- Added weighted straight skeletons: weighted straight skeletons are a - generalization of straight skeletons. Contour edges are assigned a - positive weight, which can be understood as assigning a speed to the - wavefront spawned from the contour edge. -- Added straight skeleton extrusion: this CGAL package now implements - the extrusion of weighted straight skeletons of polygons with holes. - The output is a closed, combinatorially 2-manifold surface triangle - mesh. See also the news entry. +- The package implements a piece-wise planar surface reconstruction + pipeline from point clouds combining methods from the Shape + Detection, Shape Regularization and Kinetic Shape Partition packages + and graph-cut to reconstruct surfaces from point clouds. -Combinatorial Maps, Generalized Maps, and Linear Cell Complex +Basic Viewer (new package) -- Added a version that uses indices instead of handles as dart and - attribute descriptors. As the indices are integers convertible from - and to std::size_t, they can be used as index into vectors which - store properties. To use the index version, Use_index must be - defined and be equal to CGAL::Tag_true in the item class. +- The basic viewer package provides interactive visualization for most + CGAL packages, such as 2D Arrangements, 2D Regularized Boolean + Set-Operations, Linear Cell Complex, 3D Boolean Operations on Nef + Polyhedra, 2D Periodic Triangulations, 3D Point Set, 2D Polygons, 3D + Polyhedral Surface, 2D Straight Skeleton and Polygon Offsetting, + Surface Mesh, 2D Triangulations, 3D Triangulations, 2D Voronoi + Diagrams, and more. The most simple use case of the basic viewer is + the call of the global CGAL::draw() function. There is one such + draw() function for each CGAL package that has a basic viewer. Such + a call opens an interactive window showing the given model and + allowing to navigate in the scene, show or hide some specific cells, + show the interior of the model if any, etc. The Basic_viewer is + based on Qt6. + +Polygon Repair (new package) + +- This package provides algorithms to repair 2D polygons, polygons + with holes, and multipolygons with holes, by selecting faces of the + arrangement of the input using the odd-even heuristic. + +2D and 3D Linear Geometry Kernel + +- Breaking change: Replaced all instances of boost::variant with + std::variant in the intersection functions. +- Breaking change: Replaced all instances of boost::optional with + std::optional in the intersection functions. + +3D Polyhedral Surface + +- The demo of this package, also known as “Polyhedron Demo” has been + renamed “CGAL Lab” and moved to its own package (“Lab”). + +2D and 3D Fast Intersection and Distance Computation (AABB Tree) + +- The AABB tree can now be used with 2D or 3D primitives: + - The concepts AABBGeomTraits and AABBRayIntersectionGeomTraits + have been replaced by AABBGeomTraits_3 and by + AABBRayIntersectionGeomTraits_3, respectively. + - The concepts AABBGeomTraits_2 and + AABBRayIntersectionGeomTraits_2 have been introduced, as the 2D + counterparts. + - The class CGAL::AABB_traits is deprecated and replaced by + CGAL::AABB_traits_3. + - The class CGAL::AABB_traits_2 is introduced as the 2D + counterpart. + - The class CGAL::AABB_segment_primitive has been deprecated and + replaced by the class CGAL::AABB_segment_primitive_3. + - The class CGAL::AABB_triangle_primitive has been deprecated and + replaced by the class CGAL::AABB_triangle_primitive_3. + - The following 2D primitive classes have been added: + CGAL::AABB_segment_primitive_2, + CGAL::AABB_polyline_segment_primitive_2, + CGAL::AABB_triangle_primitive_2, + CGAL::AABB_indexed_triangle_primitive_2. +- Breaking change: The concept AABBTraits now refines the concept + SearchTraits. +- Breaking change: Replaced all instances of boost::optional with + std::optional. 2D Arrangements -- Introduced an overload function template, namely draw(arr), that - renders arrangements based on the Basic_viewer_qt class template. As - of now, only 2D arrangements on the plane induced by (i) - segments, (ii) conics, and (iii) circular arcs or (linear) segments - are supported. -- Improved the traits class template that handles conics, namely - Arr_conic_traits_2. This includes the following: 1. Fixed a couple - of bugs and slightly optimized some functions. 2. Introduced - functionality that approximates conics with polylines. (This is used - to draw conic curves.) 3. Breaking change: Changed the interface to - generate conic curves. In the past, curves where generated directly - using the constructors of the conic and x-monotone conic constructs. - Now, they are constructed via function objects provided by the - traits. This eliminates the constructions of temporary kernels. The - old functionality is obsolete, but still supported for a limited - number of versions. It depends on a static member function of the - traits. In a future version this function will no longer be static, - implying that the old functionality will no longer be supported. -- Introduced functionality that approximates circular segments with - polylines. (This is used to draw conic curves.) +- Breaking change: Replaced all instances of boost::variant with + std::variant. +- Breaking change: The type of the result of point location queries + has been changed to std::variant. Support for the old macro + CGAL_ARR_POINT_LOCATION_VERSION has been removed. +- Breaking change: Eliminated the error-prone C-type casting that was + used to define observers. In general, backward compatibility was + maintained; however, the class template CGAL::Arr_observer has been + replaced by an alias template. (The class CGAL::Arr_observer was + renamed to CGAL::Aos_observer). +- Introduced Arr_dcel, which essentially replaces the former + CGAL::Arr_default_dcel. Backward compatibility was maintained by the + introduction of the alias template CGAL::Arr_default_dcel. + CGAL::Arr_dcel, as opposed to the former CGAL::Arr_default_dcel is + templated (in addition to the geometry traits) by Vertex, Halfedge, + and Face template parameters, and they have default type values. All + this enables the layered extension of DCEL records. +- Fixed a bug in the zone construction code applied to arrangements of + geodesic arcs on a sphere, when inserting an arc that lies on the + identification curve. +- Introduced a new interactive program that demonstrates 2D + arrangements embedded on the sphere called earth. The program (i) + reads a database of all administrative boundaries of the countries + in the world, (ii) displays the globe with all countries and land + covered by water (which is land not covered by countries) on a + window, and (ii) enables interaction with the user. + +3D Envelopes + +- Breaking change: Construct_projected_boundary_2 in EnvelopeTraits_3 + now uses std::variant instead of CGAL::Object. +- Passed the base class of CGAL::Env_plane_traits_3 as a template + parameter with a default value (being the 2D arrangement linear + traits). Similarly, passed the base class of + CGAL::Env_triangle_traits_3 as a template parameter with a default + value (being the 2D arrangement segment traits). + +Combinatorial Maps and Generalized Maps + +- Added the function insert_cell_1_between_two_cells_2() to the + GenericMap concept, which enables users to insert an edge between + two different faces in order to create faces with holes. + +- Added new meshing criterion edge_distance, an upper bound for the + distance from the edge to the 1D feature. + +- Breaking change: the concept MeshEdgeCriteria_3 was modified to + include the new meshing criterion edge_distance. + +Quadtrees, Octrees, and Orthtrees + +- Breaking change: + - Node splitting behavior and per-node data are now customizable + via the Traits class. + - Nodes are now stored as a property map, with properties of each + node accessed by index. + - Nearest neighbors functions only work for Orthtrees which + provide the necessary functionality. + +CGAL and the Boost Graph Library (BGL) + +- Added the function CGAL::remove_all_elements(), which removes + vertices, halfedges, and faces without collecting garbage and + without removing properties. +- Dynamic property maps can now have a default value. +- The class CGAL::Face_filtered_graph now supports patch IDs of any + type and not just faces_size_type. The only requirement is that the + type is hashable. Polygon Mesh Processing -- Added functions - CGAL::Polygon_mesh_processing::region_growing_of_planes_on_faces() - and CGAL::Polygon_mesh_processing::detect_corners_of_regions(), - which enable partitioning a mesh into planar regions using the - region growing algorithm from the Shape Detection package. - -- Added the functions - CGAL::Polygon_mesh_processing::remesh_planar_patches() and - CGAL::Polygon_mesh_processing::remesh_almost_planar_patches(), which - can be used to remesh patches of coplanar faces in a mesh. - - Added the function - CGAL::Polygon_mesh_processing::surface_Delaunay_remeshing(), which - can be used to remesh a surface triangle mesh using the Delaunay - refinement algorithm from the 3D Mesh Generation package. - + CGAL::Polygon_mesh_processing::autorefine_triangle_soup(), which can + be used to refine a soup of triangles such that no pair of triangles + intersects in their interiors. Also added, the function + CGAL::Polygon_mesh_processing::autorefine() operating directly on a + triangle mesh and updating it using the aforementioned function on a + triangle soup. +- Added the class CGAL::Corefinement::Non_manifold_output_visitor, + which can be used in corefinement based functions to deal with + non-manifold outputs. +- Added the option to use a variable sizing field for + CGAL::Polygon_mesh_processing::isotropic_remeshing(), and a sizing + function based on a measure of local curvature for adaptive + remeshing. - Added the function - CGAL::Polygon_mesh_processing::remove_almost_degenerate_faces(), - which can be used to remove badly shaped triangles faces in a mesh. - -- Added the functions - CGAL::Polygon_mesh_processing::does_triangle_soup_self_intersect() - and - CGAL::Polygon_mesh_processing::triangle_soup_self_intersections() to - identify and report self-intersections in a triangle soup, similarly - to existing functions on triangle meshes. - + CGAL::Polygon_mesh_processing::interpolated_corrected_curvatures() + which can be used to compute the mean and Gaussian curvatures, as + well as the principal curvature and directions. - Added the function - CGAL::Polygon_mesh_processing::triangulate_polygons(), which allows - users to triangulate polygon soups. + CGAL::Polygon_mesh_processing::refine_mesh_at_isolevel() which can + be used to refine a polygon mesh along an isocurve. +- Added the function CGAL::Polygon_mesh_processing::add_bbox(), which + enables adding a tight or extended, triangulated or not, bounding + box to a face graph. -- Added a named parameter to - CGAL::Polygon_mesh_processing::smooth_shape() to disable the - scaling, which otherwise aims to compensate volume loss during - smoothing. +2D Triangulations -- Deprecated the overloads of functions - CGAL::Polygon_mesh_processing::triangulate_hole(), - CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(), and - CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole() - which have output iterators for vertices and faces as parameter. - They are replaced by overloads with two additional named parameters. +- Breaking change: the concept TriangulationTraits_2 now requires an + additional functor Compare_xy_2. +3D Triangulations + +- Added three member functions vertices() to the class + CGAL::Triangulation_3. Each of them returns an array containing the + vertices of the given triangulation simplex. + +dD Triangulations + +- Breaking change: CGAL::TDS_full_cell_mirror_storage_policy is now + unsupported in dimension larger than 127. +- Breaking change: Inserting multiple unweighted points in the same + position now keeps the first one, instead of switching to the + latest. This only affects custom point types where not all points in + the same position are equivalent. + +Tetrahedral Remeshing + +- Added a sizing field as new parameter of + CGAL::tetrahedral_isotropic_remeshing(), which can be used to + perform non-uniform and adaptive remeshing. +- Breaking change: The template parameters of + CGAL::Tetrahedral_remeshing::Remeshing_cell_base_3 have been + modified, reverting changes introduced in CGAL 5.6. +- Breaking change: The vertex base of + CGAL::Tetrahedral_remeshing::Remeshing_vertex_base_3 must now be a + model of the concept SimplicialMeshVertexBase_3 (and not only + TriangulationVertexBase_3). + +3D Simplicial Mesh Data Structure + +- Breaking change: The template parameters of + CGAL::Simplicial_mesh_cell_base_3 have been modified to enable + passing a geometric traits and a custom cell base class. 3D Mesh Generation -- Added two new named parameters to the named constructor - CGAL::create_labeled_image_mesh_domain() for automatic detection and - protection of 1D-curves that lie at the intersection of three or - more subdomains extracted from labeled images. -- Added CGAL::Sizing_field_with_aabb_tree, a geometry-aware sizing - field for feature edges in polyhedral domains. -- Added new meshing criterion edge_min_size to avoid subdividing sharp - edges that are shorter than a prescribed size bound. -- Added new meshing criteria facet_min_size and cell_min_size to - prevent Delaunay refinement from creating simplices smaller than a - prescribed bound. -- Deprecated usage of boost parameters in favor of function named - parameters. +- Breaking change: Removed the concept TriangleAccessor, the template + parameter TriangleAccessor, as well as the class Triangle_accessor. + These were no longer used for several releases. +- Breaking change: Removed the class templates + CGAL::Gray_image_mesh_domain_3, CGAL::Implicit_mesh_domain_3, and + CGAL::Labeled_image_mesh_domain_3, which were deprecated since + CGAL-4.13. + +3D Surface Mesh Generation + +- This package is deprecated and the package 3D Mesh Generation should + be used instead. + +Surface Mesh Parameterization + +- Breaking change: The method + CGAL::Surface_mesh_parameterization::LSCM_parameterizer_3 now + requires the Eigen library. +- Breaking change: CGAL no longer ships its own version of OpenNL. + +Surface Mesh + +- Breaking change: The return type of + CGAL::Surface_mesh::property_map() has been changed to + std::optional. + +3D Point Set + +- Breaking change: The return type of + CGAL::Point_set_3::property_map() has been changed to std::optional. + +Shape Detection + +- Breaking change: Replaced all instances of boost::shared_ptr with + std::shared_ptr. + +2D Straight Skeleton and Polygon Offsetting + +- Breaking change: Replaced all instances of boost::shared_ptr with + std::shared_ptr. +- Breaking change: Replaced all instances of boost::optional with + std::optional. -See https://www.cgal.org/2023/06/13/cgal56-beta1/ for a +See https://www.cgal.org/2024/06/21/cgal60-beta1/ for a complete list of changes. -The development of CGAL will then now on the future CGAL-6.0 (planned -for December 2023), with bug-fixes regularly backported to the branches -for CGAL-5.5.x and CGAL-5.6.x. - -CGAL-6.0 will be the first release of CGAL requiring C++17 or later. It -will also support Qt6. - - The CGAL project is a collaborative effort to develop a robust, easy-to-use, and efficient C++ software library of geometric data structures and algorithms, like diff --git a/Maintenance/public_release/scripts/prepare_release b/Maintenance/public_release/scripts/prepare_release index 69c14d86133..889c7e99da3 100755 --- a/Maintenance/public_release/scripts/prepare_release +++ b/Maintenance/public_release/scripts/prepare_release @@ -42,12 +42,12 @@ printf "Copy documentation to doc_html/ and doc_html_online/...\n" [ -d "/srv/CGAL/www/${PUBLIC_RELEASE_NAME#CGAL-}/Manual" ] || mkdir -p "/srv/CGAL/www/${PUBLIC_RELEASE_NAME#CGAL-}/Manual" cp "$PUBLIC_RELEASE_DIR"/*(.) "${RELEASE_CANDIDATES_DIR}/$PUBLIC_RELEASE_NAME" -files=("$MANUAL_TESTS_DIR/$INTERNAL_RELEASE"/output1/*) +files=("$MANUAL_TESTS_DIR/$INTERNAL_RELEASE"/output2/*) if ((${#files[@]} == 0)); then printf "ERROR: documentation files are missing\n" error_code=1 else - rsync -a --exclude xml "$MANUAL_TESTS_DIR/$INTERNAL_RELEASE"/output1/* "$DEST_DIR/doc_html/" + rsync -a --exclude xml "$MANUAL_TESTS_DIR/$INTERNAL_RELEASE"/output2/* "$DEST_DIR/doc_html/" pushd "$DEST_DIR/doc_html/Manual/search" for i in g n c s i; do sed -i "s/..\/BGL$i/..\/BGL\/$i/g" *; done popd diff --git a/Matrix_search/examples/Matrix_search/CMakeLists.txt b/Matrix_search/examples/Matrix_search/CMakeLists.txt index 65a323f2b6e..489663a3b18 100644 --- a/Matrix_search/examples/Matrix_search/CMakeLists.txt +++ b/Matrix_search/examples/Matrix_search/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Matrix_search_Examples) find_package(CGAL REQUIRED) diff --git a/Matrix_search/test/Matrix_search/CMakeLists.txt b/Matrix_search/test/Matrix_search/CMakeLists.txt index a60e4425245..d4f61200d6f 100644 --- a/Matrix_search/test/Matrix_search/CMakeLists.txt +++ b/Matrix_search/test/Matrix_search/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Matrix_search_Tests) find_package(CGAL REQUIRED) diff --git a/Mesh_2/demo/Mesh_2/CMakeLists.txt b/Mesh_2/demo/Mesh_2/CMakeLists.txt index 74c8b7f2d86..4c827ece080 100644 --- a/Mesh_2/demo/Mesh_2/CMakeLists.txt +++ b/Mesh_2/demo/Mesh_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script (and then adapted manually). # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Mesh_2_Demo) find_package(CGAL REQUIRED) diff --git a/Mesh_2/examples/Mesh_2/CMakeLists.txt b/Mesh_2/examples/Mesh_2/CMakeLists.txt index 8a006bf6b5b..1444754e8a0 100644 --- a/Mesh_2/examples/Mesh_2/CMakeLists.txt +++ b/Mesh_2/examples/Mesh_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Mesh_2_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Mesh_2/test/Mesh_2/CMakeLists.txt b/Mesh_2/test/Mesh_2/CMakeLists.txt index aeb7932a526..9ce291f819a 100644 --- a/Mesh_2/test/Mesh_2/CMakeLists.txt +++ b/Mesh_2/test/Mesh_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Mesh_2_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Mesh_2/test/Mesh_2/test_meshing.cpp b/Mesh_2/test/Mesh_2/test_meshing.cpp index ab132707fb9..2654f78aca9 100644 --- a/Mesh_2/test/Mesh_2/test_meshing.cpp +++ b/Mesh_2/test/Mesh_2/test_meshing.cpp @@ -115,7 +115,7 @@ struct Tester2 { std::cerr << "Triangulation restored.\n"; std::cerr << "Number of vertices: " << cdt.number_of_vertices() << "\n\n"; - std::cerr << "2/ Comparaison between refine_Delaunay_mesh_2() and other" + std::cerr << "2/ Comparison between refine_Delaunay_mesh_2() and other" << " possibilities:\n\n"; std::cerr << "Meshing the triangulation with size 0.1, with " diff --git a/Mesh_3/benchmark/Mesh_3/CMakeLists.txt b/Mesh_3/benchmark/Mesh_3/CMakeLists.txt index 50b7730178e..16a0064cfd4 100644 --- a/Mesh_3/benchmark/Mesh_3/CMakeLists.txt +++ b/Mesh_3/benchmark/Mesh_3/CMakeLists.txt @@ -1,55 +1,21 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Mesh_3_benchmark) -# Creates a new CMake option, turned ON by default -option(ACTIVATE_MSVC_PRECOMPILED_HEADERS "Activate precompiled headers in MSVC" - OFF) +find_package(CGAL REQUIRED COMPONENTS ImageIO) -# Macro to add precompiled headers for MSVC -# This function does two things: -# 1. Enable precompiled headers on each file which is listed in "SourcesVar". -# 2. Add the content of "PrecompiledSource" (e.g. "StdAfx.cpp") to "SourcesVar". -macro(ADD_MSVC_PRECOMPILED_HEADER PrecompiledHeader PrecompiledSource - SourcesVar) - if(MSVC AND ACTIVATE_MSVC_PRECOMPILED_HEADERS) - get_filename_component(PrecompiledBasename ${PrecompiledHeader} NAME_WE) - set(Sources ${${SourcesVar}}) - - set_source_files_properties( - ${PrecompiledSource} PROPERTIES COMPILE_FLAGS - "/Yc\"${PrecompiledHeader}\"") - set_source_files_properties( - ${Sources} - PROPERTIES COMPILE_FLAGS - "/Yu\"${PrecompiledHeaders}\" /FI\"${PrecompiledHeader}\"") - # Add precompiled header to SourcesVar - list(APPEND ${SourcesVar} ${PrecompiledSource}) - endif(MSVC AND ACTIVATE_MSVC_PRECOMPILED_HEADERS) -endmacro(ADD_MSVC_PRECOMPILED_HEADER) -# The compiler might need more memory because of precompiled headers -if(MSVC - AND ACTIVATE_MSVC_PRECOMPILED_HEADERS - AND NOT (MSVC_VERSION LESS 1310)) - set(CGAL_C_FLAGS "${CGAL_C_FLAGS} /Zm1000") - set(CGAL_CXX_FLAGS "${CGAL_CXX_FLAGS} /Zm1000") -endif() - -include_directories(../../../Triangulation_3/include) -include_directories(../../../STL_Extension/include) -include_directories(../../../AABB_tree/include) add_definitions(-DCGAL_MESH_3_NO_DEPRECATED_SURFACE_INDEX -DCGAL_MESH_3_NO_DEPRECATED_C3T3_ITERATORS) +# Activate verbose mode? (turned OFF by default) +option(CGAL_ACTIVATE_CONCURRENT_MESH_3 "Activate verbose mode in Mesh_3" OFF) if(MESH_3_VERBOSE) add_definitions(-DCGAL_MESH_3_VERBOSE) endif() -find_package(CGAL REQUIRED COMPONENTS ImageIO) - -# Activate concurrency ? (turned OFF by default) +# Activate concurrency? (turned OFF by default) option(CGAL_ACTIVATE_CONCURRENT_MESH_3 "Activate parallelism in Mesh_3" OFF) # And add -DCGAL_CONCURRENT_MESH_3 if that option is ON @@ -58,8 +24,7 @@ if(CGAL_ACTIVATE_CONCURRENT_MESH_3) find_package(TBB REQUIRED) include(CGAL_TBB_support) else() - option(LINK_WITH_TBB - "Link with TBB anyway so we can use TBB timers for profiling" ON) + option(LINK_WITH_TBB "Link with TBB anyway so we can use TBB timers for profiling" ON) if(LINK_WITH_TBB) find_package(TBB) include(CGAL_TBB_support) @@ -67,19 +32,18 @@ else() endif() # Compilable benchmark -set(BENCHMARK_SOURCE_FILES "concurrency.cpp") -add_msvc_precompiled_header("StdAfx.h" "StdAfx.cpp" BENCHMARK_SOURCE_FILES) -create_single_source_cgal_program(${BENCHMARK_SOURCE_FILES}) +create_single_source_cgal_program("benchmark_mesh_3.cpp") + if(TARGET CGAL::TBB_support) - target_link_libraries(concurrency PUBLIC CGAL::TBB_support) + target_link_libraries(benchmark_mesh_3 PUBLIC CGAL::TBB_support) endif() # Link with Boost.ProgramOptions (optional) find_package(Boost QUIET COMPONENTS program_options) if(Boost_PROGRAM_OPTIONS_FOUND) if(TARGET Boost::program_options) - target_link_libraries(concurrency PRIVATE Boost::program_options) + target_link_libraries(benchmark_mesh_3 PRIVATE Boost::program_options) else() - target_link_libraries(concurrency PRIVATE ${Boost_PROGRAM_OPTIONS_LIBRARY}) + target_link_libraries(benchmark_mesh_3 PRIVATE ${Boost_PROGRAM_OPTIONS_LIBRARY}) endif() endif() diff --git a/Mesh_3/benchmark/Mesh_3/Charting/Performance/generate_performance_benchmark_charts.py b/Mesh_3/benchmark/Mesh_3/Charting/Performance/generate_performance_benchmark_charts.py new file mode 100644 index 00000000000..ad7fdba1192 --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/Charting/Performance/generate_performance_benchmark_charts.py @@ -0,0 +1,161 @@ +#!/usr/bin/python + +import os, sys, subprocess, datetime, time, signal, getopt +import numpy as np +import matplotlib.pyplot as plt + +def main(argv): + + inputdir="" + outputdir="" + commit_hash="" + do_diff=False + diffdir="" + diff_hash="" + try: + opts, args = getopt.getopt(sys.argv[1:], 'i:a:o:c:d:p:') + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt == "-i": + inputdir = arg + elif opt == "-o": + outputdir = arg + elif opt == "-c": + commit_hash = arg + elif opt == "-d": + diff_hash = arg + do_diff = True + elif opt == "-p": + diffdir = arg + + print("Generating performance charts for inputdir =", inputdir) + print("Outputdir =", outputdir) + print("Commit hash =", commit_hash) + print("Do diff =", do_diff) + print("Diff hash =", diff_hash) + print("Diffdir =", diffdir) + + all_metric = { + "Facet_Scan_Time_(second)" : {}, + "Facet_Refine_Time_(second)" : {}, + "Cell_Scan_Time_(second)" : {}, + "Cell_Refine_Time_(second)" : {}, + "Lloyd_Time_(second)" : {}, + "ODT_Time_(second)" : {}, + "Perturber_Time_(second)" : {}, + "Exuder_Time_(second)" : {}, + "Total_Time_(second)" : {}, + "Memory_Peak_(mbytes)" : {}} + + num_input = 0 + for filename in os.listdir(inputdir) : + mesh_id = str(filename.split('.')[0]) + print("perf charting, filename", filename) + new_path = os.path.join(inputdir,filename) + new_file = open(new_path) + is_empty_new = os.path.getsize(new_path) <= 1 + if do_diff : + old_path = os.path.join(diffdir,filename) + old_file = open(old_path) + is_empty_old = os.path.getsize(old_path) <= 1 + for key in all_metric: + if is_empty_new or is_empty_old : + new_val = 0. + old_val = 0. + else : + new_entry = new_file.readline().strip() + old_entry = old_file.readline().strip() + new_val = float(new_entry) if new_entry else 0. + old_val = float(old_entry) if old_entry else 0. + all_metric[key][mesh_id] = [new_val, old_val] + else : + for key in all_metric: + if is_empty_new : + new_val = 0. + else : + new_entry = new_file.readline().strip() + new_val = float(new_entry) if new_entry else 0. + all_metric[key][mesh_id] = [new_val, new_val] + num_input = num_input+1 + + if num_input == 0 : + sys.exit(0) + + # update .pdf chart + date_now = datetime.datetime.now() + date_for_filename = str(date_now.year) +"_"+ str(date_now.month) +"_"+ str(date_now.day) +"_"+ str(date_now.hour) +"h"+ str(date_now.minute) +"mn" + for key in all_metric: + goal = 0 + num_el = range(len(all_metric[key])) + avg_diff_to_goal = 0. + avg = 0. + x1 = [] + x2 = [] + for value in all_metric[key].values() : + avg += value[0] + diff_to_goal = abs(value[1]-goal) - abs(value[0]-goal) + avg_diff_to_goal += diff_to_goal + x1.append(value[0]) + x2.append(value[1]) + avg_diff_to_goal /= float(len(all_metric[key])) + avg /= float(len(all_metric[key])) + + plt.figure(figsize=(8,8)) + if do_diff : + plt.hist(x2, bins=100, color='tab:green', alpha=0.5) + plt.hist(x1, bins=100, color='tab:blue', alpha=0.5) + plt.vlines(x = goal, ymin=plt.ylim()[0], ymax=plt.ylim()[1], linestyles='dashed') + + title = "" + if do_diff : + title += "Diff between " + commit_hash + " and " + diff_hash + " on " + str(num_input) + " meshes" + else : + title += "Benchmarking on " + str(num_input) + " meshes" + + avg_str = str(format(abs(avg), '.4f')) + if key == "Memory_Peak_(mbytes)" : + title += "\nIn average we use up to " + avg_str + " mbytes" + else : + title += "\nIn average we spend " + avg_str + " seconds" + + if do_diff and avg_diff_to_goal == 0. : + title += "\nNo change between the two commits" + elif do_diff : + avg_diff_str = str(format(abs(avg_diff_to_goal), '.4f')) + if key == "Memory_Peak_(mbytes)" : + if avg_diff_to_goal < 0 : + title += "\nIn average we use " + avg_diff_str + " more" + else : + title += "\nIn average we use " + avg_diff_str + " less" + title += " mbytes" + else : + if avg_diff_to_goal < 0 : + title += "\nIn average we get slower by " + else : + title += "\nIn average we get faster " + title += avg_diff_str + " seconds" + + plt.title(title, fontsize=15) + plt.xlabel(key.replace("_"," "), fontsize=14) + plt.ylabel("# of meshes", fontsize=14) + plt.tick_params(axis="x", labelsize=9) + plt.tick_params(axis="y", labelsize=9) + + chart_filename = "" + if do_diff : + chart_filename += "diff_"+commit_hash+"_"+diff_hash+"_"+key+"_"+date_for_filename+".pdf" + else : + chart_filename += "results_"+commit_hash+"_"+key+"_"+date_for_filename+".pdf" + chart_path = os.path.join(outputdir+"/charts",chart_filename) + if os.path.isfile(chart_path) : + os.remove(chart_path) + plt.savefig(chart_path, bbox_inches="tight") + plt.close() + + print("Performance charts have been generated") + + sys.exit() + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/Mesh_3/benchmark/Mesh_3/Charting/Quality/generate_quality_benchmark_charts.py b/Mesh_3/benchmark/Mesh_3/Charting/Quality/generate_quality_benchmark_charts.py new file mode 100644 index 00000000000..1c76c31f1fa --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/Charting/Quality/generate_quality_benchmark_charts.py @@ -0,0 +1,244 @@ +# Copyright (c) 2019-2023 Google LLC (USA). +# All rights reserved. +# +# This file is part of CGAL (www.cgal.org). +# +# $URL$ +# $Id$ +# SPDX-License-Identifier: GPL-3.0-or-later +# +# +# Author(s) : Pierre Alliez +# Michael Hemmer +# Cedric Portaneri +# +#!/usr/bin/python + +import os, sys, subprocess, datetime, time, signal, getopt +import numpy as np +import matplotlib.pyplot as plt + +def main(argv): + + inputdir="" + outputdir="" + commit_hash="" + do_diff=False + diffdir="" + diff_hash="" + try: + opts, args = getopt.getopt(sys.argv[1:], 'i:a:o:c:d:p:') + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt == "-i": + inputdir = arg + elif opt == "-o": + outputdir = arg + elif opt == "-c": + commit_hash = arg + elif opt == "-d": + diff_hash = arg + do_diff = True + elif opt == "-p": + diffdir = arg + + print("Generating quality charts for inputdir =", inputdir) + print("Outputdir =", outputdir) + print("Commit hash =", commit_hash) + print("Do diff =", do_diff) + print("Diff hash =", diff_hash) + print("Diffdir =", diffdir) + + all_metric = { + "Complexity_(#_of_Vertices)" : {}, + "Complexity_(#_of_Facets)" : {}, + "Complexity_(#_of_Cells)" : {}, + "Minimum_Edge_Length_" : {}, + "Mean_Edge_Length_" : {}, + "Maximum_Edge_Length_" : {}, + "Minimum_Facet_Area_" : {}, + "Mean_Facet_Area_" : {}, + "Maximum_Facet_Area_" : {}, + "Total_Area_" : {}, + "Minimum_Facet_Angle_(degree)" : {}, + "Maximum_Facet_Angle_(degree)" : {}, + "Minimum_Cell_Volume_" : {}, + "Mean_Cell_Volume_" : {}, + "Maximum_Cell_Volume_" : {}, + "Total_Volume_" : {}, + "Minimum_Cell_Angle_(degree)" : {}, + "Mean_Cell_Angle_(degree)" : {}, + "Maximum_Cell_Angle_(degree)" : {}, + "Smallest_edge_radius_ratio" : {}, + "Smallest_radius_radius_ratio" : {}, + "Bigget_V_SMA" : {}} + + num_input = 0 + for filename in os.listdir(inputdir) : + mesh_id = str(filename.split('.')[0]) + new_path = os.path.join(inputdir,filename) + print("new_path?", new_path) + new_file = open(new_path) + is_empty_new = os.path.getsize(new_path) <= 1 + print("is_empty_new?", is_empty_new) + if do_diff : + old_path = os.path.join(diffdir,filename) + old_file = open(old_path) + is_empty_old = os.path.getsize(old_path) <= 1 + print("is_empty_old?", is_empty_old) + for key in all_metric : + if is_empty_new or is_empty_old : + new_val = 0. + old_val = 0. + else : + new_entry = new_file.readline().strip() + old_entry = old_file.readline().strip() + new_val = float(new_entry) if new_entry else 0. + old_val = float(old_entry) if old_entry else 0. + print("new entry, val", new_entry, new_val) + print("old entry, val", new_entry, new_val) + all_metric[key][mesh_id] = [new_val, old_val] + else : + for key in all_metric : + if is_empty_new : + new_val = 0. + else : + new_entry = new_file.readline().strip() + new_val = float(new_entry) if new_entry else 0. + all_metric[key][mesh_id] = [new_val, new_val] + num_input = num_input+1 + + if num_input == 0 : + sys.exit(0) + + # update .pdf chart + date_now = datetime.datetime.now() + date_for_filename = str(date_now.year) +"_"+ str(date_now.month) +"_"+ str(date_now.day) +"_"+ str(date_now.hour) +"h"+ str(date_now.minute) +"mn" + for key in all_metric: + goal = 0 + if key == "Minimum_Facet_Angle_(degree)" or key == "Maximum_Facet_Angle_(degree)" : + goal = 60. + elif key == "Minimum_Cell_Angle_(degree)" or key == "Mean_Cell_Angle_(degree)" or key == "Maximum_Cell_Angle_(degree)" : + goal = 70.5 # for a regular tetrahedron + + num_el = range(len(all_metric[key])) + avg_diff_to_goal = 0. + avg = 0. + x1 = [] + x2 = [] + + for value in all_metric[key].values() : + avg += value[0] + diff_to_goal = abs(value[1]-goal) - abs(value[0]-goal) + avg_diff_to_goal += diff_to_goal + x1.append(value[0]) + x2.append(value[1]) + avg_diff_to_goal /= float(len(all_metric[key])) + avg /= float(len(all_metric[key])) + + plt.figure(figsize=(8,8)) + if do_diff : + plt.hist(x2, bins=100, color='tab:green', alpha=0.5) + plt.hist(x1, bins=100, color='tab:blue', alpha=0.5) + plt.vlines(x = goal, ymin=plt.ylim()[0], ymax=plt.ylim()[1], linestyles='dashed') + + title = "" + if do_diff : + title += "Diff between " + commit_hash + " and " + diff_hash + " on " + str(num_input) + " meshes" + else : + title += "Benchmarking on " + str(num_input) + " meshes" + + avg_str = str(format(abs(avg), '.4f')) + + if key == "Complexity_(#_of_Vertices)": + title += "\nIn average we have " + avg_str + " vertices" + elif key == "Complexity_(#_of_Facets)": + title += "\nIn average we have " + avg_str + " facets" + elif key == "Complexity_(#_of_Cells)": + title += "\nIn average we have " + avg_str + " cells" + elif key == "Minimum_Edge_Length_": + title += "\nIn average we have a minimum edge length of " + avg_str + elif key == "Mean_Edge_Length_": + title += "\nIn average we have an average edge length of " + avg_str + elif key == "Maximum_Edge_Length_": + title += "\nIn average we have a maximum edge of length " + avg_str + elif key == "Minimum_Facet_Area_": + title += "\nIn average we have a minimum facet area of " + avg_str + elif key == "Mean_Facet_Area_": + title += "\nIn average we have an average facet area of " + avg_str + elif key == "Maximum_Facet_Area_": + title += "\nIn average we have a maximum facet area of " + avg_str + elif key == "Total_Area_": + title += "\nIn average we have a total area of " + avg_str + elif key == "Minimum_Facet_Angle_(degree)": + title += "\nIn average we have a minimum facet angle of " + avg_str + "°" + elif key == "Maximum_Facet_Angle_(degree)": + title += "\nIn average we have a maximum facet angle of " + avg_str + "°" + elif key == "Minimum_Cell_Volume_": + title += "\nIn average we have a minimum cell volume of " + avg_str + elif key == "Mean_Cell_Volume_": + title += "\nIn average we have an average cell volume of " + avg_str + elif key == "Maximum_Cell_Volume_": + title += "\nIn average we have a maximum cell volume " + avg_str + elif key == "Total_Volume_": + title += "\nIn average we have a total volume of " + avg_str + elif key == "Minimum_Cell_Angle_(degree)": + title += "\nIn average we have a minimum dihedral angle of " + avg_str + "°" + elif key == "Mean_Cell_Angle_(degree)": + title += "\nIn average we have an average dihedral angle of " + avg_str + "°" + elif key == "Maximum_Cell_Angle_(degree)": + title += "\nIn average we have a maximum dihedral angle of " + avg_str + "°" + elif key == "Smallest_edge_radius_ratio": + title += "\nIn average we have a minimum edge radius ratio of " + avg_str + elif key == "Smallest_radius_radius_ratio": + title += "\nIn average we have a minimum radius radius ratio of " + avg_str + elif key == "Bigget_V_SMA": + title += "\nIn average we have a maximum V_SMA of " + avg_str + + if do_diff and avg_diff_to_goal == 0. : + title += "\nNo change between the two commits" + elif do_diff : + avg_diff_str = str(format(abs(avg_diff_to_goal), '.4f')) + if key == "Minimum_Facet_Angle_(degree)" or key == "Maximum_Facet_Angle_(degree)": + if avg_diff_to_goal < 0 : + title += "\nIn average we lose " + else : + title += "\nIn average we gain " + title += avg_diff_str + "° toward 60°" + elif key == "Minimum_Cell_Angle_(degree)" or key == "Mean_Cell_Angle_(degree)" or key == "Maximum_Cell_Angle_(degree)": + if avg_diff_to_goal < 0 : + title += "\nIn average we lose " + else : + title += "\nIn average we gain " + title += avg_diff_str + "° toward 70.5°" + else : + if avg_diff_to_goal < 0 : + title += "\nIn average we get " + avg_diff_str + " more" + else : + title += "\nIn average we get " + avg_diff_str + " less" + title += " " + key.replace("_"," ") + + plt.title(title, fontsize=15) + plt.xlabel(key.replace("_"," "), fontsize=14) + plt.ylabel("# of meshes", fontsize=14) + plt.tick_params(axis="x", labelsize=9) + plt.tick_params(axis="y", labelsize=9) + + chart_filename = "" + if do_diff : + chart_filename += "diff_"+commit_hash+"_"+diff_hash+"_"+key+"_"+date_for_filename+".pdf" + else : + chart_filename += "results_"+commit_hash+"_"+key+"_"+date_for_filename+".pdf" + chart_path = os.path.join(outputdir+"/charts",chart_filename) + if os.path.isfile(chart_path) : + os.remove(chart_path) + plt.savefig(chart_path, bbox_inches="tight") + plt.close() + + print("Quality charts have been generated") + + sys.exit() + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/Mesh_3/benchmark/Mesh_3/Charting/Robustness/generate_robustness_benchmark_charts.py b/Mesh_3/benchmark/Mesh_3/Charting/Robustness/generate_robustness_benchmark_charts.py new file mode 100644 index 00000000000..754ea0da169 --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/Charting/Robustness/generate_robustness_benchmark_charts.py @@ -0,0 +1,127 @@ +#!/usr/bin/python + +import os, sys, subprocess, datetime, time, signal, getopt +import numpy as np +import matplotlib.pyplot as plt + +def main(argv): + + inputdir="" + outputdir="" + commit_hash="" + try: + opts, args = getopt.getopt(sys.argv[1:], 'i:o:c:') + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt == "-i": + inputdir = arg + elif opt == "-o": + outputdir = arg + elif opt == "-c": + commit_hash = arg + + print("Generating performance charts for inputdir =", inputdir) + print("Outputdir =", outputdir) + print("Commit hash =", commit_hash) + + exit_codes = { + 0 : "VALID_SOLID_OUTPUT", + 1 : "INPUT_IS_INVALID", + 2 : "OUTPUT_IS_INVALID", + 3 : "SIGSEGV", + 4 : "SIGABRT", + 5 : "SIGFPE", + 6 : "TIMEOUT" + } + + current_run_data = { + "VALID_SOLID_OUTPUT" : 0, + "INPUT_IS_INVALID" : 0, + "OUTPUT_IS_INVALID" : 0, + "SIGSEGV" : 0, + "SIGABRT" : 0, + "SIGFPE" : 0, + "TIMEOUT" : 0 + } + + filenames_per_codes = {} + for key in current_run_data : + filenames_per_codes[key] = [] + + num_input = 0 + for filename in os.listdir(inputdir) : + print("filename = ", filename) + + f = open(os.path.join(inputdir,filename)) + status = f.readline().strip(); + current_run_data[status] += 1 + filenames_per_codes[status].append(filename.rstrip('.log')) + num_input = num_input+1 + + # sort current_run_data by value + current_run_data = {k: v for k, v in sorted(current_run_data.items(), key=lambda item: item[1], reverse=True)} + + # update chart data files + date_now = datetime.datetime.now() + date = str(date_now.year) +"-"+ str(date_now.month) +"-"+ str(date_now.day) +" "+ str(date_now.hour) +"h"+ str(date_now.minute) +"mn" + + for key_filename in current_run_data: + f = open(os.path.join(outputdir+"/charts_data", key_filename+".txt"), "a+") + f.write(str(current_run_data[key_filename]) + " " + commit_hash + " " + date + "\n") + + print("chart data updated") + + # update .pdf chart + chart = plt.figure(figsize=(10, 7)) + colormap = ["tab:blue","tab:orange","tab:green","tab:red","tab:purple","tab:brown","tab:pink","tab:gray","tab:olive","tab:cyan","b","palegreen", "peachpuff"] + plt.gca().set_prop_cycle('color', colormap) + plt.style.use('tableau-colorblind10') + for key_filename in current_run_data: + + f = open(os.path.join(outputdir+"/charts_data", key_filename+".txt"), "r") + lines = f.readlines() + x_number_values = [] + y_number_values = [] + i = 0 + for line in lines : + if i < (len(lines) - 10) : + i=i+1 + continue + + i=i+1 + words = line.strip().split() + x_number_values.append(words[1]+"\n"+words[2]+"\n"+words[3]) + y_number_values.append(int(words[0])) + plt.plot(x_number_values, y_number_values, marker='o', label=key_filename+": "+str(current_run_data[key_filename])) + + plt.xlabel("Version", fontsize=14) + plt.ylabel("# of mesh", fontsize=14) + plt.tick_params(axis="both", labelsize=9) + plt.title("Benchmarking on " + str(num_input) + " meshes", fontsize=15) + plt.legend(loc='lower left', bbox_to_anchor= (1.01, 0.58), ncol=1, + borderaxespad=0, frameon=False) + + date_for_filename = str(date_now.year) +"-"+ str(date_now.month) +"-"+ str(date_now.day) +"-"+ str(date_now.hour) +"h"+ str(date_now.minute) +"mn" + chart_filename = os.path.join(outputdir+"/charts","benchmarking_version_"+commit_hash+"-"+date_for_filename+".pdf") + if os.path.isfile(chart_filename) : + os.remove(chart_filename) + chart.savefig(chart_filename, bbox_inches="tight") + plt.close(chart) + + print("Robustness charts have been generated") + + # dump filenames per codes + log_dirname = os.path.join(outputdir, "logs/"+commit_hash+"-"+date_for_filename) + if not os.path.exists(log_dirname): + os.mkdir(log_dirname) + for key in filenames_per_codes : + file = open(os.path.join(log_dirname, key+".txt"), "w+") + for filename in filenames_per_codes[key] : + file.write(filename + "\n") + file.close() + + sys.exit() + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/Mesh_3/benchmark/Mesh_3/Charting/benchmarking.sh b/Mesh_3/benchmark/Mesh_3/Charting/benchmarking.sh new file mode 100755 index 00000000000..f52649fe9f1 --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/Charting/benchmarking.sh @@ -0,0 +1,192 @@ +#!/bin/bash + +# ################################################################################################### +# # INTRODUCTION +# ################################################################################################### + +# This script is meant to benchmark Mesh_3 over a directory of data files (e.g. Thingi10k/raw_meshes) +# with unique names. It checks a number of metrics in 3 categories: Robustness (did it finish without +# errors, and did it produce a valid result?), Performance (how long did it take to run?), and Quality +# (how good is the result mesh?). +# +# This script gives access to the mesh criteria for convenience, but all the other parameters +# are fixed and chosen two configuration files. +# +# If `benchmark_mesh_3.cpp` is in parallel mode, you should use a single thread. +# You also probably don't want to use "BENCHMARK_WITH_1_TO_MAX_THREADS", so be sure it's off. +# +# ################################################################################################### +# # QUICK START +# ################################################################################################### +# +# Set up your preferences in the files: +# - CGAL_root/Mesh_3/benchmark/Mesh_3/benchmarking_config.h (Mesh_3 options) +# - CGAL_root/Mesh_3/benchmark/Mesh_3/concurrent_mesher_config.cfg (parallel options) +# +# Compile benchmark_mesh_3.cpp in a folder called `build-release` +# Go to Mesh_3/benchmark/Mesh_3/Charting +# +# Call: +# sh benchmarking.sh $1 ... $12 +# Arguments: +# $1: directory containing the Mesh_3 project (i.e. CGAL_root) +# $2: directory containing the input data folder (e.g. "~/Data/Thingi10k/raw_meshes") +# $3: directory containing the output results (recommended to be CGAL_root/Mesh_3/benchmark/Mesh_3/Charting) +# $4: facet size +# $5: facet distance +# $6: facet angle +# $7: cell size +# $8: cell radius-edge ratio +# $9: timeout value (in seconds) +# $10: number of threads used (runs multiple data in parallel. Do NOT use if benching parallel mode!!) +# $11: test identifier (e.g. hash of the last commit) +# $12: test identifier of a previous test, to perform the difference with ${11} [optional] +# +# Find the result in the output_dir/charts. +# +# ################################################################################################### +# # SCRIPT DETAILS +# ################################################################################################### + +# The script generates data by calling `run_benchmark.py`, which runs `benchmark_mesh_3.cpp`. +# The data is written in an XML file (see the macro CGAL_MESH_3_SET_PERFORMANCE_DATA +# and the file benchmark.xml). One XML file per input data. +# The XML file is parsed by the scripts `generate_[robustness|performance|quality]_benchmark_charts.py` +# to generate individual charts for each metric, which are then merged together at the end +# of this script. +# +# To add a new metric to the benchmark, one must: +# - Add it into the benchmark.xml +# - Measure it (either in Mesh_3/include, or in benchmark_mesh_3.cpp) and log it with the macro +# CGAL_MESH_3_SET_PERFORMANCE_DATA. +# - Parse it and plot it in the corresponding script (e.g. generate_robustness_benchmark_charts.py) +# - change the "tail -n" at the end of this file, and the "3x10" (layout of the final chart) + +# ################################################################################################### +# # TODO +# ################################################################################################### + +# - Make it work for other OS +# - Other metrics (edge radius ratio, Hausdorff distance) + +# -------------------------------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------------------- + +# $1: directory containing the Mesh_3 project +# $2: directory containing the output results +# $3: facet size +# $4: facet distance +# $5: facet angle +# $6: cell size +# $7: cell radius-edge ratio +# $8: timeout value (in seconds) +# $9: test identifier (e.g. hash of the last commit) +# $10: the input file path +function compute_benchmark_data() { + filename=$(basename -- "${10}") + filename="${filename%.*}" + + # print filename: + echo "param #1 (directory containing the Mesh_3 project): " $1 + echo "param #2 (directory containing the output results): " $2 + echo "param #3 (facet size): " $3 + echo "param #4 (facet distance): " $4 + echo "param #5 (facet angle): " $5 + echo "param #6 (cell size): " $6 + echo "param #7 (cell radius-edge ratio): " $7 + echo "param #8 (timeout value): " $8 + echo "param #9 (test ID): " $9 + echo "param #10 (the input file path): " ${10} + + python3 $1/Mesh_3/benchmark/Mesh_3/Charting/run_benchmark.py \ + --exec $1/Mesh_3/benchmark/Mesh_3/build-release/benchmark_mesh_3 \ + -i ${10} \ + --facet_size $3 --facet_approx $4 --facet_angle $5 \ + --cell_size $6 --cell_shape $7 -t $8 \ + --out $2 \ + --test_ID $9 \ + > $2/logs/$9/$filename.log + +} +export -f compute_benchmark_data + +echo "param #1 (directory containing the Mesh_3 project): " $1 +echo "param #2 (directory containing the input data folder): " $2 +echo "param #3 (directory containing the output results): " $3 +echo "param #4 (facet size): " $4 +echo "param #5 (facet distance): " $5 +echo "param #6 (facet angle): " $6 +echo "param #7 (cell size): " $7 +echo "param #8 (cell radius-edge ratio): " $8 +echo "param #9 (timeout value): " $9 +echo "param #10 (number of threads used): " ${10} +echo "param #11 (test ID): " ${11} +echo "param #12 (another test ID, to perform the difference with ${11}): " ${12} + +echo "---------------------------------" + +echo $# "argument(s) provided." + +if [[ $# -lt 11 ]]; then + echo "Expected 12 arguments, see list above." + exit 1 +fi + +# just for convenience: remove everything +# rm $3/*.mesh +# rm -rf $3/Robustness/logs +# rm -rf $3/Robustness/results +# rm -rf $3/Robustness/charts_data +# rm -rf $3/Robustness/charts +# rm -rf $3/Quality/logs +# rm -rf $3/Quality/results +# rm -rf $3/Quality/charts +# rm -rf $3/Performance/logs +# rm -rf $3/Performance/results +# rm -rf $3/Performance/charts +# rm -rf $3/logs +# rm -rf $3/charts +# exit + +rm -rf $3/Robustness/logs/${11} +rm -rf $3/Robustness/results/${11} +rm -rf $3/Quality/logs/${11} +rm -rf $3/Quality/results/${11} +rm -rf $3/Performance/logs/${11} +rm -rf $3/Performance/results/${11} + +mkdir -p $3/Robustness/logs/${11} +mkdir -p $3/Robustness/results/${11} +mkdir -p $3/Robustness/charts_data +mkdir -p $3/Robustness/charts +mkdir -p $3/Quality/logs/${11} +mkdir -p $3/Quality/results/${11} +mkdir -p $3/Quality/charts +mkdir -p $3/Performance/logs/${11} +mkdir -p $3/Performance/results/${11} +mkdir -p $3/Performance/charts +mkdir -p $3/logs/${11} +mkdir -p $3/charts + +rm $3/Robustness/results/${11}/* # only for that one, others need to keep their results in case of diff + +find $2 -mindepth 1 | parallel -j${10} compute_benchmark_data $1 $3 $4 $5 $6 $7 $8 $9 ${11} ::: + +python3 $1/Mesh_3/benchmark/Mesh_3/Charting/Robustness/generate_robustness_benchmark_charts.py -i $3/Robustness/results/${11} -o $3/Robustness -c ${11} + +if [ -z "${12}" ]; then + python3 $1/Mesh_3/benchmark/Mesh_3/Charting/Performance/generate_performance_benchmark_charts.py -i $3/Performance/results/${11} -o $3/Performance -c ${11}; +else + python3 $1/Mesh_3/benchmark/Mesh_3/Charting/Performance/generate_performance_benchmark_charts.py -i $3/Performance/results/${11} -o $3/Performance -c ${11} -p $3/Performance/results/${12} -d ${12}; +fi + +if [ -z "${12}" ]; then + python3 $1/Mesh_3/benchmark/Mesh_3/Charting/Quality/generate_quality_benchmark_charts.py -i $3/Quality/results/${11} -o $3/Quality -c ${11}; +else + python3 $1/Mesh_3/benchmark/Mesh_3/Charting/Quality/generate_quality_benchmark_charts.py -i $3/Quality/results/${11} -o $3/Quality -c ${11} -p $3/Quality/results/${12} -d ${12}; +fi + +charts_path="$(ls "$3/Robustness/charts"/* -dArt | tail -n 1) $(ls "$3/Performance/charts"/* -dArt | tail -n 10) $(ls "$3/Quality/charts"/* -dArt | tail -n 22)" + +pdfjam --nup 3x11 $charts_path --outfile $3/charts/results_${11}_${12}_$(date '+%Y-%m-%d_%H:%M:%S').pdf diff --git a/Mesh_3/benchmark/Mesh_3/Charting/run_benchmark.py b/Mesh_3/benchmark/Mesh_3/Charting/run_benchmark.py new file mode 100755 index 00000000000..de6721d43fa --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/Charting/run_benchmark.py @@ -0,0 +1,269 @@ +#!/usr/bin/python + +import os, sys, subprocess, datetime, time, signal, getopt + +import xml.etree.ElementTree as ET +from xml.etree.ElementTree import XMLParser + +#################################################################################################### +def signal_handler(signum, frame): + raise Exception("Timed out!") + +#################################################################################################### +def run_benchmark(execname, filename, facet_size, facet_approx, facet_angle, cell_size, cell_shape, max_time, test_ID, outpath): + + exit_codes = { + 0 : "VALID_SOLID_OUTPUT", + 1 : "INPUT_IS_INVALID", + 2 : "OUTPUT_IS_INVALID", + 3 : "SIGSEGV", + 4 : "SIGABRT", + 5 : "SIGFPE", + 6 : "TIMEOUT" + } + + raw_filename = os.path.splitext(os.path.basename(filename))[0] + xml_filename = outpath + "/logs/" + test_ID + "/" + raw_filename + ".xml" + print("xml_filename = ", xml_filename) + + exit_code = 0 + output = "" + cmd = ("/usr/bin/time", "-v", execname, xml_filename, filename, facet_size, facet_approx, facet_angle, cell_size, cell_shape) + + print("cmd = ", cmd) + + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, start_new_session=True) + + try: + outs, errs = proc.communicate(timeout=int(max_time)) + exit_code = proc.returncode + output = outs.decode("utf-8") + errs.decode("utf-8") + + print("output = ", output) + + for output_line in output.split("\n"): + if output_line == "Command terminated by signal 11": + exit_code = 3 + continue + elif output_line == "Command terminated by signal 6": + exit_code = 4 + continue + elif output_line == "Command terminated by signal 8": + exit_code = 5 + continue + + except subprocess.TimeoutExpired: + os.killpg(os.getpgid(proc.pid), signal.SIGTERM) + exit_code = 6 + output = "process ran too long" + + print("EXIT CODE: ", exit_codes[exit_code]) + + outfile = outpath + "/Robustness/results/" + test_ID + "/" + raw_filename + ".txt" + print("writing to", outfile) + file = open(outfile, "w") + file.write(exit_codes[exit_code]) + file.close() + + return exit_code + +#################################################################################################### +def parse_xml_file(filename, tag): + tree = ET.parse(filename) + root = tree.getroot() + + elems = root.findall(f'.//{tag}') + if len(elems) == 0: + print("Error: no elements found for ", tag) + return sys.exit(1) + + elem = elems[0] # take the first + return elem.text.strip() + +#################################################################################################### +def main(argv): + execname="" + filename="" + facet_size="" + facet_approx="" + facet_angle="" + cell_size="" + cell_shape="" + max_time="" + test_ID="" + outpath="" + try: + opts, args = getopt.getopt(sys.argv[1:], 'i:t:', ["exec=", "facet_size=", "facet_approx=", "facet_angle=", "cell_size=", "cell_shape=", "test_ID=", "out="]) + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt == "--exec": # executable + execname = arg + elif opt == "-i": # filename + filename = arg + elif opt == "--facet_size": + facet_size = arg + elif opt == "--facet_approx": + facet_approx = arg + elif opt == "--facet_angle": + facet_angle = arg + elif opt == "--cell_size": + cell_size = arg + elif opt == "--cell_shape": + cell_shape = arg + elif opt == "-t": + max_time = arg + elif opt == "--test_ID": + test_ID = arg + elif opt == "--out": # output file + outpath = arg + + print("execname = ", execname) + print("filename = ", filename) + print("facet_size = ", facet_size) + print("facet_approx = ", facet_approx) + print("facet_angle = ", facet_angle) + print("cell_size = ", cell_size) + print("cell_shape = ", cell_shape) + print("max_time = ", max_time) + print("test_ID = ", test_ID) + print("outpath = ", outpath) + + exit_code = run_benchmark(execname, filename, facet_size, facet_approx, facet_angle, cell_size, cell_shape, max_time, test_ID, outpath) + + # if the exit code is different from 0, then there is nothing to analyze + if exit_code != 0: + sys.exit(exit_code) + + raw_filename = os.path.splitext(os.path.basename(filename))[0] + xml_filename = outpath + "/logs/" + test_ID + "/" + raw_filename + ".xml" + + # Parse the XML output to extract performance and quality metrics + print("parsing", xml_filename) + + parser = XMLParser(encoding="utf-8") + try: + ET.parse(xml_filename, parser) + print("XML is valid") + except Exception as e: + print("XML is invalid -", e) + + # --- Performance + perf_results_filename = outpath + "/Performance/results/" + test_ID + "/" + raw_filename + ".txt" + perf_results = open(perf_results_filename, "w") + + # Refinement + facet_scan_time = parse_xml_file(xml_filename, "Facets_scan_time") + facet_refine_time = parse_xml_file(xml_filename, "Facets_refine_time") + cell_scan_time = parse_xml_file(xml_filename, "Cells_scan_time") + cell_refine_time = parse_xml_file(xml_filename, "Cells_refine_time") + + # Optimisation + lloyd_optim_time = parse_xml_file(xml_filename, "Lloyd_optim_time") + odt_optim_time = parse_xml_file(xml_filename, "Odt_optim_time") + perturber_optim_time = parse_xml_file(xml_filename, "Perturber_optim_time") + exuder_optim_time = parse_xml_file(xml_filename, "Exuder_optim_time") + + # Total + total_time = parse_xml_file(xml_filename, "Total_time") + + # Memory + memory = parse_xml_file(xml_filename, "Mem") + + perf_results.write(facet_scan_time + "\n") + perf_results.write(facet_refine_time + "\n") + perf_results.write(cell_scan_time + "\n") + perf_results.write(cell_refine_time + "\n") + perf_results.write(lloyd_optim_time + "\n") + perf_results.write(odt_optim_time + "\n") + perf_results.write(perturber_optim_time + "\n") + perf_results.write(exuder_optim_time + "\n") + perf_results.write(total_time + "\n") + perf_results.write(memory + "\n") + + perf_results.close() + + # --- Quality + qual_results_filename = outpath + "/Quality/results/" + test_ID + "/" + raw_filename + ".txt" + qual_results = open(qual_results_filename, "w") + + number_of_vertices = parse_xml_file(xml_filename, "V") + number_of_facets = parse_xml_file(xml_filename, "F") + number_of_cells = parse_xml_file(xml_filename, "C") + + min_edge_size = parse_xml_file(xml_filename, "Minimum_edge_length") + mean_edge_size = parse_xml_file(xml_filename, "Mean_edge_length") + max_edge_size = parse_xml_file(xml_filename, "Maximum_edge_length") + min_facet_size = parse_xml_file(xml_filename, "Minimum_facet_area") + mean_facet_size = parse_xml_file(xml_filename, "Mean_facet_area") + max_facet_size = parse_xml_file(xml_filename, "Maximum_facet_area") + total_area = parse_xml_file(xml_filename, "Total_area") + # min_facet_distance = parse_xml_file(xml_filename, "Min_facet_distance") + # mean_facet_distance = parse_xml_file(xml_filename, "Mean_facet_distance") + # max_facet_distance = parse_xml_file(xml_filename, "Mean_facet_distance") + min_facet_angle = parse_xml_file(xml_filename, "Minimum_facet_angle") + max_facet_angle = parse_xml_file(xml_filename, "Maximum_facet_angle") + min_cell_size = parse_xml_file(xml_filename, "Minimum_cell_volume") + mean_cell_size = parse_xml_file(xml_filename, "Mean_cell_volume") + max_cell_size = parse_xml_file(xml_filename, "Maximum_cell_volume") + total_volume = parse_xml_file(xml_filename, "Total_volume") + min_cell_shape = parse_xml_file(xml_filename, "Minimum_dihedral_angle") + mean_cell_shape = parse_xml_file(xml_filename, "Mean_dihedral_angle") + max_cell_shape = parse_xml_file(xml_filename, "Maximum_dihedral_angle") + smallest_edge_radius_ratio = parse_xml_file(xml_filename, "Smallest_edge_radius_ratio") + smallest_radius_radius_ratio = parse_xml_file(xml_filename, "Smallest_radius_radius_ratio") + biggest_v_sma = parse_xml_file(xml_filename, "Biggest_V_SMA") + + print("number_of_vertices = ", number_of_vertices) + print("number_of_facets = ", number_of_facets) + print("number_of_cells = ", number_of_cells) + print("min_edge_size = ", min_edge_size) + print("mean_edge_size = ", mean_edge_size) + print("max_edge_size = ", max_edge_size) + print("min_facet_size = ", min_facet_size) + print("mean_facet_size = ", mean_facet_size) + print("max_facet_size = ", max_facet_size) + print("total_area = ", total_area) + # print("min_facet_distance = ", min_facet_distance) + # print("mean_facet_distance = ", mean_facet_distance) + # print("max_facet_distance = ", max_facet_distance) + print("min_facet_angle = ", min_facet_angle) + print("max_facet_angle = ", max_facet_angle) + print("min_cell_size = ", min_cell_size) + print("mean_cell_size = ", mean_cell_size) + print("max_cell_size = ", max_cell_size) + print("total_volume = ", total_volume) + print("min_cell_shape = ", min_cell_shape) + print("mean_cell_shape = ", mean_cell_shape) + print("max_cell_shape = ", max_cell_shape) + print("smallest_edge_radius_ratio = ", smallest_edge_radius_ratio) + print("smallest_radius_radius_ratio = ", smallest_radius_radius_ratio) + print("biggest_v_sma = ", biggest_v_sma) + + qual_results.write(number_of_vertices + "\n") + qual_results.write(number_of_facets + "\n") + qual_results.write(number_of_cells + "\n") + qual_results.write(min_edge_size + "\n") + qual_results.write(mean_edge_size + "\n") + qual_results.write(max_edge_size + "\n") + qual_results.write(min_facet_size + "\n") + qual_results.write(mean_facet_size + "\n") + qual_results.write(max_facet_size + "\n") + qual_results.write(total_area + "\n") + qual_results.write(min_facet_angle + "\n") + qual_results.write(max_facet_angle + "\n") + qual_results.write(min_cell_size + "\n") + qual_results.write(mean_cell_size + "\n") + qual_results.write(max_cell_size + "\n") + qual_results.write(total_volume + "\n") + qual_results.write(min_cell_shape + "\n") + qual_results.write(mean_cell_shape + "\n") + qual_results.write(max_cell_shape + "\n") + qual_results.write(smallest_edge_radius_ratio + "\n") + qual_results.write(smallest_radius_radius_ratio + "\n") + qual_results.write(biggest_v_sma + "\n") + + qual_results.close() + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/Mesh_3/benchmark/Mesh_3/StdAfx.cpp b/Mesh_3/benchmark/Mesh_3/StdAfx.cpp deleted file mode 100644 index 15668dcadef..00000000000 --- a/Mesh_3/benchmark/Mesh_3/StdAfx.cpp +++ /dev/null @@ -1,2 +0,0 @@ -// Build the precompiled headers. -#include "StdAfx.h" \ No newline at end of file diff --git a/Mesh_3/benchmark/Mesh_3/StdAfx.h b/Mesh_3/benchmark/Mesh_3/StdAfx.h deleted file mode 100644 index e7ee9da0a03..00000000000 --- a/Mesh_3/benchmark/Mesh_3/StdAfx.h +++ /dev/null @@ -1,273 +0,0 @@ -#ifndef STDAFX_H -#define STDAFX_H - -#include -#include -#include - -// STL -#include -#include -#include -#include -#include -#include -#include -#include - -// Windows -#include - -// Boost -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// CGAL -//#include -//#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -//#include -#include -#include -//#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -//#include -//#include -//#include -//#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -#include -#include -#include -//#include - -// Mesh_3 -/*#include -#include -#include -#include -#include -#include -#include */ - -#endif //STDAFX_H diff --git a/Mesh_3/benchmark/Mesh_3/benchmark_config.h b/Mesh_3/benchmark/Mesh_3/benchmark_config.h new file mode 100644 index 00000000000..0416e8abf93 --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/benchmark_config.h @@ -0,0 +1,123 @@ +//#define CHECK_MEMORY_LEAKS_ON_MSVC +#if defined(CHECK_MEMORY_LEAKS_ON_MSVC) && defined(_MSC_VER) + #define _CRTDBG_MAP_ALLOC + #include + #include +#endif + +// Without TBB_USE_THREADING_TOOL Intel Inspector XE will report false positives in Intel TBB +// (https://www.intel.com/content/www/us/en/developer/articles/technical/compiler-settings-for-threading-error-analysis-in-intel-inspector-xe.html) +#ifdef _DEBUG +# define TBB_USE_THREADING_TOOL +#endif + +#include +#include + +// ========================================================================== +// BENCHMARK GENERAL PARAMETERS +// ========================================================================== + +// #define CGAL_MESH_3_BENCHMARK_EXPORT_TO_MAYA +#define CGAL_MESH_3_BENCHMARK_EXPORT_TO_MESH + +// ========================================================================== +// MESH_3 GENERAL PARAMETERS +// ========================================================================== + +// #define CGAL_MESH_3_POLYHEDRON_WITH_FEATURES +// #define CGAL_MESH_3_IMPLICIT_WITH_FEATURES + +// #define CGAL_MESH_3_USE_OLD_SURFACE_RESTRICTED_DELAUNAY_UPDATE // WARNING: VERY SLOW +#define CGAL_MESH_3_INITIAL_POINTS_NO_RANDOM_SHOOTING + +// #define CGAL_MESH_3_BENCHMARK_LLOYD +// #define CGAL_MESH_3_BENCHMARK_ODT +// #define CGAL_MESH_3_BENCHMARK_PERTURB +// #define CGAL_MESH_3_BENCHMARK_EXUDE +// #define CGAL_MESH_3_MANIFOLD + +// #define CGAL_MESH_3_VERBOSE +// #define CGAL_MESH_3_PERTURBER_VERBOSE +// #define CGAL_MESH_3_PERTURBER_HIGH_VERBOSITY +// #define CGAL_MESH_3_EXUDER_VERBOSE +// #define CGAL_MESH_3_EXUDER_HIGH_VERBOSITY +// #define CGAL_MESH_3_VERY_VERBOSE +// #define CGAL_MESHES_DEBUG_REFINEMENT_POINTS +// #define CGAL_MESH_3_OPTIMIZER_VERBOSE + +#define CGAL_MESH_3_PROFILING +// #define CHECK_AND_DISPLAY_THE_NUMBER_OF_BAD_ELEMENTS_IN_THE_END + +// ========================================================================== +// INPUTS +// ========================================================================== + +const char* const BENCHMARK_INPUTS_FILENAME = "benchmark_inputs.txt"; + +const bool USE_RELATIVE_CRITERIA_VALUES = true; // relative to the bbox's diagonal +const double DEFAULT_FACE_SIZE = 100; // can be relative +const double DEFAULT_FACE_APPROX = 200; // can be relative +const double DEFAULT_FACE_ANGLE = 25; // cannot be relative +const double DEFAULT_CELL_SIZE = 100; // can be relative +const double DEFAULT_CELL_RADIUS_RATIO = 3; // cannot be relative + +// ========================================================================== +// CONCURRENCY +// ========================================================================== + +#ifdef CGAL_CONCURRENT_MESH_3 + +# include + +# ifndef CGAL_LINKED_WITH_TBB +# pragma message(" : Warning: CGAL_LINKED_WITH_TBB not defined: EVERYTHING WILL BE SEQUENTIAL.") +# endif + +// # define BENCHMARK_WITH_1_TO_MAX_THREADS + +// # define CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE // default behavior +// # define CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE +// # define CGAL_MESH_3_IF_UNSORTED_QUEUE_JUST_SORT_AFTER_SCAN // recommended +// # define CGAL_PARALLEL_MESH_3_DO_NOT_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE // not recommended + + // ========================================================================== + // Verbose + // ========================================================================== + +# define CGAL_CONCURRENT_MESH_3_VERBOSE +# define CGAL_CONCURRENT_MESH_3_VERY_VERBOSE + + // ========================================================================== + // Concurrency config + // ========================================================================== + + const char* const CONCURRENT_MESHER_CONFIG_FILENAME = "concurrent_mesher_config.cfg"; + + // ===================== + // Worksharing strategy + // ===================== + +// #define CGAL_MESH_3_LOAD_BASED_WORKSHARING // Not recommended + + // ========================================================================== + // Profiling + // ========================================================================== + + // For profiling, etc. +# define CGAL_CONCURRENT_MESH_3_PROFILING +// # define CGAL_DEBUG_FORCE_SEQUENTIAL_MESH_REFINEMENT + +#include + +// ========================================================================== +// SEQUENTIAL +// ========================================================================== + +#else // !CGAL_CONCURRENT_MESH_3 + +// # define CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE // default behavior +// # define CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE +// # define CGAL_MESH_3_IF_UNSORTED_QUEUE_JUST_SORT_AFTER_SCAN // recommended + +#endif // CGAL_CONCURRENT_MESH_3 \ No newline at end of file diff --git a/Mesh_3/benchmark/Mesh_3/benchmark_inputs.txt b/Mesh_3/benchmark/Mesh_3/benchmark_inputs.txt new file mode 100644 index 00000000000..e1af7cfed3d --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/benchmark_inputs.txt @@ -0,0 +1,267 @@ +# Input: +# Filename - facet_size - facet_approx - face_angle - cell_size - cell_shape - iterations + +######################################################### +##### Benchmark MAX (warning: requires a lot of RAM!) +######################################################### +#meshes/elephant.off 0.0068 0.002 25 0.002 3 1 +#meshes/fandisk.off 0.0068 0.003 25 0.003 3 1 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 25 0.0015 3 1 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.002 25 0.003 3 1 +#Klein_function 0.0068 0.01 25 0.03 3 1 +#Tanglecube_function 0.0068 0.005 25 0.025 3 1 +#Sphere_function 0.0068 0.003 25 0.01 3 1 +#Thin_cylinder_function 0.0068 0.001 25 0.002 3 1 +#Pancake_function 0.0068 0.007 25 0.01 3 1 +#meshes/elephant.off 0.0068 0.002 25 0.002 3 2 +#meshes/fandisk.off 0.0068 0.003 25 0.003 3 2 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 25 0.0015 3 2 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.002 25 0.003 3 2 +#Klein_function 0.0068 0.01 25 0.03 3 2 +#Tanglecube_function 0.0068 0.005 25 0.025 3 2 +#meshes/cheese.off 0.0068 0.002 25 0.002 3 1 + +######################################################### +##### Benchmark for refinement + optimization +######################################################### +#meshes/elephant.off 0.05 0.04 25 0.04 3 100 +#meshes/elephant.off 0.01 0.004 25 0.004 3 1000 +#meshes/elephant.off 0.0068 0.002 25 0.0025 3 10 # typical timing (11 thr): 4.4 2.3 9.9 +#meshes/elephant.off 0.0068 0.002 25 0.0025 3 10000 +#meshes/fandisk.off 0.0068 0.003 25 0.006 3 1 # typical timing (11 thr): 2.4 1.0 2.9 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 25 0.003 3 1 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.003 25 0.006 3 1 +#meshes/cheese.off 0.0068 0.002 25 0.002 3 1 +#Klein_function 0.0068 0.01 25 0.06 3 1 +#Pancake_function 0.0068 0.02 25 0.02 3 1 +#Tanglecube_function 0.0068 0.007 25 0.035 3 1 +#Sphere_function 0.0068 0.006 25 0.02 3 1 +#Thin_cylinder_function 0.0068 0.002 25 0.004 3 1 + +######################################################### +##### Benchmark according to number of elements +######################################################### +#meshes/elephant.off 0.0068 0.006 25 0.006 3 10 +#meshes/elephant.off 0.0068 0.005 25 0.005 3 10 + +######################################################### +##### Middle class +######################################################### +#Klein_function 0.0068 0.005 25 2.02 3 1 +#meshes/elephant.off 0.0068 0.005 25 0.005 3 1 + +######################################################### +##### A few seconds +######################################################### +Klein_function 0.0068 0.02 25 0.05 3 10 +meshes/elephant.off 0.0068 0.003 25 0.003 3 1 +meshes/elephant.off 0.0068 0.008 25 0.008 3 2 +meshes/cheese.off 0.0068 0.005 25 0.005 3 1 + +######################################################### +##### Instant +######################################################### +Klein_function 0.0068 0.2 25 0.5 3 1 +meshes/elephant.off 0.0068 0.03 25 0.03 3 5 +meshes/elephant.off 0.0068 0.05 25 0.05 3 5 +meshes/elephant.off 0.0068 0.068 25 0.068 3 1500 +meshes/elephant.off 0.0068 2.68 25 2.68 3 150 +meshes/elephant.off 0.0068 1.68 25 1.68 3 150 +meshes/fandisk.off 0.0068 2.68 25 2.68 3 150 +meshes/fandisk.off 0.0068 1.68 25 1.68 3 150 +meshes/fandisk.off 0.0068 0.05 25 0.05 3 1 +meshes/elephant.off 0.0200 0.05 25 0.25 3 2 + +######################################################### +##### Benchmark for TOMS article +######################################################### +meshes/elephant.off 0.0068 0.002 25 0.002 3 1 +meshes/elephant.off 0.0068 0.003 25 0.003 3 1 +meshes/elephant.off 0.0068 0.004 25 0.004 3 1 +meshes/elephant.off 0.0068 0.005 25 0.005 3 1 +meshes/elephant.off 0.0068 0.006 25 0.006 3 1 +meshes/elephant.off 0.0068 0.007 25 0.007 3 1 +meshes/elephant.off 0.0068 0.008 25 0.008 3 1 +meshes/elephant.off 0.0068 0.010 25 0.010 3 1 +meshes/fandisk.off 0.0068 0.003 25 0.003 3 1 +meshes/fandisk.off 0.0068 0.0035 25 0.0035 3 1 +meshes/fandisk.off 0.0068 0.004 25 0.004 3 1 +meshes/fandisk.off 0.0068 0.005 25 0.005 3 1 +meshes/fandisk.off 0.0068 0.006 25 0.006 3 1 +meshes/fandisk.off 0.0068 0.007 25 0.007 3 1 +meshes/fandisk.off 0.0068 0.008 25 0.008 3 1 +meshes/fandisk.off 0.0068 0.010 25 0.010 3 1 + +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 25 0.0015 3 1 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.002 25 0.002 3 1 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.003 25 0.003 3 1 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.004 25 0.004 3 1 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.005 25 0.005 3 1 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.006 25 0.006 3 1 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.007 25 0.007 3 1 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.008 25 0.008 3 1 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.010 25 0.010 3 1 + +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.003 25 0.003 3 1 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.004 25 0.004 3 1 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.005 25 0.005 3 1 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.006 25 0.006 3 1 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.007 25 0.007 3 1 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.008 25 0.008 3 1 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.010 25 0.010 3 1 + +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.0015 25 0.0015 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.0017 25 0.0017 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.002 25 0.002 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.0025 25 0.0025 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.003 25 0.003 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.004 25 0.004 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.005 25 0.005 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.006 25 0.006 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.007 25 0.007 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.008 25 0.008 3 1 +#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.010 25 0.010 3 1 + +#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.003 25 0.003 3 1 +#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.004 25 0.004 3 1 +#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.005 25 0.005 3 1 +#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.006 25 0.006 3 1 +#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.007 25 0.007 3 1 +#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.008 25 0.008 3 1 +#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.010 25 0.010 3 1 + +meshes/turbine.off 0.0068 0.002 25 0.002 3 1 +meshes/turbine.off 0.0068 0.003 25 0.003 3 1 +meshes/turbine.off 0.0068 0.004 25 0.004 3 1 +meshes/turbine.off 0.0068 0.005 25 0.005 3 1 +meshes/turbine.off 0.0068 0.006 25 0.006 3 1 +meshes/turbine.off 0.0068 0.007 25 0.007 3 1 +meshes/turbine.off 0.0068 0.008 25 0.008 3 1 +meshes/turbine.off 0.0068 0.010 25 0.010 3 1 + +meshes/cheese.off 0.0068 0.0004 25 0.0004 3 1 +meshes/cheese.off 0.0068 0.0005 25 0.0005 3 1 +meshes/cheese.off 0.0068 0.0007 25 0.0007 3 1 +meshes/cheese.off 0.0068 0.001 25 0.001 3 1 +meshes/cheese.off 0.0068 0.002 25 0.002 3 1 +meshes/cheese.off 0.0068 0.004 25 0.004 3 1 +meshes/cheese.off 0.0068 0.005 25 0.005 3 1 +meshes/cheese.off 0.0068 0.007 25 0.007 3 1 +meshes/cheese.off 0.0068 0.010 25 0.010 3 1 + +#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.002 25 0.002 3 1 +#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.003 25 0.003 3 1 +#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.004 25 0.004 3 1 +#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.005 25 0.005 3 1 +#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.006 25 0.006 3 1 +#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.007 25 0.007 3 1 +#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.008 25 0.008 3 1 +#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.010 25 0.010 3 1 + +Thin_cylinder_function 0.0068 0.001 25 0.003 3 1 +Thin_cylinder_function 0.0068 0.002 25 0.006 3 1 +Thin_cylinder_function 0.0068 0.003 25 0.01 3 1 +Thin_cylinder_function 0.0068 0.006 25 0.02 3 1 +Thin_cylinder_function 0.0068 0.01 25 0.03 3 1 +Thin_cylinder_function 0.0068 0.012 25 0.035 3 1 +Thin_cylinder_function 0.0068 0.013 25 0.04 3 1 +Thin_cylinder_function 0.0068 0.017 25 0.05 3 1 +Thin_cylinder_function 0.0068 0.02 25 0.06 3 1 +Thin_cylinder_function 0.0068 0.023 25 0.07 3 1 +Thin_cylinder_function 0.0068 0.027 25 0.08 3 1 +Thin_cylinder_function 0.0068 0.033 25 0.10 3 1 + +Pancake_function 0.0068 0.004 25 0.013 3 1 +Pancake_function 0.0068 0.006 25 0.02 3 1 +Pancake_function 0.0068 0.01 25 0.03 3 1 +Pancake_function 0.0068 0.012 25 0.035 3 1 +Pancake_function 0.0068 0.013 25 0.04 3 1 +Pancake_function 0.0068 0.017 25 0.05 3 1 +Pancake_function 0.0068 0.02 25 0.06 3 1 +Pancake_function 0.0068 0.023 25 0.07 3 1 +Pancake_function 0.0068 0.027 25 0.08 3 1 +Pancake_function 0.0068 0.033 25 0.10 3 1 + +Klein_function 0.0068 0.01 25 0.03 3 1 +Klein_function 0.0068 0.012 25 0.035 3 1 +Klein_function 0.0068 0.013 25 0.04 3 1 +Klein_function 0.0068 0.017 25 0.05 3 1 +Klein_function 0.0068 0.02 25 0.06 3 1 +Klein_function 0.0068 0.023 25 0.07 3 1 +Klein_function 0.0068 0.027 25 0.08 3 1 +Klein_function 0.0068 0.033 25 0.10 3 1 + +Tanglecube_function 0.0068 0.01 25 0.03 3 1 +Tanglecube_function 0.0068 0.012 25 0.035 3 1 +Tanglecube_function 0.0068 0.013 25 0.04 3 1 +Tanglecube_function 0.0068 0.017 25 0.05 3 1 +Tanglecube_function 0.0068 0.02 25 0.06 3 1 +Tanglecube_function 0.0068 0.023 25 0.07 3 1 +Tanglecube_function 0.0068 0.027 25 0.08 3 1 +Tanglecube_function 0.0068 0.033 25 0.10 3 1 + +Sphere_function 0.0068 0.003 25 0.01 3 1 +Sphere_function 0.0068 0.006 25 0.02 3 1 +Sphere_function 0.0068 0.01 25 0.03 3 1 +Sphere_function 0.0068 0.012 25 0.035 3 1 +Sphere_function 0.0068 0.013 25 0.04 3 1 +Sphere_function 0.0068 0.017 25 0.05 3 1 +Sphere_function 0.0068 0.02 25 0.06 3 1 +Sphere_function 0.0068 0.023 25 0.07 3 1 +Sphere_function 0.0068 0.027 25 0.08 3 1 +Sphere_function 0.0068 0.033 25 0.10 3 1 + +images/liver.inr.gz 0.5 5 25 5 3 1 +images/liver.inr.gz 0.5 2 25 2 3 1 +images/liver.inr.gz 0.5 1.5 25 1.5 3 1 +images/liver.inr.gz 0.5 1 25 1 3 1 +images/liver.inr.gz 0.5 0.8 25 0.8 3 1 +images/liver.inr.gz 0.5 0.65 25 0.65 3 1 + +#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 1.5 25 1.5 3 1 +#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 1 25 1 3 1 +#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 0.8 25 0.8 3 1 +#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 0.65 25 0.65 3 1 +#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 0.40 25 0.40 3 1 +#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 0.30 25 0.30 3 1 + +########### Bug maya ########## +Klein_function 0.0068 0.2 25 0.5 3 1 +meshes/fandisk.off 0.0068 0.5 25 0.5 3 1 + +####### Divers ####### +Klein_function 0.0068 1.1 25 1.1 3 10 +Klein_function 0.0068 0.4 25 0.8 3 1 +Klein_function 0.0068 0.04 25 0.1 3 1 +Klein_function 0.0068 0.01 25 0.03 3 1 +Klein_function 0.0068 0.01 25 0.03 3 1 +meshes/elephant.off 0.0068 0.2 25 0.002 3 1000 +meshes/elephant.off 0.0068 0.007 25 0.007 3 150 +meshes/elephant.off 0.0068 0.02 25 0.02 3 15 +meshes/elephant.off 0.0068 0.2 25 0.2 3 2 +Tanglecube_function 0.0068 0.01 25 0.03 3 1000 + +####### Crash compact cell: SOLVED! ######## +meshes/elephant.off 0.0068 0.005 25 0.005 3 100000 + +####### Test crash "A facet is not in conflict with its refinement point!" - SOLVED ######## +meshes/elephant.off 0.0068 0.002 25 10 3 100000 + +####### Parallel optimizers ######## +meshes/elephant.off 0.0068 0.005 25 0.005 3 1000 +meshes/elephant.off 0.0068 0.002 25 0.003 3 100 +meshes/elephant.off 0.0010 0.068 25 0.068 3 10000 +meshes/elephant.off 0.0020 0.068 25 0.068 3 10000 +meshes/elephant.off 0.0068 0.068 25 0.068 3 10000 +meshes/fandisk.off 0.0068 0.006 25 0.006 3 10 +#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.003 25 0.003 3 10 +#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.005 25 0.006 3 10 +Klein_function 0.0068 0.02 25 0.06 3 10 +Tanglecube_function 0.0068 0.01 25 0.05 3 10 +Sphere_function 0.0068 0.006 25 0.02 3 10 +Thin_cylinder_function 0.0068 0.002 25 0.004 3 10 +Pancake_function 0.0068 0.02 25 0.02 3 10 +meshes/cheese.off 0.0068 0.002 25 0.002 3 10 +Klein_function 0.068 0.04 25 0.15 3 1 +meshes/cheese.off 0.0001 0.004 25 0.0086 3 100 +#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0061 0.061 25 0.061 3 10 diff --git a/Mesh_3/benchmark/Mesh_3/benchmark_mesh_3.cpp b/Mesh_3/benchmark/Mesh_3/benchmark_mesh_3.cpp new file mode 100644 index 00000000000..f8be26f174a --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/benchmark_mesh_3.cpp @@ -0,0 +1,681 @@ +#include "benchmark_config.h" +#include "benchmark_xml.h" +#include "mesh_quality.h" + +std::string XML_perf_data::default_filename; + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#ifdef CGAL_LINKED_WITH_TBB +# include +# define TBB_PREVIEW_GLOBAL_CONTROL 1 +# include +#endif + + +#include +#include +#include +#include +#include +#include + +namespace PMP = CGAL::Polygon_mesh_processing; + +// basic types from kernel +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; +typedef K::FT FT; +typedef K::Point_3 Point; +typedef K::Sphere_3 Sphere; + +// To avoid verbose function and named parameters call +using namespace CGAL::parameters; + +#include "implicit_functions.h" + +std::string get_output_filename(const std::string& input_name) +{ + std::string filename = std::string(input_name); + filename = filename.substr(filename.find_last_of("/") + 1, filename.length() - 1); + filename = filename.substr(0, filename.find_last_of(".")); + return filename; +} + +std::string get_technique() +{ + std::string tech; +#ifdef CGAL_CONCURRENT_MESH_3 + + tech += "Task-scheduler (auto"; +# ifdef CGAL_MESH_3_LOAD_BASED_WORKSHARING + tech += ", load-based worksharing"; +#endif + tech += ")"; + +#else // !CGAL_CONCURRENT_MESH_3 + + tech += "Sequential "; +# if defined(CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE) +# ifdef CGAL_MESH_3_IF_UNSORTED_QUEUE_JUST_SORT_AFTER_SCAN + tech += "(sort after scan only"; +# else + tech += "(unsorted"; +# endif +# elif defined(CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE) + tech += "(sorted"; +# else + tech += "(NOT LAZY, sorted"; +# endif + +#ifdef CGAL_SEQUENTIAL_MESH_3_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE + tech += ", points on far sphere)"; +#else + tech += ")"; +#endif + +#endif // CGAL_CONCURRENT_MESH_3 + + return tech; +} + +void display_info(int num_threads) +{ + std::cout << get_technique() << std::endl; + +#ifdef CGAL_CONCURRENT_MESH_3 + + if(num_threads != -1) + std::cout << "Num threads = " << num_threads << std::endl; + else + std::cout << "Num threads = AUTO" << std::endl; + +#else // !CGAL_CONCURRENT_MESH_3 + +# ifdef CGAL_MESH_3_INITIAL_POINTS_NO_RANDOM_SHOOTING + std::cout << "NO random shooting)" << std::endl; +# else + std::cout << "WITH random shooting)" << std::endl; +# endif + +#endif // CGAL_CONCURRENT_MESH_3 +} + +void xml_perf_set_technique() +{ + CGAL_MESH_3_SET_PERFORMANCE_DATA("Technique", get_technique()); +} + +#ifdef CGAL_MESH_3_IMPLICIT_WITH_FEATURES +// To add a crease (feature) to some implicit function +typedef std::vector Crease; +typedef std::list Creases; + +void add_crease(const Point& a, + const Point& b, + Creases& creases) +{ + Crease crease; + crease.push_back(a); + crease.push_back(b); + creases.push_back(crease); +} +#endif + +enum Exit_code +{ + // Success + VALID_OUTPUT = 0, + + // Failure + INPUT_IS_INVALID = 1, + OUTPUT_IS_INVALID = 2 +}; + +// the call to Mesh_3 happens here +template +Exit_code make_mesh(const Domain& domain, + const CGAL::Mesh_criteria_3& criteria, + const std::string& output_filename) +{ +#ifdef _DEBUG + double timelimit = 10; + double sliverbound = 2; +#else + double timelimit = 0; // when making charts, we run this executable a timeout + double sliverbound = 2; +#endif + + CGAL::Real_timer t; + t.start(); + + C3t3 c3t3 = CGAL::make_mesh_3(domain + , criteria +# ifdef CGAL_MESH_3_BENCHMARK_LLOYD + , lloyd(time_limit=timelimit) +# else + , no_lloyd() +# endif +# ifdef CGAL_MESH_3_BENCHMARK_ODT + , odt(time_limit=timelimit) +# else + , no_odt() +#endif +# ifdef CGAL_MESH_3_BENCHMARK_PERTURB + , perturb(time_limit = timelimit, + sliver_bound = sliverbound) +# else + , no_perturb() +#endif +#ifdef CGAL_MESH_3_BENCHMARK_EXUDE + , exude(time_limit = timelimit, + sliver_bound = sliverbound) +#else + , no_exude() +#endif +#ifdef CGAL_MESH_3_MANIFOLD + , manifold() +#else + , non_manifold() +#endif + ); + t.stop(); + + CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices()); + CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex()); + CGAL_MESH_3_SET_PERFORMANCE_DATA("C", c3t3.number_of_cells_in_complex()); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Mem", CGAL::Memory_sizer().virtual_size() >> 20); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Total_time", t.time()); + +#ifdef CGAL_MESH_3_BENCHMARK_EXPORT_TO_MAYA + std::cout << "Exporting to " << output_filename + ".maya (Maya)... "; + std::ofstream out_maya(output_filename + ".maya"); + c3t3.output_to_maya(out_maya, true); + std::cout << "done." << std::endl; +#endif + +#ifdef CGAL_MESH_3_BENCHMARK_EXPORT_TO_MESH + std::cout << "Exporting to " << output_filename + ".mesh (Medit)... "; + // std::cout << "std::filesystem::current_path() = " << std::filesystem::current_path() << std::endl; + std::ofstream out_medit(output_filename + ".mesh"); + c3t3.output_to_medit(out_medit, true); + std::cout << "done." << std::endl; +#endif + + if(!c3t3.triangulation().is_valid() || !c3t3.is_valid()) + { + std::cerr << "Error: invalid output" << std::endl; + return OUTPUT_IS_INVALID; + } + + if(c3t3.number_of_facets_in_complex() == 0) + { + std::cerr << "Error: no facets in output" << std::endl; + return OUTPUT_IS_INVALID; + } + + if(c3t3.number_of_cells_in_complex() == 0) + { + std::cerr << "Error: no cells in output" << std::endl; + return OUTPUT_IS_INVALID; + } + + generate_quality_metrics(c3t3); + + return VALID_OUTPUT; +} + +template +Exit_code make_mesh(const Domain& domain, + double facet_sizing, double facet_approx, double facet_ang, + double cell_sizing, double cell_shape, + const std::string& output_filename) +{ + typedef CGAL::Mesh_criteria_3 Mesh_criteria; + + const CGAL::Bbox_3 bbox = domain.bbox(); + + const double diag_length = std::sqrt(CGAL::square(bbox.xmax() - bbox.xmin()) + + CGAL::square(bbox.ymax() - bbox.ymin()) + + CGAL::square(bbox.zmax() - bbox.zmin())); + + if(USE_RELATIVE_CRITERIA_VALUES) + { + facet_sizing = diag_length / facet_sizing; + facet_approx = diag_length / facet_approx; + cell_sizing = diag_length / cell_sizing; + } + + Mesh_criteria criteria(edge_size = facet_sizing, + facet_angle = facet_ang, + facet_size = facet_sizing, + facet_distance = facet_approx, + cell_size = cell_sizing, + cell_radius_edge_ratio = cell_shape); + + std::cout << " * edge max size: " << facet_sizing << std::endl + << " * facet max size: " << facet_sizing << std::endl + << " * facet approx error: " << facet_approx << std::endl + << " * facet min angle: " << facet_ang << std::endl + << " * cell max size: " << cell_sizing << std::endl + << " * cell shape (radius-edge): " << cell_shape << std::endl; + + return make_mesh(domain, criteria, output_filename); +} + +Exit_code make_mesh_polyhedron(const std::string& input_filename, + double facet_sizing, double facet_approx, double facet_angle, + double cell_sizing, double cell_shape) +{ + std::cout << "make_mesh_polyhedron(" << input_filename << ")" << std::endl; + + // Domain +#ifdef CGAL_MESH_3_POLYHEDRON_WITH_FEATURES + typedef CGAL::Mesh_polyhedron_3::type Polyhedron; + typedef CGAL::Polyhedral_mesh_domain_with_features_3 Mesh_domain; +#else + typedef CGAL::Polyhedron_3 Polyhedron; + typedef CGAL::Polyhedral_mesh_domain_3 Mesh_domain; +#endif + + // Triangulation +#ifdef CGAL_CONCURRENT_MESH_3 + typedef CGAL::Mesh_triangulation_3::Kernel, + CGAL::Parallel_tag>::type Tr; +#else + typedef CGAL::Mesh_triangulation_3::type Tr; +#endif + + // C3t3 + typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; + + // Create input polyhedron + Polyhedron polyhedron; + if(!CGAL::IO::read_polygon_mesh(input_filename, polyhedron)) + { + std::cerr << "Error: Could not read '" << input_filename << "'" << std::endl; + return INPUT_IS_INVALID; + } + + if(is_empty(polyhedron) || + !is_triangle_mesh(polyhedron) || + !is_closed(polyhedron) || + has_degenerate_faces(polyhedron) || + PMP::does_self_intersect(polyhedron)) + { + std::cerr << "Error: input has defects" << std::endl; + return INPUT_IS_INVALID; + } + + std::cout << "Building AABB tree... " << std::endl; + // Create domain + Mesh_domain domain(polyhedron); + std::cout << "done." << std::endl; + +#ifdef CGAL_MESH_3_POLYHEDRON_WITH_FEATURES + std::cout << "Detecting features..." << std::endl; + domain.detect_features(); + std::cout << "done." << std::endl; +#endif + + return make_mesh(domain, + facet_sizing, facet_approx, facet_angle, + cell_sizing, cell_shape, + get_output_filename(input_filename)); +} + +Exit_code make_mesh_3D_images(const std::string& input_filename, + double facet_sizing, double facet_approx, double facet_angle, + double cell_sizing, double cell_shape) +{ + std::cout << "make_mesh_3D_images(" << input_filename << ")" << std::endl; + + // Domain + typedef CGAL::Labeled_mesh_domain_3 Mesh_domain; + + // Triangulation +#ifdef CGAL_CONCURRENT_MESH_3 + typedef CGAL::Mesh_triangulation_3::Kernel, + CGAL::Parallel_tag>::type Tr; +#else + typedef CGAL::Mesh_triangulation_3::type Tr; +#endif + + // C3t3 + typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; + + // Load image + CGAL::Image_3 image; + image.read(input_filename.c_str()); + + // Create domain + Mesh_domain domain = Mesh_domain::create_labeled_image_mesh_domain(image); + std::cout << "done." << std::endl; + + return make_mesh(domain, + facet_sizing, facet_approx, facet_angle, + cell_sizing, cell_shape, + get_output_filename(input_filename)); +} + +template +Exit_code make_mesh_implicit(const std::string& function_name, + ImplicitFunction func, + double facet_sizing, double facet_approx, double facet_angle, + double cell_sizing, double cell_shape) +{ + std::cout << "make_mesh_implicit(" << function_name << ")" << std::endl; + + // Domain +#ifdef CGAL_MESH_3_IMPLICIT_WITH_FEATURES + typedef CGAL::Labeled_mesh_domain_3 Implicit_domain; + typedef CGAL::Mesh_domain_with_polyline_features_3 Mesh_domain; +#else + typedef CGAL::Labeled_mesh_domain_3 Mesh_domain; +#endif + + // Triangulation +#ifdef CGAL_CONCURRENT_MESH_3 + typedef typename CGAL::Mesh_triangulation_3::Kernel, + CGAL::Parallel_tag>::type Tr; +#else + typedef typename CGAL::Mesh_triangulation_3::type Tr; +#endif + + // C3t3 + typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; + + // Create domain + Sphere bounding_sphere(CGAL::ORIGIN, 10.0 * 10.0); + + namespace p = CGAL::parameters; + Mesh_domain domain = Mesh_domain::create_implicit_mesh_domain(p::function = func, + p::bounding_object = bounding_sphere + /*, p::relative_error_bound = 1e-7*/); + +#ifdef CGAL_MESH_3_IMPLICIT_WITH_FEATURES + // Add 12 feature creases + Creases creases; + Point p1(-1.0, -1.0, -1.0); + Point p2(-1.0, -1.0, 1.0); + Point p3(-1.0, 1.0, 1.0); + Point p4(-1.0, 1.0, -1.0); + Point p5( 1.0, -1.0, -1.0); + Point p6( 1.0, -1.0, 1.0); + Point p7( 1.0, 1.0, 1.0); + Point p8( 1.0, 1.0, -1.0); + + add_crease(p1, p2, creases); + add_crease(p2, p3, creases); + add_crease(p3, p4, creases); + add_crease(p4, p1, creases); + + add_crease(p5, p6, creases); + add_crease(p6, p7, creases); + add_crease(p7, p8, creases); + add_crease(p8, p5, creases); + + add_crease(p5, p1, creases); + add_crease(p6, p2, creases); + add_crease(p7, p3, creases); + add_crease(p8, p4, creases); + + domain.add_features(creases.begin(), creases.end()); +#endif + + return make_mesh(domain, + facet_sizing, facet_approx, facet_angle, + cell_sizing, cell_shape, + function_name); +} + +// logs the parameters, and dispatch to polyhedral, implicit or image domain +Exit_code run(const std::string& input, + double facet_approx, double facet_sizing, double facet_angle, + double cell_sizing, double cell_shape, + int num_iteration) +{ + std::string domain = input; + size_t slash_index = domain.find_last_of('/'); + if(slash_index == std::string::npos) + slash_index = domain.find_last_of('\\'); + if(slash_index == std::string::npos) + slash_index = 0; + else + ++slash_index; + + domain = domain.substr(slash_index, domain.find_last_of('.') - slash_index); + + CGAL_MESH_3_SET_PERFORMANCE_DATA("Domain", domain); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Facet_size", facet_sizing); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Facet_approx", facet_approx); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Facet_angle", facet_angle); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Cell_size", cell_sizing); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Cell_shape", cell_shape); + xml_perf_set_technique(); + + Exit_code res; + for(int j=0; j 1) + XML_perf_data::default_filename = argv[1]; + +#if defined(CHECK_MEMORY_LEAKS_ON_MSVC) && defined(_MSC_VER) + _CrtSetDbgFlag ( _CRTDtbbBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); +#endif + +#ifdef CGAL_CONCURRENT_MESH_3 + Concurrent_mesher_config::load_config_file(CONCURRENT_MESHER_CONFIG_FILENAME, true); + + int max_nb_threads = Concurrent_mesher_config::get().num_threads; + if(max_nb_threads == -1) // if not set in the config file, take the max available + max_nb_threads = tbb::this_task_arena::max_concurrency(); +#endif + + Exit_code res; + +#ifdef CGAL_CONCURRENT_MESH_3 + #ifdef BENCHMARK_WITH_1_TO_MAX_THREADS + for(int num_threads=1; num_threads<=max_nb_threads; ++num_threads) + #else + int num_threads = max_nb_threads; + #endif // BENCHMARK_WITH_1_TO_MAX_THREADS +#endif // CGAL_CONCURRENT_MESH_3 + { +#ifdef CGAL_CONCURRENT_MESH_3 + std::cout << "-- Parallel Mesh_3 --" << std::endl; + tbb::global_control control(tbb::global_control::max_allowed_parallelism, num_threads); + display_info(num_threads); + + CGAL_MESH_3_SET_PERFORMANCE_DATA("Num_threads", num_threads); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Lockgrid_size", Concurrent_mesher_config::get().locking_grid_num_cells_per_axis); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Lock_radius", Concurrent_mesher_config::get().first_grid_lock_radius); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Statgrid_size", Concurrent_mesher_config::get().work_stats_grid_num_cells_per_axis); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Num_work_items_per_batch", Concurrent_mesher_config::get().num_work_items_per_batch); +#else + std::cout << "-- Sequential Mesh_3 --" << std::endl; + + CGAL_MESH_3_SET_PERFORMANCE_DATA("Num_threads", "N/A"); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Lockgrid_size", "N/A"); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Lock_radius", "N/A"); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Statgrid_size", "N/A"); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Num_work_items_per_batch", "N/A"); +#endif + + // Script file format: each line gives + // - Filename (polyhedron and image) or "XXX_function" (implicit) + // - Facet and cell criteria + // - Number of iterations with these parameters + std::ifstream script_file; + script_file.open(BENCHMARK_INPUTS_FILENAME); + if(script_file.is_open()) + { + std::cout << "Found inputs file '" << BENCHMARK_INPUTS_FILENAME << "'" << std::endl; + + std::string line; + while(std::getline(script_file, line)) + { + if(line.empty() || line[0] == '#') // lines starting with '#' are ignored + continue; + + std::cout << std::endl << std::endl; + std::cout << "*****************************************" << std::endl; + std::cout << "******* " << line << std::endl; + std::cout << "*****************************************" << std::endl; + + std::stringstream sstr(line); + + std::string input; + double facet_approx, facet_sizing, facet_angle; + double cell_sizing, cell_shape; + int num_iteration; + if(!(sstr >> input + >> facet_approx + >> facet_sizing + >> facet_angle + >> cell_sizing + >> cell_shape + >> num_iteration)) + { + std::cerr << "Error: failed to read input" << std::endl; + return INPUT_IS_INVALID; + } + + res = run(input, + facet_approx, facet_sizing, facet_angle, + cell_sizing, cell_shape, + num_iteration); + } + } + else // no script + { + std::cout << "Inputs file '" << BENCHMARK_INPUTS_FILENAME << "' NOT found." << std::endl; + + // If the script is empty, use the command line arguments: + // [this_program] + // - filename + // - facet_sizing + // - facet_approx + // - facet_angle + // - cell_sizing + // - cell_shape + // - num_iteration + + std::string input = (argc > 2) ? argv[2] : "Sphere_function"; // @fixme klein assertion? + double facet_sizing = (argc > 3) ? std::stod(argv[3]) : DEFAULT_FACE_SIZE; + double facet_approx = (argc > 4) ? std::stod(argv[4]) : DEFAULT_FACE_APPROX; + double facet_angle = (argc > 5) ? std::stod(argv[5]) : DEFAULT_FACE_ANGLE; // 25° + double cell_sizing = (argc > 6) ? std::stod(argv[6]) : DEFAULT_CELL_SIZE; + double cell_shape = (argc > 7) ? std::stod(argv[7]) : DEFAULT_CELL_RADIUS_RATIO; // 3 + + if(facet_sizing <= 0) + facet_sizing = DEFAULT_FACE_SIZE; + if(facet_approx <= 0) + facet_approx = DEFAULT_FACE_APPROX; + if(facet_angle <= 0) + facet_angle = DEFAULT_FACE_ANGLE; + if(cell_sizing <= 0) + cell_sizing = DEFAULT_CELL_SIZE; + if(cell_shape <= 0) + cell_shape = DEFAULT_CELL_RADIUS_RATIO; + + res = run(input, + facet_approx, facet_sizing, facet_angle, + cell_sizing, cell_shape, + 1 /*num_iteration*/); + } + } + + return res; +} diff --git a/Mesh_3/benchmark/Mesh_3/benchmark_xml.h b/Mesh_3/benchmark/Mesh_3/benchmark_xml.h new file mode 100644 index 00000000000..b859776cdec --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/benchmark_xml.h @@ -0,0 +1,139 @@ +#ifndef CGAL_MESH_3_BENCHMARK_BENCHMARK_XML_H +#define CGAL_MESH_3_BENCHMARK_BENCHMARK_XML_H + +#include "../../test/Mesh_3/XML_exporter.h" + +#define CGAL_MESH_3_EXPORT_PERFORMANCE_DATA +#define CGAL_MESH_3_SET_PERFORMANCE_DATA(value_name, value) \ + XML_perf_data::set(value_name, value); + +class XML_perf_data +{ +public: + typedef Streaming_XML_exporter XML_exporter; + +private: + XML_exporter m_xml; + XML_exporter::Element_with_map m_current_element; + +public: + static std::string default_filename; + + XML_perf_data(const std::string& filename) + : m_xml(filename, "ContainerPerformance", "Perf", construct_subelements_names()) + {} + + virtual ~XML_perf_data() + {} + + static XML_perf_data& get() + { + static XML_perf_data singleton(build_filename()); + return singleton; + } + + template + static void set(const std::string& name, Value_type value) + { + get().set_data(name, value); + } + + static void commit() + { + get().commit_current_element(); + } + +protected: + static std::string build_filename() + { + if(default_filename != "") + return default_filename; + + std::stringstream sstr; + sstr << "Performance_log_" << time(0) << ".xml"; + return sstr.str(); + } + + static std::vector construct_subelements_names() + { + std::vector subelements; + subelements.push_back("Domain"); + + subelements.push_back("Facet_angle"); + subelements.push_back("Facet_size"); + subelements.push_back("Facet_approx"); + subelements.push_back("Cell_size"); + subelements.push_back("Cell_shape"); + + subelements.push_back("Technique"); + subelements.push_back("Num_threads"); + subelements.push_back("Lockgrid_size"); + subelements.push_back("Lock_radius"); + subelements.push_back("Statgrid_size"); + subelements.push_back("Num_work_items_per_batch"); + + subelements.push_back("V"); + subelements.push_back("F"); + subelements.push_back("C"); + + subelements.push_back("Facets_scan_time"); + subelements.push_back("Facets_refine_time"); + subelements.push_back("Cells_scan_time"); + subelements.push_back("Cells_refine_time"); + subelements.push_back("Lloyd_optim_time"); + subelements.push_back("Odt_optim_time"); + subelements.push_back("Perturber_optim_time"); + subelements.push_back("Exuder_optim_time"); + subelements.push_back("Total_time"); + + subelements.push_back("Mem"); + + subelements.push_back("Minimum_edge_length"); + subelements.push_back("Mean_edge_length"); + subelements.push_back("Maximum_edge_length"); + + subelements.push_back("Minimum_facet_area"); + subelements.push_back("Mean_facet_area"); + subelements.push_back("Maximum_facet_area"); + subelements.push_back("Total_area"); + + subelements.push_back("Minimum_facet_angle"); + subelements.push_back("Maximum_facet_angle"); + + subelements.push_back("Minimum_cell_volume"); + subelements.push_back("Mean_cell_volume"); + subelements.push_back("Maximum_cell_volume"); + subelements.push_back("Total_volume"); + + subelements.push_back("Minimum_dihedral_angle"); + subelements.push_back("Mean_dihedral_angle"); + subelements.push_back("Maximum_dihedral_angle"); + + subelements.push_back("Smallest_edge_radius_ratio"); + subelements.push_back("Smallest_radius_radius_ratio"); + subelements.push_back("Biggest_V_SMA"); + + return subelements; + } + + void set_data(const std::string& name, const std::string& value) + { + m_current_element[name] = value; + } + + template + void set_data(const std::string& name, Value_type value) + { + std::stringstream sstr; + sstr << value; + set_data(name, sstr.str()); + } + + void commit_current_element() + { + m_xml.add_element(m_current_element); + m_current_element.clear(); + } +}; + +#endif // CGAL_MESH_3_BENCHMARK_BENCHMARK_XML_H diff --git a/Mesh_3/benchmark/Mesh_3/concurrency.cpp b/Mesh_3/benchmark/Mesh_3/concurrency.cpp deleted file mode 100644 index 153f235d2b8..00000000000 --- a/Mesh_3/benchmark/Mesh_3/concurrency.cpp +++ /dev/null @@ -1,1022 +0,0 @@ -//#define CHECK_MEMORY_LEAKS_ON_MSVC - -#if defined(CHECK_MEMORY_LEAKS_ON_MSVC) && defined(_MSC_VER) - #define _CRTDBG_MAP_ALLOC - #include - #include -#endif - -// Without TBB_USE_THREADING_TOOL Intel Inspector XE will report false positives in Intel TBB -// (https://www.intel.com/content/www/us/en/developer/articles/technical/compiler-settings-for-threading-error-analysis-in-intel-inspector-xe.html) -#ifdef _DEBUG -# define TBB_USE_THREADING_TOOL -#endif - -#include -#include -#include -#include -#include - -#ifdef CGAL_USE_BOOST_PROGRAM_OPTIONS -# include - namespace po = boost::program_options; -#endif - -#include -#include - -const char * const BENCHMARK_CONFIG_FILENAME = "concurrency_config.cfg"; -const char * const BENCHMARK_SCRIPT_FILENAME = "concurrency_script.txt"; - -// ========================================================================== -// BENCHMARK GENERAL PARAMETERS -// ========================================================================== - -//#define BENCHMARK_WITH_1_TO_MAX_THREADS -//#define CGAL_MESH_3_POLYHEDRON_WITH_FEATURES -//#define CGAL_MESH_3_IMPLICIT_WITH_FEATURES -//#define CGAL_MESH_3_BENCHMARK_EXPORT_TO_MAYA -//#define CGAL_MESH_3_BENCHMARK_EXPORT_TO_MESH -//#define CGAL_MESH_3_BENCHMARK_LLOYD -//#define CGAL_MESH_3_BENCHMARK_PERTURB -//#define CGAL_MESH_3_BENCHMARK_EXUDE - -// ========================================================================== -// MESH_3 GENERAL PARAMETERS -// ========================================================================== - -//#define CGAL_MESH_3_USE_OLD_SURFACE_RESTRICTED_DELAUNAY_UPDATE // WARNING: VERY SLOW -//#define CGAL_MESH_3_VERBOSE -//#define CGAL_MESH_3_PERTURBER_VERBOSE -//#define CGAL_MESH_3_PERTURBER_HIGH_VERBOSITY -//#define CGAL_MESH_3_EXUDER_VERBOSE -//#define CGAL_MESH_3_EXUDER_HIGH_VERBOSITY -//#define CGAL_MESH_3_VERY_VERBOSE -//#define CGAL_MESHES_DEBUG_REFINEMENT_POINTS -//#define CGAL_MESH_3_OPTIMIZER_VERBOSE -#define CGAL_MESH_3_INITIAL_POINTS_NO_RANDOM_SHOOTING - -#define CGAL_MESH_3_PROFILING -//#define CHECK_AND_DISPLAY_THE_NUMBER_OF_BAD_ELEMENTS_IN_THE_END - -const int FACET_ANGLE = 25; -const int TET_SHAPE = 3; - -// ========================================================================== -// CONCURRENCY -// ========================================================================== - -#ifdef CGAL_CONCURRENT_MESH_3 - -# ifndef CGAL_LINKED_WITH_TBB -# pragma message(" : Warning: CGAL_LINKED_WITH_TBB not defined: EVERYTHING WILL BE SEQUENTIAL.") -# endif - -//# define CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE // default behavior -//# define CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE -//# define CGAL_MESH_3_IF_UNSORTED_QUEUE_JUST_SORT_AFTER_SCAN // recommended -//#define CGAL_PARALLEL_MESH_3_DO_NOT_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE // not recommended - - // ========================================================================== - // Verbose - // ========================================================================== - -# define CGAL_CONCURRENT_MESH_3_VERBOSE -//# define CGAL_CONCURRENT_MESH_3_VERY_VERBOSE - - // ========================================================================== - // Concurrency config - // ========================================================================== - - const char * const CONFIG_FILENAME = "concurrent_mesher_config.cfg"; - - // ===================== - // Worksharing strategy - // ===================== - -//# define CGAL_MESH_3_LOAD_BASED_WORKSHARING // Not recommended - - // ========================================================================== - // Profiling - // ========================================================================== - - // For profiling, etc. -# define CGAL_CONCURRENT_MESH_3_PROFILING -//# define CGAL_DEBUG_FORCE_SEQUENTIAL_MESH_REFINEMENT - -#include - -// ========================================================================== -// SEQUENTIAL -// ========================================================================== - -#else // !CGAL_CONCURRENT_MESH_3 - -//# define CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE // default behavior -//# define CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE -//# define CGAL_MESH_3_IF_UNSORTED_QUEUE_JUST_SORT_AFTER_SCAN // recommended - -#endif // CGAL_CONCURRENT_MESH_3 - -// ========================================================================== -// ========================================================================== - -const char * const DEFAULT_INPUT_FILE_NAME = "elephant.off"; - -// ========================================================================== -// ========================================================================== - -#include "../../test/Mesh_3/XML_exporter.h" -#define CGAL_MESH_3_EXPORT_PERFORMANCE_DATA -#define CGAL_MESH_3_SET_PERFORMANCE_DATA(value_name, value) \ - XML_perf_data::set(value_name, value); - -class XML_perf_data -{ -public: - typedef Streaming_XML_exporter XML_exporter; - - XML_perf_data(const std::string &filename) - : m_xml(filename, "ContainerPerformance", "Perf", - construct_subelements_names()) - {} - - virtual ~XML_perf_data() - { - } - - static XML_perf_data &get() - { - static XML_perf_data singleton(build_filename()); - return singleton; - } - - template - static void set(const std::string &name, Value_type value) - { - get().set_data(name, value); - } - - static void commit() - { - get().commit_current_element(); - } - -protected: - static std::string build_filename() - { - std::stringstream sstr; - sstr << "Performance_log_" << time(0) << ".xml"; - return sstr.str(); - } - - static std::vector construct_subelements_names() - { - std::vector subelements; - subelements.push_back("Domain"); - subelements.push_back("Facet_angle"); - subelements.push_back("Facet_size"); - subelements.push_back("Facet_approx"); - subelements.push_back("Cell_size"); - subelements.push_back("Cell_shape"); - subelements.push_back("Technique"); - subelements.push_back("Num_threads"); - subelements.push_back("Lockgrid_size"); - subelements.push_back("Lock_radius"); - subelements.push_back("Statgrid_size"); - subelements.push_back("Num_work_items_per_batch"); - subelements.push_back("V"); - subelements.push_back("F"); - subelements.push_back("T"); - subelements.push_back("Facets_time"); - subelements.push_back("Cells_scan_time"); - subelements.push_back("Cells_refin_time"); - subelements.push_back("Lloyd_optim_time"); - subelements.push_back("Odt_optim_time"); - subelements.push_back("Perturber_optim_time"); - subelements.push_back("Exuder_optim_time"); - subelements.push_back("Mem"); - - return subelements; - } - - void set_data(const std::string &name, const std::string &value) - { - m_current_element[name] = value; - } - - template - void set_data(const std::string &name, Value_type value) - { - std::stringstream sstr; - sstr << value; - set_data(name, sstr.str()); - } - - void commit_current_element() - { - m_xml.add_element(m_current_element); - m_current_element.clear(); - } - - XML_exporter m_xml; - XML_exporter::Element_with_map m_current_element; -}; - - -// ========================================================================== -// ========================================================================== - - - -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -#ifdef CGAL_MESH_3_POLYHEDRON_WITH_FEATURES -# include -#endif - -// basic types from kernel -typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; -typedef Kernel::FT FT; -typedef Kernel::Point_3 Point; -typedef Kernel::Sphere_3 Sphere; -// IO -#include - -// To avoid verbose function and named parameters call -using namespace CGAL::parameters; - -struct Mesh_parameters -{ - double facet_approx; - double facet_sizing; - double facet_angle; - - double tet_shape; - double tet_sizing; - - std::string log() const - { - std::stringstream sstr; - sstr - << " * facet approx error: " << facet_approx << std::endl - << " * facet max size: " << facet_sizing << std::endl - << " * facet min angle: " << facet_angle << std::endl - << " * tet shape (radius-edge): " << tet_shape << std::endl - << " * tet max size: " << tet_sizing << std::endl; - - return sstr.str(); - } -}; - -struct Klein_function -{ - typedef ::FT FT; - typedef ::Point Point; - - FT operator()(const Point& query) const - { - const FT x = query.x(); - const FT y = query.y(); - const FT z = query.z(); - - return (x*x+y*y+z*z+2*y-1) - * ( (x*x+y*y+z*z-2*y-1) *(x*x+y*y+z*z-2*y-1)-8*z*z) - + 16*x*z* (x*x+y*y+z*z-2*y-1); - } -}; - -struct Tanglecube_function -{ - typedef ::FT FT; - typedef ::Point Point; - - FT operator()(const Point& query) const - { - const FT x = query.x(); - const FT y = query.y(); - const FT z = query.z(); - - double x2=x*x, y2=y*y, z2=z*z; - double x4=x2*x2, y4=y2*y2, z4=z2*z2; - return x4 - 5*x2 + y4 - 5*y2 + z4 - 5*z2 + 11.8; - } -}; - -struct Sphere_function -{ - typedef ::FT FT; - typedef ::Point Point; - - Sphere_function(double radius = 1.) - : m_squared_radius(radius*radius) - {} - - FT operator()(const Point& query) const - { - const FT x = query.x(); - const FT y = query.y(); - const FT z = query.z(); - - return (x*x + y*y + z*z - m_squared_radius); - } - -protected: - FT m_squared_radius; -}; - -struct Cylinder_function -{ - typedef ::FT FT; - typedef ::Point Point; - - Cylinder_function(double radius = 0.5, double height = 2.) - : m_radius(radius), m_height(height) - {} - - FT operator()(const Point& query) const - { - const FT x = query.x(); - const FT y = query.y(); - const FT z = query.z(); - - if (z > 0.5*m_height) - return z - 0.5*m_height; - else if (z < -0.5*m_height) - return -z + 0.5*m_height; - else - return (x*x + y*y - m_radius*m_radius); - } - -protected: - FT m_radius; - FT m_height; -}; - - -std::string get_technique() -{ - std::string tech; -#ifdef CGAL_CONCURRENT_MESH_3 - - tech += "Task-scheduler (auto"; -# ifdef CGAL_MESH_3_LOAD_BASED_WORKSHARING - tech += ", load-based worksharing"; -#endif - tech += ")"; - -#else // !CGAL_CONCURRENT_MESH_3 - - tech += "Sequential "; -# if defined(CGAL_MESH_3_USE_LAZY_UNSORTED_REFINEMENT_QUEUE) -# ifdef CGAL_MESH_3_IF_UNSORTED_QUEUE_JUST_SORT_AFTER_SCAN - tech += "(sort after scan only"; -# else - tech += "(unsorted"; -# endif -# elif defined(CGAL_MESH_3_USE_LAZY_SORTED_REFINEMENT_QUEUE) - tech += "(sorted"; -# else - tech += "(NOT LAZY, sorted"; -# endif - -#ifdef CGAL_SEQUENTIAL_MESH_3_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE - tech += ", points on far sphere)"; -#else - tech += ")"; -#endif - -#endif // CGAL_CONCURRENT_MESH_3 - - return tech; -} - -void xml_perf_set_technique() -{ - CGAL_MESH_3_SET_PERFORMANCE_DATA("Technique", get_technique()); -} - - -void display_info(int num_threads) -{ - std::cerr << get_technique() << std::endl; - -#ifdef CGAL_CONCURRENT_MESH_3 - - if (num_threads != -1) - std::cerr << "Num threads = " << num_threads << std::endl; - else - std::cerr << "Num threads = AUTO" << std::endl; - -#else // !CGAL_CONCURRENT_MESH_3 - -# ifdef CGAL_MESH_3_INITIAL_POINTS_NO_RANDOM_SHOOTING - std::cerr << "NO random shooting)" << std::endl; -# else - std::cerr << "WITH random shooting)" << std::endl; -# endif - -#endif // CGAL_CONCURRENT_MESH_3 -} - -// To add a crease (feature) -typedef std::vector Crease; -typedef std::list Creases; -void add_crease(const Point& a, - const Point& b, - Creases& creases) -{ - Crease crease; - crease.push_back(a); - crease.push_back(b); - creases.push_back(crease); -} - -bool make_mesh_polyhedron(const std::string &input_filename, - double facet_approx, - double facet_sizing, - double cell_sizing) -{ - // Domain - typedef Kernel K; - -#ifdef CGAL_MESH_3_POLYHEDRON_WITH_FEATURES - typedef CGAL::Mesh_polyhedron_3::type Polyhedron; - typedef CGAL::Polyhedral_mesh_domain_with_features_3 Mesh_domain; -#else - typedef CGAL::Polyhedron_3 Polyhedron; - typedef CGAL::Polyhedral_mesh_domain_3 Mesh_domain; -#endif - - // Triangulation -#ifdef CGAL_CONCURRENT_MESH_3 - typedef CGAL::Mesh_triangulation_3< - Mesh_domain, - CGAL::Kernel_traits::Kernel, - CGAL::Parallel_tag>::type Tr; -#else - typedef CGAL::Mesh_triangulation_3::type Tr; -#endif - // C3t3 - typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; - // Criteria - typedef CGAL::Mesh_criteria_3 Mesh_criteria; - - // Create input polyhedron - Polyhedron polyhedron; - std::ifstream input(input_filename.c_str()); - if (!input.is_open()) - { - std::cerr << "Could not open '" << input_filename << "'" << std::endl; - return false; - } - input >> polyhedron; - - std::cerr << "Building AABB tree... "; - // Create domain - Mesh_domain domain(polyhedron); - std::cerr << "done." << std::endl; - -#ifdef CGAL_MESH_3_POLYHEDRON_WITH_FEATURES - std::cerr << "Detecting features... "; - domain.detect_features(); - std::cerr << "done." << std::endl; -#endif - - Mesh_parameters params; - params.facet_approx = facet_approx; - params.facet_sizing = facet_sizing; - params.facet_angle = FACET_ANGLE; - params.tet_sizing = cell_sizing; - params.tet_shape = TET_SHAPE; - - std::cerr - << "File: " << input_filename << std::endl - << "Parameters: " << std::endl - << params.log() << std::endl; - - // Mesh criteria (no cell_size set) - Mesh_criteria criteria( - edge_size=params.facet_sizing, - facet_angle=params.facet_angle, - facet_size=params.facet_sizing, - facet_distance=params.facet_approx, - cell_size=params.tet_sizing, - cell_radius_edge_ratio=params.tet_shape - ); - - // Mesh generation -#ifdef _DEBUG - double timelimit = 10; - double sliverbound = 2; -#else - double timelimit = 0; - double sliverbound = 2; -#endif - - C3t3 c3t3 = CGAL::make_mesh_3( domain - , criteria -# ifdef CGAL_MESH_3_BENCHMARK_LLOYD - , lloyd(time_limit=timelimit) -# else - , no_lloyd() -# endif - , no_odt() -# ifdef CGAL_MESH_3_BENCHMARK_PERTURB - , perturb(time_limit = timelimit, - sliver_bound = sliverbound) -# else - , no_perturb() -#endif -#ifdef CGAL_MESH_3_BENCHMARK_EXUDE - , exude(time_limit = timelimit, - sliver_bound = sliverbound) -#else - , no_exude() -#endif - ); - - CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices()); - CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex()); - CGAL_MESH_3_SET_PERFORMANCE_DATA("T", c3t3.number_of_cells_in_complex()); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Mem", CGAL::Memory_sizer().virtual_size() >> 20); - -#ifdef CGAL_MESH_3_BENCHMARK_EXPORT_TO_MAYA - std::cerr << "Exporting to maya file format (*.maya)... "; - c3t3.output_to_maya(std::ofstream(input_filename + ".maya"), true); - std::cerr << "done." << std::endl; -#endif - -#ifdef CGAL_MESH_3_BENCHMARK_EXPORT_TO_MESH - std::cerr << "Exporting to Medit file format (*.mesh)... "; - c3t3.output_to_medit(std::ofstream(input_filename + ".mesh"), true); - std::cerr << "done." << std::endl; -#endif - - return true; -} - - -bool make_mesh_3D_images(const std::string &input_filename, - double facet_approx, - double facet_sizing, - double cell_sizing) -{ - // Domain - typedef Kernel K; - - typedef CGAL::Labeled_mesh_domain_3 Mesh_domain; - - // Triangulation -#ifdef CGAL_CONCURRENT_MESH_3 - typedef CGAL::Mesh_triangulation_3< - Mesh_domain, - CGAL::Kernel_traits::Kernel, - CGAL::Parallel_tag>::type Tr; -#else - typedef CGAL::Mesh_triangulation_3::type Tr; -#endif - // C3t3 - typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; - // Criteria - typedef CGAL::Mesh_criteria_3 Mesh_criteria; - - // Load image - CGAL::Image_3 image; - image.read(input_filename.c_str()); - - // Create domain - Mesh_domain domain = Mesh_domain::create_labeled_image_mesh_domain(image); - std::cerr << "done." << std::endl; - - Mesh_parameters params; - params.facet_approx = facet_approx; - params.facet_sizing = facet_sizing; - params.facet_angle = FACET_ANGLE; - params.tet_sizing = cell_sizing; - params.tet_shape = TET_SHAPE; - - std::cerr - << "File: " << input_filename << std::endl - << "Parameters: " << std::endl - << params.log() << std::endl; - - // Mesh criteria (no cell_size set) - Mesh_criteria criteria( - edge_size=params.facet_sizing, - facet_angle=params.facet_angle, - facet_size=params.facet_sizing, - facet_distance=params.facet_approx, - cell_size=params.tet_sizing, - cell_radius_edge_ratio=params.tet_shape - ); - - // Mesh generation -#ifdef _DEBUG - double timelimit = 10; - double sliverbound = 2; -#else - double timelimit = 0; - double sliverbound = 2; -#endif - - C3t3 c3t3 = CGAL::make_mesh_3( domain - , criteria -# ifdef CGAL_MESH_3_BENCHMARK_LLOYD - , lloyd(time_limit=timelimit) -# else - , no_lloyd() -# endif - , no_odt() -# ifdef CGAL_MESH_3_BENCHMARK_PERTURB - , perturb(time_limit = timelimit, - sliver_bound = sliverbound) -# else - , no_perturb() -#endif -#ifdef CGAL_MESH_3_BENCHMARK_EXUDE - , exude(time_limit = timelimit, - sliver_bound = sliverbound) -#else - , no_exude() -#endif - ); - - CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices()); - CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex()); - CGAL_MESH_3_SET_PERFORMANCE_DATA("T", c3t3.number_of_cells_in_complex()); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Mem", CGAL::Memory_sizer().virtual_size() >> 20); - -#ifdef CGAL_MESH_3_BENCHMARK_EXPORT_TO_MAYA - std::cerr << "Exporting to maya file format (*.maya)... "; - c3t3.output_to_maya(std::ofstream(input_filename + ".maya"), true); - std::cerr << "done." << std::endl; -#endif - -#ifdef CGAL_MESH_3_BENCHMARK_EXPORT_TO_MESH - std::cerr << "Exporting to Medit file format (*.mesh)... "; - c3t3.output_to_medit(std::ofstream(input_filename + ".mesh"), true); - std::cerr << "done." << std::endl; -#endif - - return true; -} - - -template -bool make_mesh_implicit(double facet_approx, - double facet_sizing, - double cell_sizing, - ImplicitFunction func, - const std::string &function_name) -{ - // Domain -#ifdef CGAL_MESH_3_IMPLICIT_WITH_FEATURES - typedef CGAL::Labeled_mesh_domain_3 Implicit_domain; - typedef CGAL::Mesh_domain_with_polyline_features_3 Mesh_domain; -#else - typedef CGAL::Labeled_mesh_domain_3 Mesh_domain; -#endif - - // Triangulation -#ifdef CGAL_CONCURRENT_MESH_3 - typedef typename CGAL::Mesh_triangulation_3< - Mesh_domain, - typename CGAL::Kernel_traits::Kernel, - CGAL::Parallel_tag>::type Tr; -#else - typedef typename CGAL::Mesh_triangulation_3::type Tr; -#endif - // C3t3 - typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; - // Criteria - typedef CGAL::Mesh_criteria_3 Mesh_criteria; - - // Create domain - Sphere bounding_sphere(CGAL::ORIGIN, 10.0 * 10.0); - - namespace p = CGAL::parameters; - Mesh_domain domain = Mesh_domain::create_implicit_mesh_domain(p::function = func, - p::bounding_object = bounding_sphere - /*, p::relative_error_bound = 1e-7*/); - -#ifdef CGAL_MESH_3_IMPLICIT_WITH_FEATURES - // Add 12 feature creases - Creases creases; - Point p1(-1.0, -1.0, -1.0); - Point p2(-1.0, -1.0, 1.0); - Point p3(-1.0, 1.0, 1.0); - Point p4(-1.0, 1.0, -1.0); - Point p5( 1.0, -1.0, -1.0); - Point p6( 1.0, -1.0, 1.0); - Point p7( 1.0, 1.0, 1.0); - Point p8( 1.0, 1.0, -1.0); - - add_crease(p1, p2, creases); - add_crease(p2, p3, creases); - add_crease(p3, p4, creases); - add_crease(p4, p1, creases); - - add_crease(p5, p6, creases); - add_crease(p6, p7, creases); - add_crease(p7, p8, creases); - add_crease(p8, p5, creases); - - add_crease(p5, p1, creases); - add_crease(p6, p2, creases); - add_crease(p7, p3, creases); - add_crease(p8, p4, creases); - - domain.add_features(creases.begin(), creases.end()); -#endif - - Mesh_parameters params; - params.facet_angle = FACET_ANGLE; - params.facet_sizing = facet_sizing; - params.facet_approx = facet_approx; - params.tet_sizing = cell_sizing; - params.tet_shape = TET_SHAPE; - - std::cerr - << "Implicit function" << std::endl - << "Parameters: " << std::endl - << params.log() << std::endl; - - // Mesh criteria (no cell_size set) - Mesh_criteria criteria( - edge_size=params.facet_sizing, - facet_angle=params.facet_angle, - facet_size=params.facet_sizing, - facet_distance=params.facet_approx, - cell_size=params.tet_sizing, - cell_radius_edge_ratio=params.tet_shape - ); - - // Mesh generation -#ifdef _DEBUG - double timelimit = 10; - double sliverbound = 2; -#else - double timelimit = 0; - double sliverbound = 2; -#endif - - C3t3 c3t3 = CGAL::make_mesh_3( domain - , criteria -# ifdef CGAL_MESH_3_BENCHMARK_LLOYD - , lloyd(time_limit=timelimit) -# else - , no_lloyd() -# endif - , no_odt() -# ifdef CGAL_MESH_3_BENCHMARK_PERTURB - , perturb(time_limit = timelimit, - sliver_bound = sliverbound) -# else - , no_perturb() -#endif -#ifdef CGAL_MESH_3_BENCHMARK_EXUDE - , exude(time_limit = timelimit, - sliver_bound = sliverbound) -#else - , no_exude() -#endif - ); - - CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices()); - CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex()); - CGAL_MESH_3_SET_PERFORMANCE_DATA("T", c3t3.number_of_cells_in_complex()); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Mem", CGAL::Memory_sizer().virtual_size() >> 20); - -#ifdef CGAL_MESH_3_BENCHMARK_EXPORT_TO_MAYA - std::cerr << "Exporting to maya file format (*.maya)... "; - c3t3.output_to_maya(std::ofstream(function_name + ".maya"), true); - std::cerr << "done." << std::endl; -#endif - -#ifdef CGAL_MESH_3_BENCHMARK_EXPORT_TO_MESH - std::cerr << "Exporting to Medit file format (*.mesh)... "; - c3t3.output_to_medit(std::ofstream(function_name + ".mesh"), true); - std::cerr << "done." << std::endl; -#endif - - return true; -} - -int main() -{ -#if defined(CHECK_MEMORY_LEAKS_ON_MSVC) && defined(_MSC_VER) - _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); -#endif - -#ifdef CGAL_USE_BOOST_PROGRAM_OPTIONS - // Program options - po::variables_map vm; - try - { - // Declare the supported options. - po::options_description desc("Allowed options"); - desc.add_options() - ("filename", po::value()->default_value(DEFAULT_INPUT_FILE_NAME), "") - ("facet_approx", po::value()->default_value(0.0068), "") - ("facet_sizing", po::value()->default_value(0.005), "") - ("cell_sizing", po::value()->default_value(0.005), "") - ("numthreads", po::value()->default_value(-1), ""); - - std::ifstream in(BENCHMARK_CONFIG_FILENAME); - po::store(po::parse_config_file(in, desc), vm); - po::notify(vm); - } - catch (std::exception &e) - { - std::cerr << "Config file error: " << e.what() << std::endl; - return false; - } - int num_threads = vm["numthreads"].as(); - double facet_approx = vm["facet_approx"].as(); - double facet_sizing = vm["facet_sizing"].as(); - double cell_sizing = vm["cell_sizing"].as(); - std::string filename = vm["filename"].as(); - -#else // no CGAL_USE_BOOST_PROGRAM_OPTIONS - int num_threads = -1; - double facet_approx = 0.0068; - double facet_sizing = 0.005; - double cell_sizing = 0.005; - std::string filename = DEFAULT_INPUT_FILE_NAME; - -#endif - -#ifdef CGAL_CONCURRENT_MESH_3 - Concurrent_mesher_config::load_config_file(CONFIG_FILENAME, true); -#endif - - std::ifstream script_file; - script_file.open(BENCHMARK_SCRIPT_FILENAME); - // Script? - // Script file format: each line gives - // - Filename (polyhedron) or "XXX_function" (implicit) - // - Facet sizing - // - Cell sizing - // - Number of iterations with these parameters - if (script_file.is_open()) - { - int i = 1; -#ifdef CGAL_CONCURRENT_MESH_3 -# ifdef BENCHMARK_WITH_1_TO_MAX_THREADS - for(num_threads = 1 ; - num_threads <= tbb::task_scheduler_init::default_num_threads() ; - ++num_threads) -# endif - /*for (Concurrent_mesher_config::get().num_work_items_per_batch = 5 ; - Concurrent_mesher_config::get().num_work_items_per_batch < 100 ; - Concurrent_mesher_config::get().num_work_items_per_batch += 5)*/ -#endif - { -#ifdef CGAL_CONCURRENT_MESH_3 - tbb::task_scheduler_init init( - num_threads > 0 ? num_threads : tbb::task_scheduler_init::automatic); -#endif - - std::cerr << "Script file '" << BENCHMARK_SCRIPT_FILENAME << "' found." << std::endl; - script_file.seekg(0); - while (script_file.good()) - { - std::string line; - std::getline(script_file, line); - if (line.size() > 1 && line[0] != '#') - { - std::cerr << std::endl << std::endl; - std::cerr << "*****************************************" << std::endl; - std::cerr << "******* " << line << std::endl; - std::cerr << "*****************************************" << std::endl; - std::stringstream sstr(line); - - std::string input; - double facet_approx; - double facet_sizing; - double cell_sizing; - int num_iteration; - sstr >> input; - sstr >> facet_approx; - sstr >> facet_sizing; - sstr >> cell_sizing; - sstr >> num_iteration; - - for (int j = 0 ; j < num_iteration ; ++j) - { - std::string domain = input; - size_t slash_index = domain.find_last_of('/'); - if (slash_index == std::string::npos) - slash_index = domain.find_last_of('\\'); - if (slash_index == std::string::npos) - slash_index = 0; - else - ++slash_index; - domain = domain.substr( - slash_index, domain.find_last_of('.') - slash_index); - - CGAL_MESH_3_SET_PERFORMANCE_DATA("Domain", domain); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Facet_approx", facet_approx); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Facet_size", facet_sizing); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Facet_angle", FACET_ANGLE); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Cell_size", cell_sizing); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Cell_shape", TET_SHAPE); - xml_perf_set_technique(); -#ifdef CGAL_CONCURRENT_MESH_3 - CGAL_MESH_3_SET_PERFORMANCE_DATA( - "Num_threads", - (num_threads == -1 ? tbb::task_scheduler_init::default_num_threads() : num_threads)); - CGAL_MESH_3_SET_PERFORMANCE_DATA( - "Lockgrid_size", - Concurrent_mesher_config::get().locking_grid_num_cells_per_axis); - CGAL_MESH_3_SET_PERFORMANCE_DATA( - "Lock_radius", - Concurrent_mesher_config::get().first_grid_lock_radius); - CGAL_MESH_3_SET_PERFORMANCE_DATA( - "Statgrid_size", - Concurrent_mesher_config::get().work_stats_grid_num_cells_per_axis); - CGAL_MESH_3_SET_PERFORMANCE_DATA( - "Num_work_items_per_batch", - Concurrent_mesher_config::get().num_work_items_per_batch); -#else - CGAL_MESH_3_SET_PERFORMANCE_DATA("Num_threads", "N/A"); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Lockgrid_size", "N/A"); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Lock_radius", "N/A"); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Statgrid_size", "N/A"); - CGAL_MESH_3_SET_PERFORMANCE_DATA("Num_work_items_per_batch", "N/A"); -#endif - - std::cerr << std::endl << "Refinement #" << i << "..." << std::endl; - - display_info(num_threads); - - if (input == "Klein_function") - make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Klein_function(), input); - /*else if (input == "Tanglecube_function") - make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Tanglecube_function(), input); - else if (input == "Sphere_function") - make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Sphere_function(1.), input); - else if (input == "Thin_cylinder_function") - { - Cylinder_function f(0.05, 3.); - make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, f, input); - } - else if (input == "Pancake_function") - { - Cylinder_function f(3., 0.1); - make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, f, input); - }*/ - else - { - size_t dot_position = input.find_last_of('.'); - std::string extension = input.substr(dot_position + 1); - if (extension == "off") - make_mesh_polyhedron(input, facet_approx, facet_sizing, cell_sizing); - else if (extension == "inr") - make_mesh_3D_images(input, facet_approx, facet_sizing, cell_sizing); - } - - std::cerr << "Refinement #" << i++ << " done." << std::endl; - std::cerr << std::endl << "---------------------------------" << std::endl << std::endl; - - XML_perf_data::commit(); - } - } - } - script_file.seekg(0); - script_file.clear(); - } - - script_file.close(); - } - // Or not script? - else - { - std::cerr << "Script file '" << BENCHMARK_SCRIPT_FILENAME << "' NOT found." << std::endl; - for(int i = 1 ; ; ++i) - { - std::cerr << "Refinement #" << i << "..." << std::endl; - display_info(num_threads); - make_mesh_polyhedron(filename, facet_approx, facet_sizing, cell_sizing); - //make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Klein_function(), "Klein_function"); - std::cerr << "Refinement #" << i << " done." << std::endl; - std::cerr << std::endl << "---------------------------------" << std::endl << std::endl; - } - } - - return 0; -} diff --git a/Mesh_3/benchmark/Mesh_3/concurrency_config.cfg b/Mesh_3/benchmark/Mesh_3/concurrency_config.cfg deleted file mode 100644 index 57d6a2329ad..00000000000 --- a/Mesh_3/benchmark/Mesh_3/concurrency_config.cfg +++ /dev/null @@ -1,6 +0,0 @@ -#filename=D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off -filename=D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off -facet_sizing=0.01 -cell_sizing=0.03 -numthreads=11 # default = -1 (auto) - \ No newline at end of file diff --git a/Mesh_3/benchmark/Mesh_3/concurrency_script.txt b/Mesh_3/benchmark/Mesh_3/concurrency_script.txt deleted file mode 100644 index e236d6f0ba5..00000000000 --- a/Mesh_3/benchmark/Mesh_3/concurrency_script.txt +++ /dev/null @@ -1,266 +0,0 @@ -######################################################### -##### Benchmark MAX (warning: requires a lot of RAM!) -######################################################### -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.002 0.002 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.003 0.003 1 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 0.0015 1 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.002 0.003 1 -#Klein_function 0.0068 0.01 0.03 1 -#Tanglecube_function 0.0068 0.005 0.025 1 -#Sphere_function 0.0068 0.003 0.01 1 -#Thin_cylinder_function 0.0068 0.001 0.002 1 -#Pancake_function 0.0068 0.007 0.01 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.002 0.002 2 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.003 0.003 2 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 0.0015 2 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.002 0.003 2 -#Klein_function 0.0068 0.01 0.03 2 -#Tanglecube_function 0.0068 0.005 0.025 2 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/cheese.off 0.0068 0.002 0.002 1 - -######################################################### -##### Benchmark for refinement+optim -######################################################### -#../../examples/Mesh_3/data/elephant.off 0.05 0.04 0.04 10000 -#../../examples/Mesh_3/data/elephant.off 0.01 0.004 0.004 10000 -../../examples/Mesh_3/data/elephant.off 0.0068 0.002 0.0025 10000 # typical timing (11 thr): 4.4 2.3 9.9 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.002 0.0025 10000 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.003 0.006 1 # typical timing (11 thr): 2.4 1.0 2.9 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 0.003 1 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.003 0.006 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/cheese.off 0.0068 0.002 0.002 1 -#Klein_function 0.0068 0.01 0.06 1 -#Pancake_function 0.0068 0.02 0.02 1 -#Tanglecube_function 0.0068 0.007 0.035 1 -#Sphere_function 0.0068 0.006 0.02 1 -#Thin_cylinder_function 0.0068 0.002 0.004 1 - -######################################################### -##### Benchmark according to number of elements -######################################################### -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.006 0.006 10 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.005 0.005 10 - -######################################################### -##### Middle class -######################################################### -#Klein_function 0.0068 0.005 2.02 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.005 0.005 1 - -######################################################### -##### A few seconds -######################################################### -#Klein_function 0.0068 0.02 0.05 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.003 0.003 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.008 0.008 2 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/cheese.off 0.0068 0.005 0.005 1 - -######################################################### -##### Instant -######################################################### -#Klein_function 0.0068 0.2 0.5 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.03 0.03 5 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.05 0.05 5 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.068 0.068 1500 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 2.68 2.68 150 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 1.68 1.68 150 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 2.68 2.68 150 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 1.68 1.68 150 -#D:/INRIA/CGAL/svn/cgal/trunk/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.05 0.05 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0200 0.05 0.25 2 - -######################################################### -##### Benchmark for TOMS article -######################################################### -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.002 0.002 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.003 0.003 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.004 0.004 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.005 0.005 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.006 0.006 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.007 0.007 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.008 0.008 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.010 0.010 1 - -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.003 0.003 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.0035 0.0035 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.004 0.004 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.005 0.005 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.006 0.006 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.007 0.007 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.008 0.008 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.010 0.010 1 - -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 0.0015 1 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.002 0.002 1 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.003 0.003 1 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.004 0.004 1 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.005 0.005 1 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.006 0.006 1 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.007 0.007 1 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.008 0.008 1 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.010 0.010 1 - -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.003 0.003 1 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.004 0.004 1 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.005 0.005 1 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.006 0.006 1 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.007 0.007 1 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.008 0.008 1 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.010 0.010 1 - -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.0015 0.0015 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.0017 0.0017 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.002 0.002 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.0025 0.0025 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.003 0.003 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.004 0.004 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.005 0.005 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.006 0.006 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.007 0.007 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.008 0.008 1 -#D:/INRIA/Data/_Models/BigOFF/david_200kv.off 0.0068 0.010 0.010 1 - -#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.003 0.003 1 -#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.004 0.004 1 -#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.005 0.005 1 -#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.006 0.006 1 -#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.007 0.007 1 -#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.008 0.008 1 -#D:/INRIA/Data/_Models/CAD/ecrou-larousse.off 0.0068 0.010 0.010 1 - -#D:/INRIA/Data/_Models/CAD/turbine.off 0.0068 0.002 0.002 1 -#D:/INRIA/Data/_Models/CAD/turbine.off 0.0068 0.003 0.003 1 -#D:/INRIA/Data/_Models/CAD/turbine.off 0.0068 0.004 0.004 1 -#D:/INRIA/Data/_Models/CAD/turbine.off 0.0068 0.005 0.005 1 -#D:/INRIA/Data/_Models/CAD/turbine.off 0.0068 0.006 0.006 1 -#D:/INRIA/Data/_Models/CAD/turbine.off 0.0068 0.007 0.007 1 -#D:/INRIA/Data/_Models/CAD/turbine.off 0.0068 0.008 0.008 1 -#D:/INRIA/Data/_Models/CAD/turbine.off 0.0068 0.010 0.010 1 - -#D:/INRIA/Data/_Models/CAD/cheese.off 0.0068 0.0004 0.0004 1 -#D:/INRIA/Data/_Models/CAD/cheese.off 0.0068 0.0005 0.0005 1 -#D:/INRIA/Data/_Models/CAD/cheese.off 0.0068 0.0007 0.0007 1 -#D:/INRIA/Data/_Models/CAD/cheese.off 0.0068 0.001 0.001 1 -#D:/INRIA/Data/_Models/CAD/cheese.off 0.0068 0.002 0.002 1 -#D:/INRIA/Data/_Models/CAD/cheese.off 0.0068 0.004 0.004 1 -#D:/INRIA/Data/_Models/CAD/cheese.off 0.0068 0.005 0.005 1 -#D:/INRIA/Data/_Models/CAD/cheese.off 0.0068 0.007 0.007 1 -#D:/INRIA/Data/_Models/CAD/cheese.off 0.0068 0.010 0.010 1 - -#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.002 0.002 1 -#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.003 0.003 1 -#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.004 0.004 1 -#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.005 0.005 1 -#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.006 0.006 1 -#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.007 0.007 1 -#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.008 0.008 1 -#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0068 0.010 0.010 1 - -#Thin_cylinder_function 0.0068 0.001 0.003 1 -#Thin_cylinder_function 0.0068 0.002 0.006 1 -#Thin_cylinder_function 0.0068 0.003 0.01 1 -#Thin_cylinder_function 0.0068 0.006 0.02 1 -#Thin_cylinder_function 0.0068 0.01 0.03 1 -#Thin_cylinder_function 0.0068 0.012 0.035 1 -#Thin_cylinder_function 0.0068 0.013 0.04 1 -#Thin_cylinder_function 0.0068 0.017 0.05 1 -#Thin_cylinder_function 0.0068 0.02 0.06 1 -#Thin_cylinder_function 0.0068 0.023 0.07 1 -#Thin_cylinder_function 0.0068 0.027 0.08 1 -#Thin_cylinder_function 0.0068 0.033 0.10 1 - -#Pancake_function 0.0068 0.004 0.013 1 -#Pancake_function 0.0068 0.006 0.02 1 -#Pancake_function 0.0068 0.01 0.03 1 -#Pancake_function 0.0068 0.012 0.035 1 -#Pancake_function 0.0068 0.013 0.04 1 -#Pancake_function 0.0068 0.017 0.05 1 -#Pancake_function 0.0068 0.02 0.06 1 -#Pancake_function 0.0068 0.023 0.07 1 -#Pancake_function 0.0068 0.027 0.08 1 -#Pancake_function 0.0068 0.033 0.10 1 - -#Klein_function 0.0068 0.01 0.03 1 -#Klein_function 0.0068 0.012 0.035 1 -#Klein_function 0.0068 0.013 0.04 1 -#Klein_function 0.0068 0.017 0.05 1 -#Klein_function 0.0068 0.02 0.06 1 -#Klein_function 0.0068 0.023 0.07 1 -#Klein_function 0.0068 0.027 0.08 1 -#Klein_function 0.0068 0.033 0.10 1 - -#Tanglecube_function 0.0068 0.01 0.03 1 -#Tanglecube_function 0.0068 0.012 0.035 1 -#Tanglecube_function 0.0068 0.013 0.04 1 -#Tanglecube_function 0.0068 0.017 0.05 1 -#Tanglecube_function 0.0068 0.02 0.06 1 -#Tanglecube_function 0.0068 0.023 0.07 1 -#Tanglecube_function 0.0068 0.027 0.08 1 -#Tanglecube_function 0.0068 0.033 0.10 1 - -#Sphere_function 0.0068 0.003 0.01 1 -#Sphere_function 0.0068 0.006 0.02 1 -#Sphere_function 0.0068 0.01 0.03 1 -#Sphere_function 0.0068 0.012 0.035 1 -#Sphere_function 0.0068 0.013 0.04 1 -#Sphere_function 0.0068 0.017 0.05 1 -#Sphere_function 0.0068 0.02 0.06 1 -#Sphere_function 0.0068 0.023 0.07 1 -#Sphere_function 0.0068 0.027 0.08 1 -#Sphere_function 0.0068 0.033 0.10 1 - -#D:/INRIA/Data/_Models/3D_images/liver_kidney_gallbladder.inr 0.5 5 5 1 -#D:/INRIA/Data/_Models/3D_images/liver_kidney_gallbladder.inr 0.5 2 2 1 -#D:/INRIA/Data/_Models/3D_images/liver_kidney_gallbladder.inr 0.5 1.5 1.5 1 -#D:/INRIA/Data/_Models/3D_images/liver_kidney_gallbladder.inr 0.5 1 1 1 -#D:/INRIA/Data/_Models/3D_images/liver_kidney_gallbladder.inr 0.5 0.8 0.8 1 -#D:/INRIA/Data/_Models/3D_images/liver_kidney_gallbladder.inr 0.5 0.65 0.65 1 - -#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 1.5 1.5 1 -#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 1 1 1 -#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 0.8 0.8 1 -#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 0.65 0.65 1 -#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 0.40 0.40 1 -#D:/INRIA/Data/_Models/3D_images/VisibleHuman1mm.inr 0.3 0.30 0.30 1 - - -########### Bug maya ########## -#Klein_function 0.0068 0.2 0.5 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.5 0.5 1 - -####### Divers ####### -#Klein_function 0.0068 1.1 1.1 10 -#Klein_function 0.0068 0.4 0.8 1 -#Klein_function 0.0068 0.04 0.1 1 -#Klein_function 0.0068 0.01 0.03 1 -#Klein_function 0.0068 0.01 0.03 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.2 0.002 1000 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.007 0.007 150 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.02 0.02 15 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.2 0.2 2 -#Tanglecube_function 0.0068 0.01 0.03 1000 - -####### Crash compact cell: SOLVED! ######## -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.005 0.005 100000 - -####### Test crash "A facet is not in conflict with its refinement point!" - SOLVED ######## -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.002 10 100000 - -####### Parallel optimizers ######## -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.005 0.005 1000 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.002 0.003 100 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0010 0.068 0.068 10000 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0020 0.068 0.068 10000 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/elephant.off 0.0068 0.068 0.068 10000 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/fandisk.off 0.0068 0.006 0.006 10 -#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.003 0.003 10 -#D:/INRIA/Data/_Models/BigOFF/bimba_400kf.off 0.0068 0.005 0.006 10 -#Klein_function 0.0068 0.02 0.06 10 -#Tanglecube_function 0.0068 0.01 0.05 10 -#Sphere_function 0.0068 0.006 0.02 10 -#Thin_cylinder_function 0.0068 0.002 0.004 10 -#Pancake_function 0.0068 0.02 0.02 10 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/cheese.off 0.0068 0.002 0.002 10 -#Klein_function 0.068 0.04 0.15 1 -#D:/INRIA/CGAL/workingcopy/Mesh_3/examples/Mesh_3/data/cheese.off 0.0001 0.004 0.0086 100 -#D:/INRIA/Data/_Models/CAD/pump_carter.off 0.0061 0.061 0.061 10 diff --git a/Mesh_3/benchmark/Mesh_3/concurrent_mesher_config.cfg b/Mesh_3/benchmark/Mesh_3/concurrent_mesher_config.cfg index 2ac949502da..ed58c2d04f4 100644 --- a/Mesh_3/benchmark/Mesh_3/concurrent_mesher_config.cfg +++ b/Mesh_3/benchmark/Mesh_3/concurrent_mesher_config.cfg @@ -1,3 +1,9 @@ +#========================================== +#========== Number of threads ============= +#========================================== + +number_of_threads = -1 # default = -1 (all) + #========================================== #======== Worksharing strategy =========== #========================================== @@ -5,7 +11,6 @@ locking_grid_num_cells_per_axis = 50 first_grid_lock_radius = 0 - #========================================== #============= Brute-force ================ #========================================== @@ -13,7 +18,6 @@ first_grid_lock_radius = 0 #locking_grid_num_cells_per_axis = 30 #first_grid_lock_radius = 2 - #========================================== #=============== Other ==================== #========================================== @@ -21,7 +25,7 @@ first_grid_lock_radius = 0 refinement_grainsize = 10 # for parallel_for techniques refinement_batch_size = 10000 # for parallel_for technique work_stats_grid_num_cells_per_axis = 5 # for "task" technique -num_work_items_per_batch = 50 # for "task" technique +num_work_items_per_batch = 50 # for "task" technique min_num_vertices_of_coarse_mesh = 100 num_vertices_of_coarse_mesh_per_core = 3.5 -num_pseudo_infinite_vertices_per_core = 5.0 \ No newline at end of file +num_pseudo_infinite_vertices_per_core = 5.0 diff --git a/Mesh_3/benchmark/Mesh_3/implicit_functions.h b/Mesh_3/benchmark/Mesh_3/implicit_functions.h new file mode 100644 index 00000000000..b904bdcb0f4 --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/implicit_functions.h @@ -0,0 +1,83 @@ +struct Klein_function +{ + typedef ::FT FT; + typedef ::Point Point; + + FT operator()(const Point& query) const + { + const FT x = query.x(); + const FT y = query.y(); + const FT z = query.z(); + + return (x*x+y*y+z*z+2*y-1) + * ( (x*x+y*y+z*z-2*y-1) *(x*x+y*y+z*z-2*y-1)-8*z*z) + + 16*x*z* (x*x+y*y+z*z-2*y-1); + } +}; + +struct Tanglecube_function +{ + typedef ::FT FT; + typedef ::Point Point; + + FT operator()(const Point& query) const + { + const FT x = query.x(); + const FT y = query.y(); + const FT z = query.z(); + + double x2 = x*x, y2 = y*y, z2 = z*z; + double x4 = x2*x2, y4 = y2*y2, z4 = z2*z2; + return x4 - 5*x2 + y4 - 5*y2 + z4 - 5*z2 + 11.8; + } +}; + +struct Sphere_function +{ + typedef ::FT FT; + typedef ::Point Point; + + Sphere_function(double radius = 1.) + : m_squared_radius(radius*radius) + {} + + FT operator()(const Point& query) const + { + const FT x = query.x(); + const FT y = query.y(); + const FT z = query.z(); + + return (x*x + y*y + z*z - m_squared_radius); + } + +protected: + FT m_squared_radius; +}; + +struct Cylinder_function +{ + typedef ::FT FT; + typedef ::Point Point; + + Cylinder_function(double radius = 0.5, double height = 2.) + : m_radius(radius), m_height(height) + {} + + FT operator()(const Point& query) const + { + const FT x = query.x(); + const FT y = query.y(); + const FT z = query.z(); + + if(z > 0.5*m_height) + return z - 0.5*m_height; + else if(z < -0.5*m_height) + return -z + 0.5*m_height; + else + return (x*x + y*y - m_radius*m_radius); + } + +protected: + FT m_radius; + FT m_height; +}; \ No newline at end of file diff --git a/Mesh_3/benchmark/Mesh_3/mesh_quality.h b/Mesh_3/benchmark/Mesh_3/mesh_quality.h new file mode 100644 index 00000000000..16616123c1b --- /dev/null +++ b/Mesh_3/benchmark/Mesh_3/mesh_quality.h @@ -0,0 +1,328 @@ +#ifndef CGAL_MESH_3_BENCHMARK_MESH_3_MESH_QUALITY_H +#define CGAL_MESH_3_BENCHMARK_MESH_3_MESH_QUALITY_H + +#include "benchmark_xml.h" + +#include +#include +#include +#include +#include + +#include +#include + +template +bool has_degenerate_faces(const TriangleMesh& mesh, + const NamedParameters& np = CGAL::parameters::default_values()) +{ + namespace PMP = CGAL::Polygon_mesh_processing; + + for(auto f : faces(mesh)) + if(CGAL::Polygon_mesh_processing::is_degenerate_triangle_face(f, mesh, np)) + return true; + + return false; +} + +struct Surface_quality +{ + double minimum_edge_length; + double mean_edge_length; + double maximum_edge_length; + + double minimum_area; + double mean_area; + double maximum_area; + double total_area; + + double minimum_angle; + double maximum_angle; +}; + +struct Volume_quality +{ + double minimum_volume; + double mean_volume; + double maximum_volume; + double total_volume; + + double minimum_dihedral_angle; + double mean_dihedral_angle; + double maximum_dihedral_angle; + + double smallest_edge_radius_ratio; + double smallest_radius_radius_ratio; + double biggest_v_sma; +}; + +template +void generate_surface_qualitymetrics(const C3t3& c3t3, + Surface_quality& surface_quality) +{ + typedef typename C3t3::Triangulation Triangulation; + + surface_quality.minimum_edge_length = -1.; + surface_quality.mean_edge_length = -1.; + surface_quality.maximum_edge_length = -1.; + + surface_quality.minimum_area = -1.; + surface_quality.mean_area = -1.; + surface_quality.maximum_area = -1.; + + surface_quality.minimum_angle = -1.; + surface_quality.maximum_angle = -1.; + + surface_quality.total_area = -1.; + + // edge length + if(c3t3.number_of_edges_in_complex() > 0) + { + std::vector edge_lengths; + + auto edge_it = c3t3.edges_in_complex_begin(), + end = c3t3.edges_in_complex_end(); + for(; edge_it!=end; ++edge_it) + { + const typename Triangulation::Cell_handle c = edge_it->first; + const int i = edge_it->second; + const int j = edge_it->third; + const typename Triangulation::Bare_point& pi = c3t3.triangulation().point(c, i).point(); + const typename Triangulation::Bare_point& pj = c3t3.triangulation().point(c, j).point(); + + const double edge_length = CGAL::approximate_sqrt(CGAL::squared_distance(pi, pj)); + edge_lengths.push_back(edge_length); + } + + surface_quality.minimum_edge_length = *std::min_element(edge_lengths.begin(), edge_lengths.end()); + surface_quality.maximum_edge_length = *std::max_element(edge_lengths.begin(), edge_lengths.end()); + + surface_quality.mean_edge_length = std::accumulate(edge_lengths.begin(), edge_lengths.end(), 0.) / edge_lengths.size(); + } + + // area + if(c3t3.number_of_facets_in_complex() > 0) + { + std::vector areas; + + auto facet_it = c3t3.facets_in_complex_begin(), + end = c3t3.facets_in_complex_end(); + for(; facet_it!=end; ++facet_it) + { + const typename Triangulation::Cell_handle c = facet_it->first; + const int s = facet_it->second; + + const typename Triangulation::Bare_point& pi = c3t3.triangulation().point(c, (s+1)%4).point(); + const typename Triangulation::Bare_point& pj = c3t3.triangulation().point(c, (s+2)%4).point(); + const typename Triangulation::Bare_point& pk = c3t3.triangulation().point(c, (s+3)%4).point(); + + const double area = CGAL::approximate_sqrt(CGAL::squared_area(pi, pj, pk)); + areas.push_back(area); + } + + surface_quality.minimum_area = *std::min_element(areas.begin(), areas.end()); + surface_quality.maximum_area = *std::max_element(areas.begin(), areas.end()); + surface_quality.total_area = std::accumulate(areas.begin(), areas.end(), 0.); + surface_quality.mean_area = surface_quality.total_area / areas.size(); + } + + // angle + if(c3t3.number_of_facets_in_complex() > 0) + { + std::vector angles; + + auto facet_it = c3t3.facets_in_complex_begin(), + end = c3t3.facets_in_complex_end(); + for(; facet_it!=end; ++facet_it) + { + const typename Triangulation::Cell_handle c = facet_it->first; + const int s = facet_it->second; + std::array indices = {(s+1)%4, (s+2)%4, (s+3)%4}; + + for(int o=0; o<3; ++o) + { + const typename Triangulation::Bare_point& ei = c3t3.triangulation().point(c, indices[o]).point(); + const typename Triangulation::Bare_point& ej = c3t3.triangulation().point(c, indices[(o+1)%3]).point(); + const typename Triangulation::Bare_point& ek = c3t3.triangulation().point(c, indices[(o+2)%3]).point(); + + const double angle = CGAL::approximate_angle(ei, ej, ek); + angles.push_back(angle); + } + } + + surface_quality.minimum_angle = *std::min_element(angles.begin(), angles.end()); + surface_quality.maximum_angle = *std::max_element(angles.begin(), angles.end()); + } +} + +template +void generate_volume_quality_metrics(const C3t3& c3t3, + Volume_quality& volume_quality) +{ + typedef typename C3t3::Triangulation Triangulation; + + volume_quality.minimum_dihedral_angle = (std::numeric_limits::max)(); + volume_quality.mean_dihedral_angle = 0; + volume_quality.maximum_dihedral_angle = 0; + + volume_quality.minimum_volume = (std::numeric_limits::max)(); + volume_quality.mean_volume = 0; + volume_quality.maximum_volume = 0; + + volume_quality.total_volume = 0; + + volume_quality.smallest_edge_radius_ratio = (std::numeric_limits::max)(); + volume_quality.smallest_radius_radius_ratio = (std::numeric_limits::max)(); + volume_quality.biggest_v_sma = 0; + + // volume + if(c3t3.number_of_cells_in_complex() > 0) + { + std::vector volumes; + + auto cell_it = c3t3.cells_in_complex_begin(), + end = c3t3.cells_in_complex_end(); + for(; cell_it!=end; ++cell_it) + { + const typename Triangulation::Cell_handle c = cell_it; + const typename Triangulation::Bare_point& p0 = c3t3.triangulation().point(c, 0).point(); + const typename Triangulation::Bare_point& p1 = c3t3.triangulation().point(c, 1).point(); + const typename Triangulation::Bare_point& p2 = c3t3.triangulation().point(c, 2).point(); + const typename Triangulation::Bare_point& p3 = c3t3.triangulation().point(c, 3).point(); + + const double volume = CGAL::volume(p0, p1, p2, p3); + volumes.push_back(volume); + } + + volume_quality.minimum_volume = *std::min_element(volumes.begin(), volumes.end()); + volume_quality.maximum_volume = *std::max_element(volumes.begin(), volumes.end()); + volume_quality.total_volume = std::accumulate(volumes.begin(), volumes.end(), 0.); + volume_quality.mean_volume = volume_quality.total_volume / volumes.size(); + } + + // dihedral angle + if(c3t3.number_of_cells_in_complex() > 0) + { + std::vector dihedral_angles; + + auto cell_it = c3t3.cells_in_complex_begin(), + end = c3t3.cells_in_complex_end(); + for(; cell_it!=end; ++cell_it) + { + const typename Triangulation::Cell_handle c = cell_it; + + std::array pts; + for(int i=0; i<4; ++i) + pts[i] = c3t3.triangulation().point(c, i).point(); + + constexpr std::array dhis = { 0, 1, 2, 3, + 2, 0, 1, 3, + 0, 3, 1, 2, + 2, 1, 3, 0, + 3, 1, 0, 2, + 3, 2, 1, 0 }; + for(int dhi=0; dhi<6; ++dhi) + { + double dh_angle = CGAL::approximate_dihedral_angle(pts[dhis[4*dhi]], pts[dhis[4*dhi+1]], + pts[dhis[4*dhi+2]], pts[dhis[4*dhi+3]]); + dihedral_angles.push_back(std::abs(dh_angle)); + } + } + + volume_quality.minimum_dihedral_angle = *std::min_element(dihedral_angles.begin(), dihedral_angles.end()); + volume_quality.maximum_dihedral_angle = *std::max_element(dihedral_angles.begin(), dihedral_angles.end()); + volume_quality.mean_dihedral_angle = std::accumulate(dihedral_angles.begin(), dihedral_angles.end(), 0.) / dihedral_angles.size(); + } + + // smallest edge-radius ratio + if(c3t3.number_of_cells_in_complex() > 0) + { + auto cell_it = c3t3.cells_in_complex_begin(), + end = c3t3.cells_in_complex_end(); + for(; cell_it!=end; ++cell_it) + { + const typename Triangulation::Bare_point& p0 = cell_it->vertex(0)->point().point(); + const typename Triangulation::Bare_point& p1 = cell_it->vertex(1)->point().point(); + const typename Triangulation::Bare_point& p2 = cell_it->vertex(2)->point().point(); + const typename Triangulation::Bare_point& p3 = cell_it->vertex(3)->point().point(); + double v = std::abs(CGAL::volume(p0, p1, p2, p3)); + double circumradius = CGAL::approximate_sqrt(CGAL::squared_radius(p0, p1, p2, p3)); + + double edges[6]; + edges[0] = std::sqrt(CGAL::squared_distance(p0, p1)); + edges[1] = std::sqrt(CGAL::squared_distance(p0, p2)); + edges[2] = std::sqrt(CGAL::squared_distance(p0, p3)); + edges[3] = std::sqrt(CGAL::squared_distance(p2, p1)); + edges[4] = std::sqrt(CGAL::squared_distance(p2, p3)); + edges[5] = std::sqrt(CGAL::squared_distance(p1, p3)); + + double min_edge = edges[0]; + for(int i=1; i<6; ++i) + { + if(edges[i] volume_quality.biggest_v_sma) + volume_quality.biggest_v_sma = biggest_v_sma_cube; + } + } +} + + +template +void generate_quality_metrics(const C3t3& c3t3) +{ + Surface_quality surface_quality; + Volume_quality volume_quality; + + generate_surface_qualitymetrics(c3t3, surface_quality); + generate_volume_quality_metrics(c3t3, volume_quality); + + CGAL_MESH_3_SET_PERFORMANCE_DATA("Minimum_edge_length", surface_quality.minimum_edge_length); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Mean_edge_length", surface_quality.mean_edge_length); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Maximum_edge_length", surface_quality.maximum_edge_length); + + CGAL_MESH_3_SET_PERFORMANCE_DATA("Minimum_facet_area", surface_quality.minimum_area); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Mean_facet_area", surface_quality.mean_area); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Maximum_facet_area", surface_quality.maximum_area); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Total_area", surface_quality.total_area); + + CGAL_MESH_3_SET_PERFORMANCE_DATA("Minimum_facet_angle", surface_quality.minimum_angle); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Maximum_facet_angle", surface_quality.maximum_angle); + + CGAL_MESH_3_SET_PERFORMANCE_DATA("Minimum_cell_volume", volume_quality.minimum_volume); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Mean_cell_volume", volume_quality.mean_volume); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Maximum_cell_volume", volume_quality.maximum_volume); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Total_volume", volume_quality.total_volume); + + CGAL_MESH_3_SET_PERFORMANCE_DATA("Minimum_dihedral_angle", volume_quality.minimum_dihedral_angle); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Mean_dihedral_angle", volume_quality.mean_dihedral_angle); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Maximum_dihedral_angle", volume_quality.maximum_dihedral_angle); + + CGAL_MESH_3_SET_PERFORMANCE_DATA("Smallest_edge_radius_ratio", volume_quality.smallest_edge_radius_ratio); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Smallest_radius_radius_ratio", volume_quality.smallest_radius_radius_ratio); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Biggest_V_SMA", volume_quality.biggest_v_sma); +} + +#endif // CGAL_MESH_3_BENCHMARK_MESH_3_MESH_QUALITY_H diff --git a/Mesh_3/doc/Mesh_3/Concepts/MeshFacetCriteria_3.h b/Mesh_3/doc/Mesh_3/Concepts/MeshFacetCriteria_3.h index 456507d3294..07a6626bb79 100644 --- a/Mesh_3/doc/Mesh_3/Concepts/MeshFacetCriteria_3.h +++ b/Mesh_3/doc/Mesh_3/Concepts/MeshFacetCriteria_3.h @@ -62,6 +62,11 @@ a natural model of this concept. */ typedef unspecified_type Is_facet_bad; +/*! +* Numerical type. +*/ +typedef unspecified_type FT; + /// @} /// \name Operations @@ -73,6 +78,12 @@ The type `Tr` must be identical to the triangulation type used by the mesh gener */ Is_facet_bad operator()(const Tr& tr, Facet f); +/** +* @returns the squared value of minimal radius bound if set, +* and `std::nullopt` otherwise +*/ +std::optional squared_min_radius_bound() const; + /// @} }; /* end MeshFacetCriteria_3 */ diff --git a/Mesh_3/doc/Mesh_3/dependencies b/Mesh_3/doc/Mesh_3/dependencies index 3219d3896f4..c8703db0782 100644 --- a/Mesh_3/doc/Mesh_3/dependencies +++ b/Mesh_3/doc/Mesh_3/dependencies @@ -10,7 +10,6 @@ Triangulation_3 Periodic_3_triangulation_3 TDS_3 Polyhedron -Surface_mesh Miscellany Mesh_2 Polygon_mesh_processing diff --git a/Mesh_3/examples/Mesh_3/CMakeLists.txt b/Mesh_3/examples/Mesh_3/CMakeLists.txt index 6daadba7591..0202c1fd52b 100644 --- a/Mesh_3/examples/Mesh_3/CMakeLists.txt +++ b/Mesh_3/examples/Mesh_3/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Mesh_3_Examples) add_definitions(-DCGAL_MESH_3_NO_DEPRECATED_SURFACE_INDEX diff --git a/Mesh_3/include/CGAL/Mesh_3/C3T3_helpers.h b/Mesh_3/include/CGAL/Mesh_3/C3T3_helpers.h index 6d67d3d627c..b0de017c924 100644 --- a/Mesh_3/include/CGAL/Mesh_3/C3T3_helpers.h +++ b/Mesh_3/include/CGAL/Mesh_3/C3T3_helpers.h @@ -2614,7 +2614,7 @@ update_mesh_topo_change(const Vertex_handle& old_vertex, std::cerr << "update_mesh_topo_change: revert move to " << old_position << "\n"; #endif - //reset caches in case cells are re-used by the compact container + //reset caches in case cells are reused by the compact container reset_circumcenter_cache(outdated_cells); reset_sliver_cache(outdated_cells); outdated_cells.clear(); diff --git a/Mesh_3/include/CGAL/Mesh_3/Concurrent_mesher_config.h b/Mesh_3/include/CGAL/Mesh_3/Concurrent_mesher_config.h index 5edea1e565f..05f18c65ad1 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Concurrent_mesher_config.h +++ b/Mesh_3/include/CGAL/Mesh_3/Concurrent_mesher_config.h @@ -35,7 +35,8 @@ class Concurrent_mesher_config { // Private constructor (singleton) Concurrent_mesher_config() - : locking_grid_num_cells_per_axis(50), + : num_threads(-1), + locking_grid_num_cells_per_axis(50), first_grid_lock_radius(0), work_stats_grid_num_cells_per_axis(5), num_work_items_per_batch(50), @@ -48,14 +49,14 @@ class Concurrent_mesher_config {} public: - static Concurrent_mesher_config &get() + static Concurrent_mesher_config& get() { static Concurrent_mesher_config singleton; return singleton; } static bool load_config_file(const char *filename, - bool reload_if_already_loaded = false) + bool reload_if_already_loaded = false) { return get().load_file(filename, reload_if_already_loaded); } @@ -64,6 +65,7 @@ public: //=============== PUBLIC PARAMETERS ============== // From config file (or default) + int num_threads; int locking_grid_num_cells_per_axis; int first_grid_lock_radius; int work_stats_grid_num_cells_per_axis; @@ -81,9 +83,8 @@ public: protected: - bool load_file( - const char *filename, - bool reload_if_already_loaded = false) + bool load_file(const char *filename, + bool reload_if_already_loaded = false) { CGAL_USE(reload_if_already_loaded); #ifdef CGAL_USE_BOOST_PROGRAM_OPTIONS @@ -104,6 +105,7 @@ protected: // Declare the supported options. po::options_description desc("Allowed options"); desc.add_options() + ("num_threads", po::value(), "") ("locking_grid_num_cells_per_axis", po::value(), "") ("first_grid_lock_radius", po::value(), "") ("work_stats_grid_num_cells_per_axis", po::value(), "") @@ -125,6 +127,8 @@ protected: return false; } + num_threads = + get_config_file_option_value("num_threads"); locking_grid_num_cells_per_axis = get_config_file_option_value("locking_grid_num_cells_per_axis"); first_grid_lock_radius = diff --git a/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h b/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h index a76ee2c5ecf..036094d60b0 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h @@ -460,7 +460,7 @@ refine_mesh(std::string dump_after_refine_surface_prefix) // If it's parallel but the refinement is forced to sequential, we don't // output the value # ifndef CGAL_DEBUG_FORCE_SEQUENTIAL_MESH_REFINEMENT - CGAL_MESH_3_SET_PERFORMANCE_DATA("Facets_time", facet_ref_time); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Facets_refine_time", facet_ref_time); # endif # endif #endif @@ -503,7 +503,7 @@ refine_mesh(std::string dump_after_refine_surface_prefix) // If it's parallel but the refinement is forced to sequential, we don't // output the value # ifndef CGAL_DEBUG_FORCE_SEQUENTIAL_MESH_REFINEMENT - CGAL_MESH_3_SET_PERFORMANCE_DATA("Cells_refin_time", cell_ref_time); + CGAL_MESH_3_SET_PERFORMANCE_DATA("Cells_refine_time", cell_ref_time); # endif # endif #endif diff --git a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h index 6c1a4325184..8eed7475b80 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h @@ -1027,8 +1027,17 @@ scan_triangulation_impl() } #ifdef CGAL_MESH_3_PROFILING - std::cerr << "==== Facet scan: " << t.elapsed() << " seconds ====" + double facet_scan_time = t.elapsed(); + std::cerr << "==== Facet scan: " << facet_scan_time << " seconds ====" << std::endl << std::endl; + + # ifdef CGAL_MESH_3_EXPORT_PERFORMANCE_DATA + // If it's parallel but the refinement is forced to sequential, we don't + // output the value + # ifndef CGAL_DEBUG_FORCE_SEQUENTIAL_MESH_REFINEMENT + CGAL_MESH_3_SET_PERFORMANCE_DATA("Facets_scan_time", facet_scan_time); + # endif + # endif #endif #if defined(CGAL_MESH_3_VERBOSE) || defined(CGAL_MESH_3_PROFILING) @@ -1677,9 +1686,11 @@ compute_facet_properties(const Facet& facet, r_oracle_.surface_patch_index(std::get<1>(intersect))); if(surface) #endif // CGAL_MESH_3_NO_LONGER_CALLS_DO_INTERSECT_3 - fp = Facet_properties(std::make_tuple(*surface, - std::get<1>(intersect), - std::get<0>(intersect))); + { + fp = Facet_properties(std::make_tuple(*surface, + std::get<1>(intersect), + std::get<0>(intersect))); + } } } // If the dual is a ray diff --git a/Mesh_3/include/CGAL/Mesh_3/Sliver_perturber.h b/Mesh_3/include/CGAL/Mesh_3/Sliver_perturber.h index 876d2079ce8..2c0539b9be0 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Sliver_perturber.h +++ b/Mesh_3/include/CGAL/Mesh_3/Sliver_perturber.h @@ -816,7 +816,7 @@ operator()(Visitor visitor) #endif running_time_.stop(); - helper_.reset_cache();//in case we re-use caches in another operation + helper_.reset_cache();//in case we reuse caches in another operation // after this perturbation #ifdef CGAL_MESH_3_PERTURBER_VERBOSE @@ -855,16 +855,7 @@ operator()(Visitor visitor) #if defined(CGAL_MESH_3_EXPORT_PERFORMANCE_DATA) \ && defined(CGAL_MESH_3_PROFILING) - if (ret == BOUND_REACHED) - { - CGAL_MESH_3_SET_PERFORMANCE_DATA("Perturber_optim_time", perturbation_time); - } - else - { - CGAL_MESH_3_SET_PERFORMANCE_DATA("Perturber_optim_time", - (ret == CANT_IMPROVE_ANYMORE ? - "CANT_IMPROVE_ANYMORE" : "TIME_LIMIT_REACHED")); - } + CGAL_MESH_3_SET_PERFORMANCE_DATA("Perturber_optim_time", perturbation_time); #endif return ret; diff --git a/Mesh_3/include/CGAL/Mesh_3/Slivers_exuder.h b/Mesh_3/include/CGAL/Mesh_3/Slivers_exuder.h index bcf2ff2fea2..67053066e0b 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Slivers_exuder.h +++ b/Mesh_3/include/CGAL/Mesh_3/Slivers_exuder.h @@ -427,17 +427,9 @@ public: // methods << exudation_time << "s ====" << std::endl; #endif -#ifdef CGAL_MESH_3_EXPORT_PERFORMANCE_DATA - if (ret == BOUND_REACHED) - { - CGAL_MESH_3_SET_PERFORMANCE_DATA("Exuder_optim_time", exudation_time); - } - else - { - CGAL_MESH_3_SET_PERFORMANCE_DATA("Exuder_optim_time", - (ret == CANT_IMPROVE_ANYMORE ? - "CANT_IMPROVE_ANYMORE" : "TIME_LIMIT_REACHED")); - } +#if defined(CGAL_MESH_3_EXPORT_PERFORMANCE_DATA) \ + && defined(CGAL_MESH_3_PROFILING) + CGAL_MESH_3_SET_PERFORMANCE_DATA("Exuder_optim_time", exudation_time); #endif return ret; @@ -1206,7 +1198,7 @@ expand_prestar(const Cell_handle& cell_to_add, if(! tr_.is_infinite(current_mirror_cell)) { - // if current_mirror_cell is finite, we can re-use the value + // if current_mirror_cell is finite, we can reuse the value // 'new_power_distance_to_power_sphere' // Ensure that 'new_power_distance_to_power_sphere' has been initialized @@ -1295,7 +1287,7 @@ get_best_weight(const Vertex_handle& v, bool *could_lock_zone) const && pre_star.front()->first < (sq_delta_ * sq_d_v) && ! c3t3_.is_in_complex(pre_star.front()->second) ) { - // Store critial radius (pre_star will be modified in expand_prestar) + // Store critical radius (pre_star will be modified in expand_prestar) FT power_distance_to_power_sphere = pre_star.front()->first; // expand prestar (insert opposite_cell facets in pre_star) diff --git a/Mesh_3/include/CGAL/Mesh_facet_criteria_3.h b/Mesh_3/include/CGAL/Mesh_facet_criteria_3.h index 1ddf10fc4d6..5292e0e9478 100644 --- a/Mesh_3/include/CGAL/Mesh_facet_criteria_3.h +++ b/Mesh_3/include/CGAL/Mesh_facet_criteria_3.h @@ -179,6 +179,10 @@ public: return topology_; } + /** + * @returns the squared value of minimal radius bound if it was set, + * and `std::nullopt` otherwise + */ std::optional squared_min_radius_bound() const { if(squared_min_radius_bound_) return *squared_min_radius_bound_; diff --git a/Mesh_3/test/Mesh_3/CMakeLists.txt b/Mesh_3/test/Mesh_3/CMakeLists.txt index e99cd7b288a..3deb1f35b66 100644 --- a/Mesh_3/test/Mesh_3/CMakeLists.txt +++ b/Mesh_3/test/Mesh_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project( Mesh_3_Tests ) find_package(CGAL REQUIRED COMPONENTS ImageIO) diff --git a/Minkowski_sum_2/doc/Minkowski_sum_2/Minkowski_sum_2.txt b/Minkowski_sum_2/doc/Minkowski_sum_2/Minkowski_sum_2.txt index 6c6567f67e9..ca7ec155a42 100644 --- a/Minkowski_sum_2/doc/Minkowski_sum_2/Minkowski_sum_2.txt +++ b/Minkowski_sum_2/doc/Minkowski_sum_2/Minkowski_sum_2.txt @@ -611,7 +611,7 @@ edges of which are line segments and circular arcs of radius \f$ r\f$. The inset can be computed using the convolution method traversing the polygon in a clockwise order (as oppose to the -counterclockwise order applied in the case of ofsetting a polygon). +counterclockwise order applied in the case of offsetting a polygon). As with the (outer) offset functions, the Minkowski-sum package contains two functions for insetting a simple polygon, namely, `approximated_inset_2(P, r, eps, oi)` and `inset_polygon_2(P, r, traits, oi)`. @@ -647,7 +647,7 @@ The package also provides overloaded versions of the functions and \link offset_polygon_2() `offset_polygon_2(P, r, traits)`\endlink that accept a polygon with holes -\f$ P\f$ and compute its offset. This ofset is obtain by computing the +\f$ P\f$ and compute its offset. This offset is obtain by computing the outer offset of the outer boundary of \f$ P\f$'s, and computing the inner offsets of the holes of \f$ P\f$. The former polygon defines the output boundary of \f$ P \oplus B_r\f$, and the latter define the holes within diff --git a/Minkowski_sum_2/examples/Minkowski_sum_2/CMakeLists.txt b/Minkowski_sum_2/examples/Minkowski_sum_2/CMakeLists.txt index 794797f38e6..2675890b483 100644 --- a/Minkowski_sum_2/examples/Minkowski_sum_2/CMakeLists.txt +++ b/Minkowski_sum_2/examples/Minkowski_sum_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Minkowski_sum_2_Examples) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Minkowski_sum_2/include/CGAL/Minkowski_sum_2/AABB_collision_detector_2.h b/Minkowski_sum_2/include/CGAL/Minkowski_sum_2/AABB_collision_detector_2.h index 4a4d8ab4757..28e51503f8a 100644 --- a/Minkowski_sum_2/include/CGAL/Minkowski_sum_2/AABB_collision_detector_2.h +++ b/Minkowski_sum_2/include/CGAL/Minkowski_sum_2/AABB_collision_detector_2.h @@ -86,7 +86,7 @@ public: *m_p.holes_begin()->vertices_begin() + Vector_2(ORIGIN, t); // Use bounded_side_2() instead of on_bounded_side() because the latter - // checks vor simplicity every time. + // checks for simplicity every time. bool in_mp(true); if (! m_p.outer_boundary().is_empty()) in_mp = diff --git a/Minkowski_sum_2/include/CGAL/Polygon_vertical_decomposition_2.h b/Minkowski_sum_2/include/CGAL/Polygon_vertical_decomposition_2.h index 28a13dd4dcd..f862c3c494a 100644 --- a/Minkowski_sum_2/include/CGAL/Polygon_vertical_decomposition_2.h +++ b/Minkowski_sum_2/include/CGAL/Polygon_vertical_decomposition_2.h @@ -283,7 +283,7 @@ private: CGAL::decompose(arr, std::back_inserter(vd_list)); // Go over the vertices (given in ascending lexicographical xy-order), - // and add segments to the feautres below and above it. + // and add segments to the features below and above it. typename Vert_decomp_list::iterator it, prev = vd_list.end(); for (it = vd_list.begin(); it != vd_list.end(); ++it) { // If the feature above the previous vertex is not the current vertex, diff --git a/Minkowski_sum_2/test/Minkowski_sum_2/CMakeLists.txt b/Minkowski_sum_2/test/Minkowski_sum_2/CMakeLists.txt index be75477e286..8101b6f796f 100644 --- a/Minkowski_sum_2/test/Minkowski_sum_2/CMakeLists.txt +++ b/Minkowski_sum_2/test/Minkowski_sum_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Minkowski_sum_2_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Minkowski_sum_3/examples/Minkowski_sum_3/CMakeLists.txt b/Minkowski_sum_3/examples/Minkowski_sum_3/CMakeLists.txt index 3b1c6074d70..ce370521c8d 100644 --- a/Minkowski_sum_3/examples/Minkowski_sum_3/CMakeLists.txt +++ b/Minkowski_sum_3/examples/Minkowski_sum_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Minkowski_sum_3_Examples) find_package(CGAL REQUIRED) diff --git a/Minkowski_sum_3/test/Minkowski_sum_3/CMakeLists.txt b/Minkowski_sum_3/test/Minkowski_sum_3/CMakeLists.txt index a3a743e19f0..be42c09b870 100644 --- a/Minkowski_sum_3/test/Minkowski_sum_3/CMakeLists.txt +++ b/Minkowski_sum_3/test/Minkowski_sum_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Minkowski_sum_3_Tests) find_package(CGAL REQUIRED) diff --git a/Modifier/test/Modifier/CMakeLists.txt b/Modifier/test/Modifier/CMakeLists.txt index 1d4c9e8e7ce..f3e97f25058 100644 --- a/Modifier/test/Modifier/CMakeLists.txt +++ b/Modifier/test/Modifier/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Modifier_Tests) find_package(CGAL REQUIRED) diff --git a/Modular_arithmetic/examples/Modular_arithmetic/CMakeLists.txt b/Modular_arithmetic/examples/Modular_arithmetic/CMakeLists.txt index 0f2306238e2..3c6dac4fb32 100644 --- a/Modular_arithmetic/examples/Modular_arithmetic/CMakeLists.txt +++ b/Modular_arithmetic/examples/Modular_arithmetic/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Modular_arithmetic_Examples) find_package(CGAL REQUIRED) diff --git a/Modular_arithmetic/test/Modular_arithmetic/CMakeLists.txt b/Modular_arithmetic/test/Modular_arithmetic/CMakeLists.txt index 5d147ff123e..2e1de64de95 100644 --- a/Modular_arithmetic/test/Modular_arithmetic/CMakeLists.txt +++ b/Modular_arithmetic/test/Modular_arithmetic/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Modular_arithmetic_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Nef_2/examples/Nef_2/CMakeLists.txt b/Nef_2/examples/Nef_2/CMakeLists.txt index fecda3aeae4..9ca8957decf 100644 --- a/Nef_2/examples/Nef_2/CMakeLists.txt +++ b/Nef_2/examples/Nef_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Nef_2_Examples) find_package(CGAL REQUIRED) diff --git a/Nef_2/test/Nef_2/CMakeLists.txt b/Nef_2/test/Nef_2/CMakeLists.txt index 930c50bda45..ef5af7b668c 100644 --- a/Nef_2/test/Nef_2/CMakeLists.txt +++ b/Nef_2/test/Nef_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Nef_2_Tests) find_package(CGAL REQUIRED) diff --git a/Nef_3/doc/Nef_3/CGAL/Nef_polyhedron_3.h b/Nef_3/doc/Nef_3/CGAL/Nef_polyhedron_3.h index ff3fd4c57e8..06f67260279 100644 --- a/Nef_3/doc/Nef_3/CGAL/Nef_polyhedron_3.h +++ b/Nef_3/doc/Nef_3/CGAL/Nef_polyhedron_3.h @@ -1057,12 +1057,12 @@ public: typedef unspecified_type SHalfedge_around_facet_const_circulator; /*! - non-mutable iterator over the cylces of a sface. + non-mutable iterator over the cycles of a sface. */ typedef unspecified_type SFace_cycle_const_iterator; /*! - non-mutable iterator over the cylces of a halffacet. + non-mutable iterator over the cycles of a halffacet. */ typedef unspecified_type Halffacet_cycle_const_iterator; diff --git a/Nef_3/examples/Nef_3/CMakeLists.txt b/Nef_3/examples/Nef_3/CMakeLists.txt index f734dd291bf..f75cbdea24d 100644 --- a/Nef_3/examples/Nef_3/CMakeLists.txt +++ b/Nef_3/examples/Nef_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Nef_3_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Nef_3/examples/Nef_3/draw_nef_3.cpp b/Nef_3/examples/Nef_3/draw_nef_3.cpp index 0ccd07ba6f9..4037078a9a4 100644 --- a/Nef_3/examples/Nef_3/draw_nef_3.cpp +++ b/Nef_3/examples/Nef_3/draw_nef_3.cpp @@ -16,7 +16,7 @@ int main(int argc, char *argv[]) Polyhedron P1, P2; std::ifstream ifs1((argc > 1) ? argv[1] : CGAL::data_file_path("meshes/cross_quad.off")); ifs1 >> P1; - std::ifstream ifs2((argc > 1) ? argv[1] : CGAL::data_file_path("meshes/beam.off")); + std::ifstream ifs2((argc > 2) ? argv[2] : CGAL::data_file_path("meshes/beam.off")); ifs2 >> P2; // initialize nef from polyhedron diff --git a/Nef_3/include/CGAL/Nef_3/SNC_const_decorator.h b/Nef_3/include/CGAL/Nef_3/SNC_const_decorator.h index 47e85c817ae..11b1b866f63 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_const_decorator.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_const_decorator.h @@ -369,7 +369,7 @@ public: continue; } - // We have to comapare the two scalar products sk0 and sk1. Therefore + // We have to compare the two scalar products sk0 and sk1. Therefore // we have to normalize the input vectors vec0 and vec1, which means // that we have to divide them by their lengths len0 and len1. // To cicumvent irrational numbers, we square the whole inequality. diff --git a/Nef_3/include/CGAL/Nef_3/polygon_mesh_to_nef_3.h b/Nef_3/include/CGAL/Nef_3/polygon_mesh_to_nef_3.h index d222d741100..8dbae12430b 100644 --- a/Nef_3/include/CGAL/Nef_3/polygon_mesh_to_nef_3.h +++ b/Nef_3/include/CGAL/Nef_3/polygon_mesh_to_nef_3.h @@ -209,6 +209,7 @@ void polygon_mesh_to_nef_3(const PolygonMesh& P, SNC_structure& S, FaceIndexMap PolygonMesh, SNC_structure,HalfedgeIndexMap> index_adder(P,himap); for(vertex_descriptor pv : vertices(P) ) { + if (halfedge(pv, P) == boost::graph_traits::null_halfedge()) continue; // skip isolated vertices typename boost::property_traits::reference npv = get(pmap,pv); Vertex_handle nv = S.new_vertex(); diff --git a/Nef_3/test/Nef_3/CMakeLists.txt b/Nef_3/test/Nef_3/CMakeLists.txt index fce9d8ba635..c677695e7a4 100644 --- a/Nef_3/test/Nef_3/CMakeLists.txt +++ b/Nef_3/test/Nef_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Nef_3_Tests) find_package(CGAL REQUIRED) diff --git a/Nef_S2/doc/Nef_S2/CGAL/Nef_polyhedron_S2.h b/Nef_S2/doc/Nef_S2/CGAL/Nef_polyhedron_S2.h index 96dfc3d41f5..8be2fe077b5 100644 --- a/Nef_S2/doc/Nef_S2/CGAL/Nef_polyhedron_S2.h +++ b/Nef_S2/doc/Nef_S2/CGAL/Nef_polyhedron_S2.h @@ -325,14 +325,14 @@ supporting `s`. const Sphere_circle& sphere_circle() ; /*! -returns the sperical +returns the spherical segment oriented from `target()` to `source()` with the same point set as `s`. */ Sphere_segment opposite() ; /*! -returns the sperical +returns the spherical segment oriented from `target()` to `source()` with the point set completing `s` to a full circle. */ diff --git a/Nef_S2/examples/Nef_S2/CMakeLists.txt b/Nef_S2/examples/Nef_S2/CMakeLists.txt index 48cabdc0df1..98f9d50a745 100644 --- a/Nef_S2/examples/Nef_S2/CMakeLists.txt +++ b/Nef_S2/examples/Nef_S2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Nef_S2_Examples) find_package(CGAL REQUIRED) diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h b/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h index 24496cae987..f611afe7b02 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_overlayer.h @@ -1020,7 +1020,7 @@ check_sphere(const Seg_list& L, bool compute_halfsphere[3][2]) const { // int l = it->compare_length_to_halfcircle(); CGAL_NEF_TRACEN("source " << it->source()); CGAL_NEF_TRACEN("target " << it->target()); - CGAL_NEF_TRACEN("cicle " << it->sphere_circle()); + CGAL_NEF_TRACEN("circle " << it->sphere_circle()); CGAL_NEF_TRACEN("is long " << it->is_long()); if(it->is_short()) continue; diff --git a/Nef_S2/include/CGAL/Nef_S2/Sphere_segment.h b/Nef_S2/include/CGAL/Nef_S2/Sphere_segment.h index a526ec5085d..241cc65ae43 100644 --- a/Nef_S2/include/CGAL/Nef_S2/Sphere_segment.h +++ b/Nef_S2/include/CGAL/Nef_S2/Sphere_segment.h @@ -150,13 +150,13 @@ const Sphere_circle& sphere_circle() const { return this->ptr()->c_; } /*{\Mop the great circle supporting |\Mvar|.}*/ Sphere_segment opposite() const -/*{\Mop returns the sperical segment oriented from |target()| +/*{\Mop returns the spherical segment oriented from |target()| to |source()| with the same point set as |\Mvar|. }*/ { return Sphere_segment( target(),source(),sphere_circle().opposite()); } Sphere_segment complement() const -/*{\Mop returns the sperical segment oriented from |target()| +/*{\Mop returns the spherical segment oriented from |target()| to |source()| with the point set completing |\Mvar| to a full circle. }*/ { return Sphere_segment(target(),source(),sphere_circle()); } diff --git a/Nef_S2/test/Nef_S2/CMakeLists.txt b/Nef_S2/test/Nef_S2/CMakeLists.txt index bc4b0ef2bb8..f017155ef25 100644 --- a/Nef_S2/test/Nef_S2/CMakeLists.txt +++ b/Nef_S2/test/Nef_S2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Nef_S2_Tests) find_package(CGAL REQUIRED) diff --git a/NewKernel_d/test/NewKernel_d/CMakeLists.txt b/NewKernel_d/test/NewKernel_d/CMakeLists.txt index bb66aa77eb3..ac92d09a3a0 100644 --- a/NewKernel_d/test/NewKernel_d/CMakeLists.txt +++ b/NewKernel_d/test/NewKernel_d/CMakeLists.txt @@ -2,7 +2,7 @@ # This is the CMake script for compiling a CGAL application. # Then modified by hand to add Eigen3. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(NewKernel_d_Tests) if(CMAKE_COMPILER_IS_GNUCCX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4) diff --git a/Number_types/include/CGAL/Mpzf.h b/Number_types/include/CGAL/Mpzf.h index 44bb8fd9246..2820b3a2b92 100644 --- a/Number_types/include/CGAL/Mpzf.h +++ b/Number_types/include/CGAL/Mpzf.h @@ -168,7 +168,7 @@ template struct pool3 { T data_ = 0; ~cleaner(){ // Deallocate everything. As an alternative, we could store it in a - // global location, for re-use by a later thread. + // global location, for reuse by a later thread. while (!empty()) delete[] (pop() - (extra + 1)); } diff --git a/Number_types/include/CGAL/Sqrt_extension/Fraction_traits.h b/Number_types/include/CGAL/Sqrt_extension/Fraction_traits.h index a4daeef3828..1f884370c74 100644 --- a/Number_types/include/CGAL/Sqrt_extension/Fraction_traits.h +++ b/Number_types/include/CGAL/Sqrt_extension/Fraction_traits.h @@ -43,7 +43,7 @@ namespace Intern{ * They are decomposable iff their coefficient type is. * The denominator \e d of an extension \e ext is a low common multiple * (see \c CGAL::Fraction_traits::Common_factor for details) of the - * denominators of its coefficients. The numerator is the extenion + * denominators of its coefficients. The numerator is the extension * \e d*ext with a fraction-free coefficient type. * * This works for nested Sqrt_extensions, too. diff --git a/Number_types/test/Number_types/CMakeLists.txt b/Number_types/test/Number_types/CMakeLists.txt index 2dd6186a70d..339285db0d7 100644 --- a/Number_types/test/Number_types/CMakeLists.txt +++ b/Number_types/test/Number_types/CMakeLists.txt @@ -3,7 +3,7 @@ # that dependency so as to test all the number types not depending on CORE # when it is not installed -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Number_types_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Number_types/test/Number_types/CORE_Expr.cpp b/Number_types/test/Number_types/CORE_Expr.cpp index 6fd99d12e41..1ab7ca305e1 100644 --- a/Number_types/test/Number_types/CORE_Expr.cpp +++ b/Number_types/test/Number_types/CORE_Expr.cpp @@ -550,7 +550,7 @@ void algebraic_real_test() } //simplify { - // just a synatx check + // just a syntax check ALGNUM(P_s2510,1,2).simplify(); } } diff --git a/Optimal_bounding_box/benchmark/Optimal_bounding_box/CMakeLists.txt b/Optimal_bounding_box/benchmark/Optimal_bounding_box/CMakeLists.txt index 0bbc27d0aa8..24d8eccb2a2 100644 --- a/Optimal_bounding_box/benchmark/Optimal_bounding_box/CMakeLists.txt +++ b/Optimal_bounding_box/benchmark/Optimal_bounding_box/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Optimal_bounding_box_Benchmark) # CGAL and its components diff --git a/Optimal_bounding_box/examples/Optimal_bounding_box/CMakeLists.txt b/Optimal_bounding_box/examples/Optimal_bounding_box/CMakeLists.txt index d771e4440e4..8fc0f22e1e5 100644 --- a/Optimal_bounding_box/examples/Optimal_bounding_box/CMakeLists.txt +++ b/Optimal_bounding_box/examples/Optimal_bounding_box/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Optimal_bounding_box_Examples) find_package(CGAL REQUIRED) diff --git a/Optimal_bounding_box/test/Optimal_bounding_box/CMakeLists.txt b/Optimal_bounding_box/test/Optimal_bounding_box/CMakeLists.txt index 0bbca049598..2c11f89fac1 100644 --- a/Optimal_bounding_box/test/Optimal_bounding_box/CMakeLists.txt +++ b/Optimal_bounding_box/test/Optimal_bounding_box/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Optimal_bounding_box_Tests) find_package(CGAL REQUIRED) diff --git a/Optimal_transportation_reconstruction_2/demo/Optimal_transportation_reconstruction_2/CMakeLists.txt b/Optimal_transportation_reconstruction_2/demo/Optimal_transportation_reconstruction_2/CMakeLists.txt index 207781a6c6b..865f2e74f8a 100644 --- a/Optimal_transportation_reconstruction_2/demo/Optimal_transportation_reconstruction_2/CMakeLists.txt +++ b/Optimal_transportation_reconstruction_2/demo/Optimal_transportation_reconstruction_2/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling the Optimal_transportation_reconstruction_2 demo. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Optimal_transportation_reconstruction_2_Demo) # Find CGAL and CGAL Qt6 diff --git a/Optimal_transportation_reconstruction_2/examples/Optimal_transportation_reconstruction_2/CMakeLists.txt b/Optimal_transportation_reconstruction_2/examples/Optimal_transportation_reconstruction_2/CMakeLists.txt index c1812b163a8..bd9f655378c 100644 --- a/Optimal_transportation_reconstruction_2/examples/Optimal_transportation_reconstruction_2/CMakeLists.txt +++ b/Optimal_transportation_reconstruction_2/examples/Optimal_transportation_reconstruction_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Optimal_transportation_reconstruction_2_Examples) find_package(CGAL REQUIRED) diff --git a/Optimal_transportation_reconstruction_2/test/Optimal_transportation_reconstruction_2/CMakeLists.txt b/Optimal_transportation_reconstruction_2/test/Optimal_transportation_reconstruction_2/CMakeLists.txt index c06e139cc22..e29f69f4789 100644 --- a/Optimal_transportation_reconstruction_2/test/Optimal_transportation_reconstruction_2/CMakeLists.txt +++ b/Optimal_transportation_reconstruction_2/test/Optimal_transportation_reconstruction_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Optimal_transportation_reconstruction_2_Tests) find_package(CGAL REQUIRED) diff --git a/Orthtree/benchmark/Orthtree/CMakeLists.txt b/Orthtree/benchmark/Orthtree/CMakeLists.txt index 24274ae62b8..db70e151365 100644 --- a/Orthtree/benchmark/Orthtree/CMakeLists.txt +++ b/Orthtree/benchmark/Orthtree/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Orthtree_benchmarks) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core) diff --git a/Orthtree/examples/Orthtree/CMakeLists.txt b/Orthtree/examples/Orthtree/CMakeLists.txt index ee2c7502a8d..476dfbfb5fc 100644 --- a/Orthtree/examples/Orthtree/CMakeLists.txt +++ b/Orthtree/examples/Orthtree/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Orthtree_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core) diff --git a/Orthtree/test/Orthtree/CMakeLists.txt b/Orthtree/test/Orthtree/CMakeLists.txt index c483d861c73..95fe59cc1f3 100644 --- a/Orthtree/test/Orthtree/CMakeLists.txt +++ b/Orthtree/test/Orthtree/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Orthtree_Tests) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core) diff --git a/Partition_2/examples/Partition_2/CMakeLists.txt b/Partition_2/examples/Partition_2/CMakeLists.txt index 2cc69761b12..24b09d7c89e 100644 --- a/Partition_2/examples/Partition_2/CMakeLists.txt +++ b/Partition_2/examples/Partition_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Partition_2_Examples) find_package(CGAL REQUIRED) diff --git a/Partition_2/test/Partition_2/CMakeLists.txt b/Partition_2/test/Partition_2/CMakeLists.txt index ae8eea1cceb..a2ad0dec5b1 100644 --- a/Partition_2/test/Partition_2/CMakeLists.txt +++ b/Partition_2/test/Partition_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Partition_2_Tests) find_package(CGAL REQUIRED) diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2DelaunayTriangulationTraits_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2DelaunayTriangulationTraits_2.h index f9a8d6be4d9..7e16d0f3a2c 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2DelaunayTriangulationTraits_2.h +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2DelaunayTriangulationTraits_2.h @@ -6,7 +6,7 @@ \cgalConcept The concept `Periodic_2DelaunayTriangulationTraits_2` is the first template parameter of the class -`Periodic_2_Delaunay_triangulation_2`. It refines the concepts +`CGAL::Periodic_2_Delaunay_triangulation_2`. It refines the concepts `Periodic_2TriangulationTraits_2` and `DelaunayTriangulationTraits_2`. It redefines the geometric objects, predicates and constructions to work with point-offset pairs. In most cases the offsets will be (0,0) and the @@ -125,4 +125,3 @@ public: /// @} }; /* end Periodic_2DelaunayTriangulationTraits_2 */ - diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationTraits_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationTraits_2.h index 658d1a104da..55b9115ee30 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationTraits_2.h +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationTraits_2.h @@ -6,7 +6,7 @@ \cgalConcept The concept `Periodic_2TriangulationTraits_2` is the first template parameter of the classes -`Periodic_2_triangulation_2`. This concept provides the types of +`CGAL::Periodic_2_triangulation_2`. This concept provides the types of the geometric primitives used in the triangulation and some function object types for the required predicates on those primitives. @@ -296,4 +296,3 @@ public: /// @} }; /* end Periodic_2TriangulationTraits_2 */ - diff --git a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/CMakeLists.txt b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/CMakeLists.txt index 33a36faa3c1..77b3ecbfc10 100644 --- a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/CMakeLists.txt +++ b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_2_triangulation_2_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/CMakeLists.txt b/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/CMakeLists.txt index cc62d1cc248..3857996a534 100644 --- a/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/CMakeLists.txt +++ b/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_2_triangulation_2_Tests) find_package(CGAL REQUIRED) diff --git a/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/dependencies b/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/dependencies index d69d0250b9b..4af20c22d76 100644 --- a/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/dependencies +++ b/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/dependencies @@ -7,6 +7,5 @@ BGL Triangulation_3 Periodic_3_triangulation_3 Mesh_3 -Surface_mesher Polyhedron Miscellany diff --git a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/CMakeLists.txt b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/CMakeLists.txt index 326bb10188c..4433ae373dc 100644 --- a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/CMakeLists.txt +++ b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_3_mesh_3_Examples) # CGAL and its components diff --git a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_periodic_polyhedral_domain.cpp b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_periodic_polyhedral_domain.cpp index d66243f35a5..2d86e6a59d0 100644 --- a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_periodic_polyhedral_domain.cpp +++ b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_periodic_polyhedral_domain.cpp @@ -25,7 +25,7 @@ namespace CGAL { // This is a wrapper to convert a polyhedral surface to a periodic polyhedral domain // over a user-provided canonical domain. // -// It is the user's responsability to ensure that the polyhedral domain is actually periodic +// It is the user's responsibility to ensure that the polyhedral domain is actually periodic // over the canonical domain, i.e. there is periodic continuity at the boundaries // of the canonical domain. template diff --git a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/CMakeLists.txt b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/CMakeLists.txt index 9f8d277a28a..1fb0f56e396 100644 --- a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/CMakeLists.txt +++ b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_3_mesh_3_Tests) find_package(CGAL REQUIRED COMPONENTS ImageIO) diff --git a/Periodic_3_triangulation_3/demo/Periodic_3_triangulation_3/CMakeLists.txt b/Periodic_3_triangulation_3/demo/Periodic_3_triangulation_3/CMakeLists.txt index bab63515c66..e91b1e5719c 100644 --- a/Periodic_3_triangulation_3/demo/Periodic_3_triangulation_3/CMakeLists.txt +++ b/Periodic_3_triangulation_3/demo/Periodic_3_triangulation_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_3_triangulation_3_Demo) # Find CGAL diff --git a/Periodic_3_triangulation_3/demo/Periodic_Lloyd_3/CMakeLists.txt b/Periodic_3_triangulation_3/demo/Periodic_Lloyd_3/CMakeLists.txt index 579699f9b6e..d67cc64b6b1 100644 --- a/Periodic_3_triangulation_3/demo/Periodic_Lloyd_3/CMakeLists.txt +++ b/Periodic_3_triangulation_3/demo/Periodic_Lloyd_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_Lloyd_3_Demo) # Find includes in corresponding build directories diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3RegularTriangulationTraits_3.h b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3RegularTriangulationTraits_3.h index b190e091be4..79265e07187 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3RegularTriangulationTraits_3.h +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3RegularTriangulationTraits_3.h @@ -20,7 +20,7 @@ functor the version without offsets. \cgalHasModelsEnd In addition to the requirements described for the traits class -RegularTriangulationTraits_3, the geometric traits class of a +`RegularTriangulationTraits_3`, the geometric traits class of a periodic regular triangulation must fulfill the following requirements. @@ -250,4 +250,3 @@ Construct_weighted_circumcenter_3 construct_weighted_circumcenter_3_object(); /// @} }; /* end Periodic_3RegularTriangulationTraits_3 */ - diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3TriangulationTraits_3.h b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3TriangulationTraits_3.h index b25e098a01c..4f806a44bd8 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3TriangulationTraits_3.h +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Concepts/Periodic_3TriangulationTraits_3.h @@ -4,7 +4,7 @@ \cgalConcept The concept `Periodic_3TriangulationTraits_3` is the first template parameter of the class -`Periodic_3_triangulation_3`. It refines the concept +`CGAL::Periodic_3_triangulation_3`. It refines the concept `TriangulationTraits_3` from the \cgal 3D Triangulations. It redefines the geometric objects, predicates and constructions to work with point-offset pairs. In most cases the offsets will be @@ -258,4 +258,3 @@ Construct_tetrahedron_3 construct_tetrahedron_3_object(); /// @} }; /* end Periodic_3TriangulationTraits_3 */ - diff --git a/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/CMakeLists.txt b/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/CMakeLists.txt index cc5083321e9..f3e7a18fe8c 100644 --- a/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/CMakeLists.txt +++ b/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_3_triangulation_3_Examples) find_package(CGAL REQUIRED) diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_dummy_generator.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_dummy_generator.h index 1d11a29adc5..788367ba707 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_dummy_generator.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_dummy_generator.h @@ -131,7 +131,7 @@ insert_generic_dummy_points() return goff; }; - // This should be prefered from building points from the lattice offset + // This should be preferred from building points from the lattice offset // because the grid offset (by construction) aligns with the canonical domain, // and there is thus fewer numerical errors. auto construct_point_from_grid_offset = [&](const Offset& goff) -> Point_3 diff --git a/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/CMakeLists.txt b/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/CMakeLists.txt index 0caec686601..815a9b879ee 100644 --- a/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/CMakeLists.txt +++ b/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_3_triangulation_3_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Periodic_4_hyperbolic_triangulation_2/benchmark/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt b/Periodic_4_hyperbolic_triangulation_2/benchmark/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt index e83a7c4a836..17ac086a9bb 100644 --- a/Periodic_4_hyperbolic_triangulation_2/benchmark/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt +++ b/Periodic_4_hyperbolic_triangulation_2/benchmark/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_4_hyperbolic_triangulation_2_Benchmarks) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Periodic_4_hyperbolic_triangulation_2/demo/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt b/Periodic_4_hyperbolic_triangulation_2/demo/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt index ee592422710..fc1fe3c37f5 100644 --- a/Periodic_4_hyperbolic_triangulation_2/demo/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt +++ b/Periodic_4_hyperbolic_triangulation_2/demo/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_4_hyperbolic_triangulation_2_Demo) # Find includes in corresponding build directories diff --git a/Periodic_4_hyperbolic_triangulation_2/doc/Periodic_4_hyperbolic_triangulation_2/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h b/Periodic_4_hyperbolic_triangulation_2/doc/Periodic_4_hyperbolic_triangulation_2/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h index aa67d8eee10..76ad9181abf 100644 --- a/Periodic_4_hyperbolic_triangulation_2/doc/Periodic_4_hyperbolic_triangulation_2/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h +++ b/Periodic_4_hyperbolic_triangulation_2/doc/Periodic_4_hyperbolic_triangulation_2/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h @@ -145,7 +145,7 @@ The class expects two template parameters. bool remove(Vertex_handle v); /*! - Removes the vertices in the iterator range `[firs, last)` from the triangulation. + Removes the vertices in the iterator range `[first, last)` from the triangulation. \pre all vertices in `[first, last)` are vertices of the triangulation. */ template diff --git a/Periodic_4_hyperbolic_triangulation_2/examples/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt b/Periodic_4_hyperbolic_triangulation_2/examples/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt index a4ee8805749..333f5b8bb70 100644 --- a/Periodic_4_hyperbolic_triangulation_2/examples/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt +++ b/Periodic_4_hyperbolic_triangulation_2/examples/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_4_hyperbolic_triangulation_2_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core) diff --git a/Periodic_4_hyperbolic_triangulation_2/test/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt b/Periodic_4_hyperbolic_triangulation_2/test/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt index ef5923f844c..e96c2cde310 100644 --- a/Periodic_4_hyperbolic_triangulation_2/test/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt +++ b/Periodic_4_hyperbolic_triangulation_2/test/Periodic_4_hyperbolic_triangulation_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Periodic_4_hyperbolic_triangulation_2_Tests) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core) diff --git a/Point_set_2/examples/Point_set_2/CMakeLists.txt b/Point_set_2/examples/Point_set_2/CMakeLists.txt index ef08a7145a4..1647542ae82 100644 --- a/Point_set_2/examples/Point_set_2/CMakeLists.txt +++ b/Point_set_2/examples/Point_set_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Point_set_2_Examples) find_package(CGAL REQUIRED) diff --git a/Point_set_2/include/CGAL/range_search_delaunay_2.h b/Point_set_2/include/CGAL/range_search_delaunay_2.h index c6b81efcd41..04a34296432 100644 --- a/Point_set_2/include/CGAL/range_search_delaunay_2.h +++ b/Point_set_2/include/CGAL/range_search_delaunay_2.h @@ -202,7 +202,7 @@ OutputIterator range_search(Dt& delau, // Note that the function only works correctly with exact constructions // because it computes the circumcenter of the points a, b, and c // and then performs a range query with this circle. -// When vertices of the trinagulation are on the circle the outcome +// When vertices of the triangulation are on the circle the outcome // is not deterministic. // A solution would be to not construct a circle, but to use the // function CGAL::side_of_bounded_circle diff --git a/Point_set_2/test/Point_set_2/CMakeLists.txt b/Point_set_2/test/Point_set_2/CMakeLists.txt index b5aded82360..7c16ce3b6e6 100644 --- a/Point_set_2/test/Point_set_2/CMakeLists.txt +++ b/Point_set_2/test/Point_set_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Point_set_2_Tests) find_package(CGAL REQUIRED) diff --git a/Point_set_3/examples/Point_set_3/CMakeLists.txt b/Point_set_3/examples/Point_set_3/CMakeLists.txt index 833fb509719..95a6169ec51 100644 --- a/Point_set_3/examples/Point_set_3/CMakeLists.txt +++ b/Point_set_3/examples/Point_set_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Point_set_3_Examples) # CGAL and its components diff --git a/Point_set_3/test/Point_set_3/CMakeLists.txt b/Point_set_3/test/Point_set_3/CMakeLists.txt index 879f204e069..264891b55ba 100644 --- a/Point_set_3/test/Point_set_3/CMakeLists.txt +++ b/Point_set_3/test/Point_set_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Point_set_3_Tests) # CGAL and its components diff --git a/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt b/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt index ac5e71b1aa1..e202d670a22 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt +++ b/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling this folder. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Point_set_processing_3_Examples) # Find CGAL diff --git a/Point_set_processing_3/include/CGAL/scanline_orient_normals.h b/Point_set_processing_3/include/CGAL/scanline_orient_normals.h index 6869db72e97..f0bbdc4f5c6 100644 --- a/Point_set_processing_3/include/CGAL/scanline_orient_normals.h +++ b/Point_set_processing_3/include/CGAL/scanline_orient_normals.h @@ -373,10 +373,10 @@ void orient_scanline (Iterator begin, Iterator end, iterating on `points`: - if the named parameter `scanline_id_map` is provided, the range - is cut everytime the id changes. + is cut every time the id changes. - if no scanline ID map is provided, a fallback method simply cuts - the range everytime 3 consecutive points form an acute angle on + the range every time 3 consecutive points form an acute angle on the projected XY-plane. This fallback method gives suboptimal results. diff --git a/Point_set_processing_3/test/Point_set_processing_3/CMakeLists.txt b/Point_set_processing_3/test/Point_set_processing_3/CMakeLists.txt index cbd77792290..7c13d2912e3 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/CMakeLists.txt +++ b/Point_set_processing_3/test/Point_set_processing_3/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling this folder. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Point_set_processing_3_Tests) # Find CGAL diff --git a/Poisson_surface_reconstruction_3/doc/Poisson_surface_reconstruction_3/dependencies b/Poisson_surface_reconstruction_3/doc/Poisson_surface_reconstruction_3/dependencies index 6afa11f1b24..cc72c124cd4 100644 --- a/Poisson_surface_reconstruction_3/doc/Poisson_surface_reconstruction_3/dependencies +++ b/Poisson_surface_reconstruction_3/doc/Poisson_surface_reconstruction_3/dependencies @@ -4,6 +4,5 @@ STL_Extension Algebraic_foundations Circulator Stream_support -Surface_mesher Point_set_processing_3 Solver_interface diff --git a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/CMakeLists.txt b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/CMakeLists.txt index d62b4bccd03..6d0b470175d 100644 --- a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/CMakeLists.txt +++ b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling this folder. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Poisson_surface_reconstruction_3_Examples) # Find CGAL 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 19b2afb4942..72942c49c9f 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 @@ -13,17 +13,22 @@ #include #include #include -#include #include -#include -#include -#include -#include + +#include +#include +#include +#include +#include +#include + #include #include #include #include +#include + #include #include #include @@ -50,10 +55,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; @@ -304,36 +310,33 @@ int main(int argc, char * argv[]) Sphere bsphere = function.bounding_sphere(); FT radius = std::sqrt(bsphere.squared_radius()); - // Defines the implicit surface: requires defining a - // 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; @@ -344,7 +347,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 92fef2cc110..d44d13be084 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 @@ -1,10 +1,14 @@ #include #include -#include -#include -#include -#include #include + +#include +#include +#include +#include +#include +#include + #include #include #include @@ -28,9 +32,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) { @@ -67,40 +72,35 @@ int main(void) (points, 6 /* knn = 1 ring */, CGAL::parameters::point_map (Point_map())); - // Gets one point inside the implicit surface - // and computes implicit function bounding sphere radius. - Point inner_point = function.get_inner_point(); + //Computes implicit function bounding sphere radius. Sphere bsphere = function.bounding_sphere(); FT radius = std::sqrt(bsphere.squared_radius()); - // Defines the implicit surface: requires defining a - // 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; diff --git a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_implicit_surface_3.h b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_implicit_surface_3.h index 79b070f1629..f11648362e9 100644 --- a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_implicit_surface_3.h +++ b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_implicit_surface_3.h @@ -109,15 +109,6 @@ namespace CGAL { return surface(f, sphere, error_bound); } -// template -// struct Surface_mesh_traits_generator_3 > -// { -// typedef Poisson_implicit_surface_3 Surface_type; -// typedef typename Surface_mesher::Poisson_implicit_surface_oracle_3 Type; -// typedef Type type; // Boost meta-programming compatibility -// }; - // non documented class template class Poisson_implicit_function_wrapper : public CGAL::cpp98::unary_function diff --git a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_reconstruction_function.h b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_reconstruction_function.h index 68c71a27151..ae2544567d7 100644 --- a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_reconstruction_function.h +++ b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_reconstruction_function.h @@ -260,7 +260,10 @@ private: Cell_handle get() const { - return Triangulation_data_structure::Cell_range::s_iterator_to(*m_cell); + if(m_cell == nullptr) + return {}; + else + return Triangulation_data_structure::Cell_range::s_iterator_to(*m_cell); } void set (Cell_handle ch) { m_cell = ch.operator->(); } }; diff --git a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_surface_reconstruction_3/internal/Poisson_mesh_traits_generator_3.h b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_surface_reconstruction_3/internal/Poisson_mesh_traits_generator_3.h new file mode 100644 index 00000000000..c9330fa5704 --- /dev/null +++ b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_surface_reconstruction_3/internal/Poisson_mesh_traits_generator_3.h @@ -0,0 +1,49 @@ +// Copyright (c) 2006-2007 INRIA Sophia-Antipolis (France). +// Copyright (c) 2024 GeometryFactory Sarl (France) +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org). +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial +// +// Author(s) : Laurent Rineau, Jane Tournois + +// This file is a copy-paste-adaptation of Surface_mesher/include/CGAL/Surface_mesh_traits_generator_3.h +// Surface_mesher that has been deprecated and will be removed in the future. + +#ifndef CGAL_POISSON_MESH_TRAITS_GENERATOR_3_H +#define CGAL_POISSON_MESH_TRAITS_GENERATOR_3_H + +#include + + +#include + +namespace CGAL { + +template +class Sphere_3; + +/** Default traits class. + * Partial specialization will be in other headers +*/ +template +struct Poisson_mesh_traits_generator_3 +{ + typedef typename Surface::Surface_mesher_traits_3 Type; + typedef Type type; // for Boost compatibility (meta-programming) +}; + + // specialization for Kernel::Sphere_3 +template +struct Poisson_mesh_traits_generator_3 > +{ + typedef Surface_mesher::Poisson_sphere_oracle_3 Type; + typedef Type type; // for Boost compatibility (meta-programming) +}; + +} // end namespace CGAL + +#endif // CGAL_POISSON_MESH_TRAITS_GENERATOR_3_H diff --git a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_surface_reconstruction_3/internal/Poisson_sphere_oracle_3.h b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_surface_reconstruction_3/internal/Poisson_sphere_oracle_3.h new file mode 100644 index 00000000000..fb0655be01c --- /dev/null +++ b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_surface_reconstruction_3/internal/Poisson_sphere_oracle_3.h @@ -0,0 +1,468 @@ +// Copyright (c) 2006-2007 INRIA Sophia-Antipolis (France). +// Copyright (c) 2024 GeometryFactory Sarl (France) +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org). +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial +// +// +// Author(s) : Laurent RINEAU + +// This file is a copy-paste-adaptation of Surface_mesher/include/CGAL/Surface_mesher/Sphere_oracle_3.h +// Surface_mesher that has been deprecated and will be removed in the future. + +#ifndef CGAL_POISSON_SURFACE_MESHER_POISSON_SPHERE_ORACLE_3_H +#define CGAL_POISSON_SURFACE_MESHER_POISSON_SPHERE_ORACLE_3_H + +#include + +#include +#include +#include +#include + +#include + +namespace CGAL { + + namespace Surface_mesher { + + struct Poisson_null_oracle_visitor + { + template + void new_point(P&) const + { + } + }; + + + template < + class GT, + class Point_creator = Creator_uniform_3, + class Visitor = Poisson_null_oracle_visitor + > + class Poisson_sphere_oracle_3 + { + // private types + typedef Poisson_sphere_oracle_3 Self; + + typedef typename GT::Point_3 Point; + typedef typename GT::FT FT; + typedef typename GT::Sphere_3 Sphere_3; + + public: + + // Public types + typedef GT Geom_traits; + typedef typename GT::Point_3 Point_3; + typedef typename GT::Segment_3 Segment_3; + typedef typename GT::Ray_3 Ray_3; + typedef typename GT::Line_3 Line_3; + + typedef Sphere_3 Surface_3; + + typedef Point Intersection_point; + private: + // Private members + Visitor visitor; // a visitor that can modify a point, before returning it. + + public: + + // Constructors + Poisson_sphere_oracle_3 (Visitor visitor_ = Visitor() ) : + visitor(visitor_) + { +#ifdef CGAL_SURFACE_MESHER_DEBUG_CONSTRUCTORS +# ifndef CGAL_SURFACE_MESHER_IMPLICIT_SURFACE_ORACLE_3_H + std::cerr << "CONS: Poisson_sphere_oracle_3\n"; +# endif +#endif + } + + const Visitor& get_visitor() const + { + return visitor; + } + + // Predicates and Constructions + + bool is_in_volume(const Surface_3& sphere, const Point& p) const + { + typename GT::Has_on_bounded_side_3 on_bounded_side_of_sphere = + GT().has_on_bounded_side_3_object(); + + return on_bounded_side_of_sphere(sphere, p); + } + + class Intersect_3 + { + const Self& oracle; + + boost::tuple + intersection_line_sphere_lambda(const Surface_3& sphere, + const Point& a, + const Point& b) const + { + /* + Let the vectorial line equation: + m = a + lambda * ( b - a ) + (a, b, and m are points, and lambda if a real.) + + Let c be the center of the sphere, of radius r. + The intersection of the line and the sphere is given by: + (c-m)^2 = r^2 + That is: + ((c-a)^2 - r^2) + - 2 lambda (c-a)*(b-a) + + lambda^2 (b-a)^2 == 0 + + (second degre equation) + + deltaprime = delta/4 = ((c-a)(b-a))^2 - (b-a)^2 * ( (c-a)^2 -r^2 ) + + if delta > 0, root_1 = ((c-a)(b-a) - \sqrt(delta/4)) / (b-a)^2 + root_2 = ((c-a)(b-a) + \sqrt(delta/4)) / (b-a)^2 + (root_1 < root_2) + */ + + typedef typename GT::Vector_3 Vector_3; + + typename GT::Construct_vector_3 vector = + GT().construct_vector_3_object(); + typename GT::Compute_scalar_product_3 scalar_product = + GT().compute_scalar_product_3_object(); + typename GT::Compute_squared_distance_3 squared_distance = + GT().compute_squared_distance_3_object(); + typename GT::Construct_center_3 center = + GT().construct_center_3_object(); + typename GT::Compute_squared_radius_3 squared_radius = + GT().compute_squared_radius_3_object(); + + const Point c = center(sphere); + const Vector_3 ab = vector(a, b); + const Vector_3 ac = vector(a, c); + const FT ab_ac = scalar_product(ab, ac); + const FT ab2 = squared_distance(a, b); + const FT ac2 = squared_distance(a, c); + const FT r2 = squared_radius(sphere); + const FT deltaprime = ab_ac * ab_ac - ab2 * ( ac2 - r2 ); + + switch( CGAL::sign(deltaprime) ) + { + case ZERO: + return boost::make_tuple(1, ab_ac / ab2, 0); + case POSITIVE: + { + const FT sqrt_deltaprime = CGAL::sqrt(deltaprime); + return boost::make_tuple(2, + (ab_ac - sqrt_deltaprime) / ab2, + (ab_ac + sqrt_deltaprime) / ab2); + } + case NEGATIVE: + break; + } + return boost::make_tuple(0, 0, 0); + } //end intersection_line_sphere_lambda + + template + Object private_intersection(const Surface_3& sphere, + const Point& a, + const Point& b, + Assert_on_lambda test) const + { + typedef typename GT::Vector_3 Vector; + + typename GT::Construct_vector_3 vector = + GT().construct_vector_3_object(); + typename GT::Construct_scaled_vector_3 scaled_vector = + GT().construct_scaled_vector_3_object(); + typename GT::Construct_translated_point_3 translated_point = + GT().construct_translated_point_3_object(); + + int number_of_roots; + FT root_1, root_2; + boost::tie(number_of_roots, root_1, root_2) = + intersection_line_sphere_lambda(sphere, a, b); + + const Vector ab = vector(a, b); + if(number_of_roots > 0 && test(root_1)) + { + Point p = translated_point(a, scaled_vector(ab, root_1)); + oracle.get_visitor().new_point(p); + return make_object(p); + } + else if (number_of_roots > 1 && test(root_2)) + { + Point p = translated_point(a, scaled_vector(ab, root_2)); + oracle.get_visitor().new_point(p); + return make_object(p); + } + // else + return Object(); + } // end private_intersection + + struct Lambda_between_0_and_1 : public CGAL::cpp98::unary_function + { + bool operator()(const FT x) const + { + return FT(0) <= x && x <= FT(1); + } + }; + + struct Lambda_positive : public CGAL::cpp98::unary_function + { + bool operator()(const FT x) const + { + return FT(0) <= x; + } + }; + + struct Always_true : public CGAL::cpp98::unary_function + { + bool operator()(const FT) const + { + return true; + } + }; + + public: + Intersect_3(const Self& oracle) : oracle(oracle) + { + } + + Object operator()(const Surface_3& sphere, Segment_3 s) const + { + typename GT::Construct_point_on_3 point_on = + GT().construct_point_on_3_object(); + + const Point& a = point_on(s, 0); + const Point& b = point_on(s, 1); + + return private_intersection(sphere, a, b, Lambda_between_0_and_1()); + } // end operator()(Surface_3, Segment_3) + + Object operator()(const Surface_3& sphere, const Ray_3& r) const { + typename GT::Construct_point_on_3 point_on = + GT().construct_point_on_3_object(); + + const Point& a = point_on(r, 0); + const Point& b = point_on(r, 1); + + return private_intersection(sphere, a, b, Lambda_positive()); + } // end operator()(Surface_3, Ray_3) + + Object operator()(const Surface_3& sphere, const Line_3& l) const { + typename GT::Construct_point_on_3 point_on = + GT().construct_point_on_3_object(); + + const Point& a = point_on(l, 0); + const Point& b = point_on(l, 1); + + return private_intersection(sphere, a, b, Always_true()); + } // end operator()(Surface_3, Line_3) + + /** Modifies s = [a, b] by clipping it to sphere. + Return false iff s is outside sphere. */ + bool clip_segment(const Surface_3& sphere, + Point_3& a, + Point_3& b) const + { + typedef typename GT::Vector_3 Vector; + + typename GT::Has_on_bounded_side_3 on_bounded_side_of_sphere = + GT().has_on_bounded_side_3_object(); + typename GT::Construct_vector_3 vector = + GT().construct_vector_3_object(); + typename GT::Construct_scaled_vector_3 scaled_vector = + GT().construct_scaled_vector_3_object(); + typename GT::Construct_translated_point_3 translated_point = + GT().construct_translated_point_3_object(); + + const bool a_in_sphere = on_bounded_side_of_sphere(sphere, a); + const bool b_in_sphere = on_bounded_side_of_sphere(sphere, b); + + if( a_in_sphere && b_in_sphere ) + return true; + + int number_of_roots; + FT root_1, root_2; + + boost::tie(number_of_roots, root_1, root_2) = + intersection_line_sphere_lambda(sphere, a, b); + +#ifdef CGAL_SURFACE_MESHER_DEBUG_IMPLICIT_ORACLE + std::cerr << "Clip segment. Roots=(" + << root_1 << ", " << root_2 << ")\n"; +#endif + if( number_of_roots < 2 ) + return false; + + if( root_1 > FT(1) ) // root_x \in ]1,\infinity[ + return false; // no intersection + + if( root_1 >= FT(0) ) // root_1 \in [0,1[ + { // move point a + const Point original_a = a; + const Vector ab = vector(a, b); + a = translated_point(original_a, scaled_vector(ab, root_1)); + if( root_2 <= FT(1) ) /// move b if root_2 <=1 + { + b = translated_point(original_a, scaled_vector(ab, root_2)); + } + return true; + } + else // root_1 in ]-\infinity, 0[ + { // do not move point a + if( root_2 < FT(0) ) // root_x in ]-\infinity, 0[ + return false; // no intersection + else + { + const Vector ab = vector(a, b); + if( root_2 <= FT(1) ) + b = translated_point(a, scaled_vector(ab, root_2)); + return true; + } + } + } + + /** The return value s is r clipped to sphere. + Return false iff r does not intersect sphere. */ + bool clip_ray(const Surface_3& sphere, + const Ray_3& r, + Point_3& a, + Point_3& b) const + { + typedef typename GT::Vector_3 Vector; + + typename GT::Construct_point_on_3 point_on = + GT().construct_point_on_3_object(); + typename GT::Construct_vector_3 vector = + GT().construct_vector_3_object(); + typename GT::Construct_scaled_vector_3 scaled_vector = + GT().construct_scaled_vector_3_object(); + typename GT::Construct_translated_point_3 translated_point = + GT().construct_translated_point_3_object(); + + a = point_on(r, 0); + b = point_on(r, 1); + + int number_of_roots; + FT root_1, root_2; + + boost::tie(number_of_roots, root_1, root_2) = + intersection_line_sphere_lambda(sphere, a, b); + + if( number_of_roots == 2 && root_2 > FT(0) ) + { + const Vector ab = vector(a, b); + b = translated_point(a, scaled_vector(ab, root_2)); + if(root_1 > FT(0)) + a = translated_point(a, scaled_vector(ab, root_1)); + // if root_1 <= 0, a is in the ball + return true; + } + // else r does not intersect the sphere + return false; + } // end clip_ray + + /** The return value s=(ab) is l clipped to sphere. + Return false iff l does not intersect sphere. */ + bool clip_line(const Surface_3& sphere, const Line_3& l, + Point& a, + Point& b) const + { + typedef typename GT::Vector_3 Vector; + + typename GT::Construct_point_on_3 point_on = + GT().construct_point_on_3_object(); + typename GT::Construct_vector_3 vector = + GT().construct_vector_3_object(); + typename GT::Construct_scaled_vector_3 scaled_vector = + GT().construct_scaled_vector_3_object(); + typename GT::Construct_translated_point_3 translated_point = + GT().construct_translated_point_3_object(); + + a = point_on(l, 0); + b = point_on(l, 1); + + int number_of_roots; + FT root_1, root_2; + + boost::tie(number_of_roots, root_1, root_2) = + intersection_line_sphere_lambda(sphere, a, b); + + if( number_of_roots == 2 ) + { + const Point original_a = a; + const Vector ab = vector(a, b); + a = translated_point(original_a, scaled_vector(ab, root_1)); + b = translated_point(original_a, scaled_vector(ab, root_2)); + return true; + } + // else l does not intersect the sphere + return false; + } // end clip_line + + }; // end nested class Intersect_3 + + class Construct_initial_points + { + const Self& oracle; + public: + Construct_initial_points(const Self& oracle) : oracle(oracle) + { + } + + // Random points + template + OutputIteratorPoints operator() (const Surface_3& sphere, + OutputIteratorPoints out, + int n = 20) const // WARNING: why 20? + { + const Point center = + GT().construct_center_3_object()(sphere); + const FT squared_radius = + GT().compute_squared_radius_3_object()(sphere); + const double radius_in_double = + CGAL::sqrt(CGAL::to_double(squared_radius)); + + typename CGAL::Random_points_on_sphere_3 random_point_on_sphere(radius_in_double); + typename GT::Construct_vector_3 vector_3 = + GT().construct_vector_3_object(); + typename GT::Construct_translated_point_3 translate = + GT().construct_translated_point_3_object(); + + while (n-->0) + { + Point p = translate(*random_point_on_sphere++, + vector_3(CGAL::ORIGIN, center)); + oracle.get_visitor().new_point(p); + *out++ = p; + } + return out; + } + }; // end nested class Construct_initial_points + + Construct_initial_points construct_initial_points_object() const + { + return Construct_initial_points(*this); + } + + Intersect_3 intersect_3_object() const + { + return Intersect_3(*this); + } + }; // end Poisson_sphere_oracle_3 + + } // namespace Surface_mesher + +} // namespace CGAL + +#include + +#endif // CGAL_POISSON_SURFACE_MESHER_POISSON_SPHERE_ORACLE_3_H diff --git a/Poisson_surface_reconstruction_3/include/CGAL/Surface_mesher/Poisson_implicit_surface_oracle_3.h b/Poisson_surface_reconstruction_3/include/CGAL/Surface_mesher/Poisson_implicit_surface_oracle_3.h index e43214ce663..7ebcbbe814e 100644 --- a/Poisson_surface_reconstruction_3/include/CGAL/Surface_mesher/Poisson_implicit_surface_oracle_3.h +++ b/Poisson_surface_reconstruction_3/include/CGAL/Surface_mesher/Poisson_implicit_surface_oracle_3.h @@ -1,5 +1,5 @@ // Copyright (c) 2003-2007 INRIA Sophia-Antipolis (France). -// Copyright (c) 2008,2011 GeometryFactory Sarl (France) +// Copyright (c) 2008,2011,2024 GeometryFactory Sarl (France) // All rights reserved. // // This file is part of CGAL (www.cgal.org). @@ -17,9 +17,8 @@ #include -#include #include -#include +#include #include #include #include @@ -56,7 +55,7 @@ namespace CGAL { Return_min, class Point_creator = Creator_uniform_3, - class Visitor = Null_oracle_visitor + class Visitor = Poisson_null_oracle_visitor > class Poisson_implicit_surface_oracle_3 { @@ -68,7 +67,7 @@ namespace CGAL { Point_creator, Visitor> Self; - typedef Sphere_oracle_3 Sphere_oracle; + typedef Poisson_sphere_oracle_3 Sphere_oracle; typedef typename GT::Point_3 Point; @@ -329,7 +328,7 @@ namespace CGAL { #ifdef CGAL_SURFACE_MESHER_DEBUG_CLIPPED_SEGMENT std::cerr << "=" << debug_point(surface, mid) << "\n"; #endif - // the following function conditionnally call + // the following function conditionally call // mid.set_on_surface(...) if mid has such a function. set_on_surface(mid, surface_identifiers_generator(transform_functor(value_at_p1), diff --git a/Poisson_surface_reconstruction_3/include/CGAL/poisson_refine_triangulation.h b/Poisson_surface_reconstruction_3/include/CGAL/poisson_refine_triangulation.h index c103468f3f1..75a2f3fe062 100644 --- a/Poisson_surface_reconstruction_3/include/CGAL/poisson_refine_triangulation.h +++ b/Poisson_surface_reconstruction_3/include/CGAL/poisson_refine_triangulation.h @@ -21,7 +21,7 @@ #include #include #include -#include +#include namespace CGAL { @@ -142,7 +142,7 @@ private: template ::type, + typename Oracle = typename CGAL::Poisson_mesh_traits_generator_3::type, typename PreviousLevel = Null_mesher_level > class Poisson_mesher_level : @@ -220,7 +220,7 @@ unsigned int poisson_refine_triangulation( , Sizing_field , Second_sizing_field > Tets_criteria; - typedef typename CGAL::Surface_mesh_traits_generator_3::type Oracle; + typedef typename CGAL::Poisson_mesh_traits_generator_3::type Oracle; typedef Poisson_mesher_level Refiner; diff --git a/Poisson_surface_reconstruction_3/include/CGAL/poisson_surface_reconstruction.h b/Poisson_surface_reconstruction_3/include/CGAL/poisson_surface_reconstruction.h index d926f3d1172..9584e34f59f 100644 --- a/Poisson_surface_reconstruction_3/include/CGAL/poisson_surface_reconstruction.h +++ b/Poisson_surface_reconstruction_3/include/CGAL/poisson_surface_reconstruction.h @@ -1,4 +1,4 @@ -// Copyright (c) 2017 GeometryFactory (France) +// Copyright (c) 2017, 2024 GeometryFactory (France) // All rights reserved. // // This file is part of CGAL (www.cgal.org). @@ -7,17 +7,19 @@ // $Id$ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // -// Author(s) : Simon Giraudot +// Author(s) : Simon Giraudot, Jane Tournois #ifndef CGAL_POISSON_SURFACE_RECONSTRUCTION_H #define CGAL_POISSON_SURFACE_RECONSTRUCTION_H #include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include @@ -97,9 +99,10 @@ namespace CGAL { typedef typename Kernel::FT FT; typedef CGAL::Poisson_reconstruction_function Poisson_reconstruction_function; - typedef typename CGAL::Surface_mesher::Surface_mesh_default_triangulation_3_generator::Type 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 typename CGAL::Mesh_triangulation_3::type Tr; + typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; + typedef CGAL::Mesh_criteria_3 Mesh_criteria; Poisson_reconstruction_function function(begin, end, point_map, normal_map); if ( ! function.compute_implicit_function() ) @@ -112,26 +115,34 @@ namespace CGAL { FT sm_sphere_radius = 5.0 * radius; FT sm_dichotomy_error = sm_distance * spacing / 1000.0; - Surface_3 surface(function, - Sphere (inner_point, sm_sphere_radius * sm_sphere_radius), - sm_dichotomy_error / sm_sphere_radius); + Mesh_domain domain = Mesh_domain::create_implicit_mesh_domain(function, Sphere(inner_point, sm_sphere_radius), + CGAL::parameters::relative_error_bound(sm_dichotomy_error / sm_sphere_radius)); - CGAL::Surface_mesh_default_criteria_3 criteria (sm_angle, - sm_radius * spacing, - sm_distance * spacing); + Mesh_criteria criteria(CGAL::parameters::facet_angle = sm_angle, + CGAL::parameters::facet_size = sm_radius*spacing, + CGAL::parameters::facet_distance = sm_distance*spacing); - STr tr; - C2t3 c2t3(tr); - CGAL::make_surface_mesh(c2t3, - surface, - criteria, - tag); + auto turn_tag_into_mesh_3_manifold_option = [](Tag) { + if constexpr (std::is_same_v) + return CGAL::parameters::manifold_with_boundary(); + else if constexpr (std::is_same_v) + return CGAL::parameters::manifold(); + else + return CGAL::parameters::non_manifold(); + }; + + C3t3 c3t3 = CGAL::make_mesh_3(domain, criteria, + turn_tag_into_mesh_3_manifold_option(tag) + .no_exude().no_perturb() + .manifold_with_boundary()); + + const auto& tr = c3t3.triangulation(); if(tr.number_of_vertices() == 0) return false; - CGAL::facets_in_complex_2_to_triangle_mesh(c2t3, output_mesh); + CGAL::facets_in_complex_3_to_triangle_mesh(c3t3, output_mesh); return true; } diff --git a/Poisson_surface_reconstruction_3/package_info/Poisson_surface_reconstruction_3/dependencies b/Poisson_surface_reconstruction_3/package_info/Poisson_surface_reconstruction_3/dependencies index e8a4a934cd6..7bb56e4dd65 100644 --- a/Poisson_surface_reconstruction_3/package_info/Poisson_surface_reconstruction_3/dependencies +++ b/Poisson_surface_reconstruction_3/package_info/Poisson_surface_reconstruction_3/dependencies @@ -1,9 +1,12 @@ +AABB_tree Algebraic_foundations Arithmetic_kernel BGL CGAL_Core +CGAL_ImageIO Cartesian_kernel Circulator +Convex_hull_2 Distance_2 Distance_3 Filtered_kernel @@ -16,21 +19,24 @@ Intersections_3 Interval_support Kernel_23 Kernel_d +Mesh_3 Mesher_level Modular_arithmetic Number_types Point_set_processing_3 Poisson_surface_reconstruction_3 +Polygon_mesh_processing +Principal_component_analysis Principal_component_analysis_LGPL Profiling_tools Property_map Random_numbers +SMDS_3 STL_Extension Solver_interface Spatial_searching Spatial_sorting Stream_support -Surface_mesher TDS_3 Triangulation_3 Union_find diff --git a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/CMakeLists.txt b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/CMakeLists.txt index efd978ee3a3..8e56915caca 100644 --- a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/CMakeLists.txt +++ b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling this folder. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Poisson_surface_reconstruction_3_Tests) # Find CGAL @@ -22,8 +22,14 @@ find_package(Eigen3 3.1.0 QUIET) #(requires 3.1.0 or greater) include(CGAL_Eigen3_support) if(TARGET CGAL::Eigen3_support) # Executables that require Eigen 3.1 - create_single_source_cgal_program("poisson_reconstruction_test.cpp") - target_link_libraries(poisson_reconstruction_test PUBLIC CGAL::Eigen3_support) + create_single_source_cgal_program("poisson_reconstruction_test_surface_mesher.cpp") + target_link_libraries(poisson_reconstruction_test_surface_mesher PUBLIC CGAL::Eigen3_support) + + create_single_source_cgal_program("poisson_reconstruction_test_mesh_3.cpp") + target_link_libraries(poisson_reconstruction_test_mesh_3 PUBLIC CGAL::Eigen3_support) + + create_single_source_cgal_program("compare_mesh_3_vs_Poisson_implicit_surface_3.cpp") + target_link_libraries(compare_mesh_3_vs_Poisson_implicit_surface_3 PUBLIC CGAL::Eigen3_support) find_package(TBB QUIET) include(CGAL_TBB_support) @@ -36,3 +42,4 @@ if(TARGET CGAL::Eigen3_support) else() message("NOTICE: Tests in this directory require Eigen 3.1 (or greater), and will not be compiled.") endif() + diff --git a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/compare_mesh_3_vs_Poisson_implicit_surface_3.cpp b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/compare_mesh_3_vs_Poisson_implicit_surface_3.cpp new file mode 100644 index 00000000000..1b8a2540acf --- /dev/null +++ b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/compare_mesh_3_vs_Poisson_implicit_surface_3.cpp @@ -0,0 +1,424 @@ +#include + +//---------------------------------------------------------- +// Compares Poisson using Mesh_3 +// VS Poisson using Surface_mesher and Poisson_implicit_surface_3 +// see issue https://github.com/CGAL/cgal/issues/8266 +//---------------------------------------------------------- + +// CGAL +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +// ---------------------------------------------------------------------------- +// Types +// ---------------------------------------------------------------------------- + +// kernel +typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; + +// Simple geometric types +typedef Kernel::FT FT; +typedef Kernel::Point_3 Point; +typedef Kernel::Vector_3 Vector; +typedef std::pair Point_with_normal; +typedef Kernel::Sphere_3 Sphere; +typedef std::deque PointList; + +// polyhedron +typedef CGAL::Polyhedron_3 Polyhedron; + +// Poisson implicit function +typedef CGAL::Poisson_reconstruction_function Poisson_reconstruction_function; +typedef CGAL::Poisson_implicit_surface_3 Surface_3; + +// Surface mesher +typedef CGAL::Surface_mesh_default_triangulation_3 STr; +typedef CGAL::Surface_mesh_complex_2_in_triangulation_3 C2t3; + +// 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; + + +struct Counter { + std::size_t i, N; + Counter(std::size_t N) + : i(0), N(N) + {} + + void operator()() + { + i++; + if(i == N){ + std::cerr << "Counter reached " << N << std::endl; + } + } + +}; + +struct InsertVisitor { + + Counter& c; + InsertVisitor(Counter& c) + : c(c) + {} + + void before_insertion() + { + c(); + } + +}; + + +// ---------------------------------------------------------------------------- +// main() +// ---------------------------------------------------------------------------- + +int main(int argc, char * argv[]) +{ + CGAL::get_default_random() = CGAL::Random(0); + std::cerr << "Poisson Delaunay Reconstruction method" << std::endl; + + //*************************************** + // decode parameters + //*************************************** + + // usage + if(argc == 1) + { + std::cerr << "Reads a point set or a mesh's set of vertices, reconstructs a surface using Poisson,\n"; + std::cerr << "and saves the surface.\n"; + std::cerr << "\n"; + std::cerr << "Usage: " << argv[0] << " [file_in] [file_out] [options]\n"; + std::cerr << "Input file formats are .off (mesh) and .xyz or .pwn (point set).\n"; + std::cerr << "Output file format is .off.\n"; + std::cerr << "Options:\n"; + std::cerr << " -sm_radius Radius upper bound (default=100 * average spacing)\n"; + std::cerr << " -sm_distance Distance upper bound (default=0.25 * average spacing)\n"; + std::cerr << " -frac factor applied to sm_radius (default = 1.)\n"; + std::cerr << "Running " << argv[0] << "data/kitten.xyz kitten_poisson-20-100-0.5.off -sm_distance 0.5\n"; + } + + // Poisson options + FT sm_angle = 20.0; // Min triangle angle (degrees). + FT sm_radius = 100; // Max triangle size w.r.t. point set average spacing. + FT sm_distance = 0.25; // Approximation error w.r.t. point set average spacing. + std::string solver_name = "eigen"; // Sparse linear solver name. + double approximation_ratio = 0.02; + double average_spacing_ratio = 5; + double frac = 1.; + + // decode parameters + std::string input_filename = (argc > 1) ? argv[1] : CGAL::data_file_path("points_3/kitten.xyz"); + std::string output_filename = (argc > 2) ? argv[2] : "kitten_poisson-20-100-0.5.off"; + for (int i=3; i+1::vertex_descriptor v : + vertices(input_mesh)){ + const Point& p = v->point(); + Vector n = CGAL::Polygon_mesh_processing::compute_vertex_normal(v,input_mesh); + points.push_back(std::make_pair(p,n)); + } + } + // If XYZ file format + else if (extension == ".xyz" || extension == ".XYZ" || + extension == ".pwn" || extension == ".PWN" || + extension == ".ply" || extension == ".PLY") + { + // Reads the point set file in points[]. + // Note: read_points() requires an iterator over points + // + property maps to access each point's position and normal. + if (!CGAL::IO::read_points(input_filename.c_str(), std::back_inserter(points), + CGAL::parameters::point_map(CGAL::make_first_of_pair_property_map(Point_with_normal())) + .normal_map(CGAL::make_second_of_pair_property_map(Point_with_normal())))) + { + std::cerr << "Error: cannot read input file!" << input_filename << std::endl; + return EXIT_FAILURE; + } + } + else + { + std::cerr << "Error: cannot read file " << input_filename << std::endl; + return EXIT_FAILURE; + } + + // Prints status + std::size_t nb_points = points.size(); + std::cerr << "Reads file " << input_filename << ": " << nb_points << " points, " + << task_timer.time() << " seconds" + << std::endl; + task_timer.reset(); + + //*************************************** + // Checks requirements + //*************************************** + + if (nb_points == 0) + { + std::cerr << "Error: empty point set" << std::endl; + return EXIT_FAILURE; + } + + bool points_have_normals = (points.begin()->second != CGAL::NULL_VECTOR); + if ( ! points_have_normals ) + { + std::cerr << "Input point set not supported: this reconstruction method requires oriented normals" << std::endl; + return EXIT_FAILURE; + } + + CGAL::Timer reconstruction_timer; reconstruction_timer.start(); + + Counter counter(std::distance(points.begin(), points.end())); + InsertVisitor visitor(counter) ; + + + //*************************************** + // Computes implicit function + //*************************************** + + std::cerr << "\nComputes Poisson implicit function...\n"; + + // Creates implicit function from the read points. + // Note: this method requires an iterator over points + // + property maps to access each point's position and normal. + Poisson_reconstruction_function function( + points.begin(), points.end(), + CGAL::make_first_of_pair_property_map(Point_with_normal()), + CGAL::make_second_of_pair_property_map(Point_with_normal()), + visitor); + + #ifdef CGAL_EIGEN3_ENABLED + { + if (solver_name == "eigen") + { + CGAL::Eigen_solver_traits::EigenType> > solver; + if ( ! function.compute_implicit_function(solver, visitor, + approximation_ratio, + average_spacing_ratio) ) + { + std::cerr << "Error: cannot compute implicit function" << std::endl; + return EXIT_FAILURE; + } + } + else + { + std::cerr << "Error: invalid solver " << solver_name << "\n"; + return EXIT_FAILURE; + } + } + #else + { + std::cerr << "Error: invalid solver " << solver_name << "\n"; + return EXIT_FAILURE; + } + #endif + + + // Prints status + std::cerr << "Total implicit function (triangulation+refinement+solver): " << task_timer.time() << " seconds\n"; + task_timer.reset(); + + //*************************************** + // Surface mesh generation + //*************************************** + std::cerr << std::endl << std::endl; + + // Computes average spacing + FT average_spacing = CGAL::compute_average_spacing + (points, 6 /* knn = 1 ring */, + CGAL::parameters::point_map (CGAL::make_first_of_pair_property_map(Point_with_normal()))); + + // Gets one point inside the implicit surface + Point inner_point = function.get_inner_point(); + FT inner_point_value = function(inner_point); + if(inner_point_value >= 0.0) + { + std::cerr << "Error: unable to seed (" << inner_point_value << " at inner_point)" << std::endl; + return EXIT_FAILURE; + } + + // Gets implicit function's radius + Sphere bsphere = function.bounding_sphere(); + FT radius = std::sqrt(bsphere.squared_radius()); + + // Defines the implicit surface: requires defining a + // 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 + + // Meshing criteria + const double fangle = sm_angle; + const double fsize = frac * sm_radius * average_spacing; + const double fdist = sm_distance * average_spacing; + + const double implicit_function_time = reconstruction_timer.time(); + reconstruction_timer.reset(); + + // MESH_3 + { + CGAL::Real_timer meshing_timer; + meshing_timer.start(); + + std::cout << "* Use Mesh_3 *" << std::endl; + // Defines generation criteria + Mesh_criteria criteria(CGAL::parameters::facet_angle = fangle, + CGAL::parameters::facet_size = fsize, + CGAL::parameters::facet_distance = fdist); + + // 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()); + meshing_timer.stop(); + + const Tr& tr = c3t3.triangulation(); + // Prints status + std::cerr << "Mesh_3 meshing: " << meshing_timer.time() << " seconds, " + << tr.number_of_vertices() << " output vertices" + << std::endl; + + if (tr.number_of_vertices() == 0) + return EXIT_FAILURE; + + // Prints total reconstruction duration + reconstruction_timer.stop(); + std::cerr << "Total reconstruction (implicit function + meshing): " + << (implicit_function_time + reconstruction_timer.time()) << " seconds\n"; + reconstruction_timer.reset(); + + // Converts to polyhedron + Polyhedron output_mesh; + CGAL::facets_in_complex_3_to_triangle_mesh(c3t3, output_mesh); + + std::ofstream out(output_basename + "_mesh_3.off"); + out << output_mesh; + out.close(); + } + + // SURFACE_MESHER + { + CGAL::Real_timer meshing_timer; + meshing_timer.start(); + reconstruction_timer.start(); + + std::cout << "\n\n* Use Surface_mesher with Poisson_implicit_surface_3 *" << std::endl; + 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(fangle, fsize, fdist); + + // 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 + meshing_timer.stop(); + + // Prints status + std::cerr << "Surface meshing: " << meshing_timer.time() << " seconds, " + << tr.number_of_vertices() << " output vertices" + << std::endl; + + if (tr.number_of_vertices() == 0) + return EXIT_FAILURE; + + // Prints total reconstruction duration + reconstruction_timer.stop(); + std::cerr << "Total reconstruction (implicit function + meshing): " + << (implicit_function_time + reconstruction_timer.time()) << " seconds\n"; + + Polyhedron output_mesh; + CGAL::facets_in_complex_2_to_triangle_mesh(c2t3, output_mesh); + + std::ofstream out(output_basename + "_surface_mesher.off"); + out << output_mesh; + out.close(); + } + + return EXIT_SUCCESS; +} diff --git a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test.cmd b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_mesh_3.cmd similarity index 100% rename from Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test.cmd rename to Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_mesh_3.cmd diff --git a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_mesh_3.cpp b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_mesh_3.cpp new file mode 100644 index 00000000000..7007831e7e0 --- /dev/null +++ b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_mesh_3.cpp @@ -0,0 +1,300 @@ +// poisson_reconstruction_test_mesh_3.cpp + +//---------------------------------------------------------- +// Test the Poisson Delaunay Reconstruction method: +// For each input point set or mesh's set of vertices, reconstruct a surface. +// No output. +//---------------------------------------------------------- +// poisson_reconstruction_test_mesh_3 mesh1.off point_set2.xyz... + +// CGAL + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + +#include + +// ---------------------------------------------------------------------------- +// Types +// ---------------------------------------------------------------------------- + +// kernel +typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; + +// Simple geometric types +typedef Kernel::FT FT; +typedef Kernel::Point_3 Point; +typedef Kernel::Vector_3 Vector; +typedef CGAL::Point_with_normal_3 Point_with_normal; +typedef Kernel::Sphere_3 Sphere; +typedef std::deque PointList; + +// polyhedron +typedef CGAL::Polyhedron_3 Polyhedron; + +// Poisson implicit function +typedef CGAL::Poisson_reconstruction_function Poisson_reconstruction_function; + +// Mesh_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; + +namespace params = CGAL::parameters; + +// ---------------------------------------------------------------------------- +// main() +// ---------------------------------------------------------------------------- + +int main(int argc, char * argv[]) +{ + std::cerr << "Test the Poisson Delaunay Reconstruction method" << std::endl; + + //*************************************** + // decode parameters + //*************************************** + + // usage + if (argc-1 == 0) + { + std::cerr << "For each input point set or mesh's set of vertices, reconstruct a surface.\n"; + std::cerr << "\n"; + std::cerr << "Usage: " << argv[0] << " mesh1.off point_set2.xyz..." << std::endl; + std::cerr << "Input file formats are .off (mesh) and .xyz or .pwn (point set).\n"; + std::cerr << "No output" << std::endl; + return EXIT_FAILURE; + } + + // Poisson options + FT sm_angle = 20.0; // Min triangle angle (degrees). + FT sm_radius = 100; // Max triangle size w.r.t. point set average spacing. + FT sm_distance = 0.5; // Approximation error w.r.t. point set average spacing. + + // Accumulated errors + int accumulated_fatal_err = EXIT_SUCCESS; + + // Process each input file + for (int i = 1; i <= argc-1; i++) + { + CGAL::Timer task_timer; task_timer.start(); + + std::cerr << std::endl; + + //*************************************** + // Loads mesh/point set + //*************************************** + + // File name is: + std::string input_filename = argv[i]; + + PointList points; + + // If OFF file format + std::cerr << "Open " << input_filename << " for reading..." << std::endl; + std::string extension = input_filename.substr(input_filename.find_last_of('.')); + if (extension == ".off" || extension == ".OFF") + { + // Reads the mesh file in a polyhedron + std::ifstream stream(input_filename.c_str()); + Polyhedron input_mesh; + CGAL::scan_OFF(stream, input_mesh, true /* verbose */); + if(!stream || !input_mesh.is_valid() || input_mesh.empty()) + { + std::cerr << "Error: cannot read file " << input_filename << std::endl; + accumulated_fatal_err = EXIT_FAILURE; + continue; + } + + // Converts Polyhedron vertices to point set. + // Computes vertices normal from connectivity. + for(boost::graph_traits::vertex_descriptor v : + vertices(input_mesh)){ + const Point& p = v->point(); + Vector n = CGAL::Polygon_mesh_processing::compute_vertex_normal(v,input_mesh); + points.push_back(Point_with_normal(p,n)); + } + } + // If XYZ file format + else if (extension == ".xyz" || extension == ".XYZ" || + extension == ".pwn" || extension == ".PWN") + { + // Reads the point set file in points[]. + // Note: read_points() requires an iterator over points + // + property maps to access each point's position and normal. + // The position property map can be omitted here as we use iterators over Point_3 elements. + if (!CGAL::IO::read_points( + input_filename.c_str(), + std::back_inserter(points), + CGAL::parameters::normal_map + (CGAL::make_normal_of_point_with_normal_map(PointList::value_type())) + )) + { + std::cerr << "Error: cannot read file " << input_filename << std::endl; + accumulated_fatal_err = EXIT_FAILURE; + continue; + } + } + else + { + std::cerr << "Error: cannot read file " << input_filename << std::endl; + accumulated_fatal_err = EXIT_FAILURE; + continue; + } + + // Prints status + std::size_t memory = CGAL::Memory_sizer().virtual_size(); + std::size_t nb_points = points.size(); + std::cerr << "Reads file " << input_filename << ": " << nb_points << " points, " + << task_timer.time() << " seconds, " + << (memory>>20) << " Mb allocated" + << std::endl; + task_timer.reset(); + + //*************************************** + // Checks requirements + //*************************************** + + if (nb_points == 0) + { + std::cerr << "Error: empty point set" << std::endl; + accumulated_fatal_err = EXIT_FAILURE; + continue; + } + + bool points_have_normals = (points.begin()->normal() != CGAL::NULL_VECTOR); + if ( ! points_have_normals ) + { + std::cerr << "Input point set not supported: this reconstruction method requires oriented normals" << std::endl; + // this is not a bug => do not set accumulated_fatal_err + continue; + } + + CGAL::Timer reconstruction_timer; reconstruction_timer.start(); + + //*************************************** + // Computes implicit function + //*************************************** + + std::cerr << "Computes Poisson implicit function...\n"; + + // Creates implicit function from the read points. + // Note: this method requires an iterator over points + // + property maps to access each point's position and normal. + // The position property map can be omitted here as we use iterators over Point_3 elements. + Poisson_reconstruction_function function( + points.begin(), points.end(), + CGAL::make_normal_of_point_with_normal_map(PointList::value_type()) + ); + + // Computes the Poisson indicator function f() + // at each vertex of the triangulation. + if ( ! function.compute_implicit_function() ) + { + std::cerr << "Error: cannot compute implicit function" << std::endl; + accumulated_fatal_err = EXIT_FAILURE; + continue; + } + + // Prints status + std::cerr << "Total implicit function (triangulation+refinement+solver): " << task_timer.time() << " seconds\n"; + task_timer.reset(); + + //*************************************** + // Surface mesh generation + //*************************************** + + std::cerr << "Surface meshing...\n"; + + // Computes average spacing + FT average_spacing = CGAL::compute_average_spacing(points, 6 /* knn = 1 ring */); + + // Gets one point inside the implicit surface + Point inner_point = function.get_inner_point(); + FT inner_point_value = function(inner_point); + if(inner_point_value >= 0.0) + { + std::cerr << "Error: unable to seed (" << inner_point_value << " at inner_point)" << std::endl; + accumulated_fatal_err = EXIT_FAILURE; + continue; + } + + // Gets implicit function's radius + Sphere bsphere = function.bounding_sphere(); + FT radius = std::sqrt(bsphere.squared_radius()); + + // Defines the implicit surface: requires defining a + // 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 + + // Defines surface mesh generation criteria + Mesh_criteria criteria(params::facet_angle = sm_angle, + params::facet_size = sm_radius*average_spacing, + params::facet_distance = sm_distance*average_spacing); + + std::cerr << " make_mesh_3 with sphere center=("<(domain, criteria, + params::no_exude().no_perturb().manifold_with_boundary()); + + // Prints status + /*long*/ memory = CGAL::Memory_sizer().virtual_size(); + const Tr& tr = c3t3.triangulation(); + std::cerr << "Surface meshing: " << task_timer.time() << " seconds, " + << tr.number_of_vertices() << " output vertices, " + << (memory>>20) << " Mb allocated" + << std::endl; + task_timer.reset(); + + if(tr.number_of_vertices() == 0) { + accumulated_fatal_err = EXIT_FAILURE; + continue; + } + + // Converts to polyhedron + Polyhedron 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"; + + } // for each input file + + std::cerr << std::endl; + + // Returns accumulated fatal error + std::cerr << "Tool returned " << accumulated_fatal_err << std::endl; + return accumulated_fatal_err; +} diff --git a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_surface_mesher.cmd b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_surface_mesher.cmd new file mode 100644 index 00000000000..105324c3b58 --- /dev/null +++ b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_surface_mesher.cmd @@ -0,0 +1 @@ +${CGAL_DATA_DIR}/meshes/ChineseDragon-10kv.off ${CGAL_DATA_DIR}/points_3/oni.pwn data/robocat_deci.off ${CGAL_DATA_DIR}/points_3/sphere_20k.xyz diff --git a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test.cpp b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_surface_mesher.cpp similarity index 99% rename from Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test.cpp rename to Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_surface_mesher.cpp index 760e505dc27..cfd35446a4a 100644 --- a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test.cpp +++ b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test_surface_mesher.cpp @@ -8,6 +8,8 @@ // poisson_reconstruction_test mesh1.off point_set2.xyz... // CGAL +#include + #include #include #include diff --git a/Polygon/examples/Polygon/CMakeLists.txt b/Polygon/examples/Polygon/CMakeLists.txt index d70f0d7df18..4ecfb233255 100644 --- a/Polygon/examples/Polygon/CMakeLists.txt +++ b/Polygon/examples/Polygon/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygon_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Polygon/test/Polygon/CMakeLists.txt b/Polygon/test/Polygon/CMakeLists.txt index 2e0776ec5ac..3f05c88ad8d 100644 --- a/Polygon/test/Polygon/CMakeLists.txt +++ b/Polygon/test/Polygon/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygon_Tests) find_package(CGAL REQUIRED) diff --git a/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/CMakeLists.txt b/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/CMakeLists.txt index 5fcd1fc630a..2a75ff4b830 100644 --- a/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/CMakeLists.txt +++ b/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygon_mesh_processing) # CGAL and its components diff --git a/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/fast.cpp b/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/fast.cpp index 20cf6834d21..a9b9be6b10e 100644 --- a/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/fast.cpp +++ b/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/fast.cpp @@ -20,7 +20,7 @@ // `fast` takes an off file and an offset as arguments // If called additionally with 3 more vertex indices it performs the envelope test with the triangle -// Otherwise it tests for all vertex triples forming a non-degenerate trianges +// Otherwise it tests for all vertex triples forming a non-degenerate triangles // and writes the triple in the file inside.txt or outside.txt int main(int argc, char* argv[]) diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt b/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt index 67743dbd907..718ab1096a9 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygon_mesh_processing_Examples) # CGAL and its components diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example.cpp index 949fcc8dd64..a3a268b9ecb 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example.cpp @@ -29,8 +29,8 @@ int main(int argc, char* argv[]) return 1; } - auto vnormals = mesh.add_property_map("v:normals", CGAL::NULL_VECTOR).first; - auto fnormals = mesh.add_property_map("f:normals", CGAL::NULL_VECTOR).first; + auto vnormals = mesh.add_property_map("v:normal", CGAL::NULL_VECTOR).first; + auto fnormals = mesh.add_property_map("f:normal", CGAL::NULL_VECTOR).first; PMP::compute_normals(mesh, vnormals, fnormals); diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/extrude.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/extrude.cpp index 300d0182fdb..da7c3ff954c 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/extrude.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/extrude.cpp @@ -59,7 +59,7 @@ int main(int argc, char* argv[]) CGAL::IO::read_polygon_mesh(filename, in); - VNMap vnormals = in.template add_property_map("v:normals", CGAL::NULL_VECTOR).first; + VNMap vnormals = in.template add_property_map("v:normal", CGAL::NULL_VECTOR).first; CGAL::Polygon_mesh_processing::compute_vertex_normals(in, vnormals); Bottom bottom(get(CGAL::vertex_point,out), vnormals, vlen); diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_with_custom_sizing_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_with_custom_sizing_example.cpp index 53d70af603f..a52d183f33e 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_with_custom_sizing_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_with_custom_sizing_example.cpp @@ -11,7 +11,7 @@ typedef CGAL::Surface_mesh Mesh; namespace PMP = CGAL::Polygon_mesh_processing; -// a sizing fied that is increasing the size of edge along the y-axis +// a sizing field that is increasing the size of edge along the y-axis // starting at a minimum size at y-max and ending at a maximum size at // y-min, with a linear interpolation of sizes in between the two extreme // sizing values diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/angle_and_area_smoothing.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/angle_and_area_smoothing.h index beda665855a..c2a14aabf2a 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/angle_and_area_smoothing.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/angle_and_area_smoothing.h @@ -337,7 +337,7 @@ void angle_and_area_smoothing(const FaceRange& faces, * * Optionally, the points are reprojected after each iteration. * -* See the overload which takes a face range as additonal parameter for a comprehensive description +* See the overload which takes a face range as additional parameter for a comprehensive description * of the parameters. */ template diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/clip.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/clip.h index 46abaee2bfd..95462371821 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/clip.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/clip.h @@ -939,7 +939,7 @@ void split(TriangleMesh& tm, const bool do_not_modify_splitter = choose_parameter(get_parameter(np_s, internal_np::do_not_modify), false); PMP::corefine(tm, splitter, - CGAL::parameters::vertex_point_map(vpm_tm).edge_is_constrained_map(ecm), + CGAL::parameters::vertex_point_map(vpm_tm).edge_is_constrained_map(ecm).visitor(uv), CGAL::parameters::vertex_point_map(vpm_s).do_not_modify(do_not_modify_splitter)); //split mesh along marked edges diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/extrude.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/extrude.h index c2882efd5f4..5a8b3031d88 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/extrude.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/extrude.h @@ -145,12 +145,12 @@ struct Identity_functor * * \cgalNamedParamsBegin * \cgalParamNBegin{vertex_point_map} - * \cgalParamDescription{a property map associating points to the vertices of `ouput`} + * \cgalParamDescription{a property map associating points to the vertices of `output`} * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits::%vertex_descriptor` * as key type and `%Point_3` as value type} * \cgalParamDefault{`boost::get(CGAL::vertex_point, output)`} * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` - * should be available for the vertices of `ouput`.} + * should be available for the vertices of `output`.} * \cgalParamNEnd * \cgalNamedParamsEnd */ diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/Face_graph_output_builder.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/Face_graph_output_builder.h index dd8f2eb307e..5664e2db18e 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/Face_graph_output_builder.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/Face_graph_output_builder.h @@ -276,11 +276,11 @@ struct Non_manifold_output_visitor if (vid_not_used.any()){ std::vector free_vids; - for (ID i = vid_not_used.find_first(); + for (auto i = vid_not_used.find_first(); i < vid_not_used.npos; i = vid_not_used.find_next(i)) { - free_vids.push_back(i); + free_vids.push_back(static_cast(i)); } // now reindex the vertices for (auto& p : vid1) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/intersection_impl.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/intersection_impl.h index 66cfa7bc344..c63c3e1a8f8 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/intersection_impl.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/intersection_impl.h @@ -1278,7 +1278,7 @@ class Intersection_of_triangle_meshes it_seg13->second.get_segments(f1f3_segments); /// TODO AUTOREF_TAG shall we ignore tangency points? - /// with the current code, Node_id_set::size()==1 is ignored as we only drop semgents + /// with the current code, Node_id_set::size()==1 is ignored as we only drop segments /// Actually it might be that it is not a tangency point if the third segment was considered! /// so not handling it is a bug diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Smoothing/mesh_smoothing_impl.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Smoothing/mesh_smoothing_impl.h index d43041251cb..5f906270511 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Smoothing/mesh_smoothing_impl.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Smoothing/mesh_smoothing_impl.h @@ -366,7 +366,7 @@ private: s_av(s_av) { } - // next two functions are just for convencience, the only thing ceres cares about is the operator() + // next two functions are just for convenience, the only thing ceres cares about is the operator() template FT area(const T x, const T y, const T z) const { diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Snapping/snap.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Snapping/snap.h index 22054b8413f..62c893b7f4e 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Snapping/snap.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Snapping/snap.h @@ -105,7 +105,12 @@ void simplify_range(HalfedgeRange& halfedge_range, typedef CGAL::dynamic_halfedge_property_t Halfedge_bool_tag; typedef typename boost::property_map::type Range_halfedges; - Range_halfedges range_halfedges = get(Halfedge_bool_tag(), tm, false); + const bool all_hedges = (::CGAL::internal::exact_num_halfedges(tm)==halfedge_range.size()); + + Range_halfedges range_halfedges = get(Halfedge_bool_tag(), tm, all_hedges); + if (!all_hedges) + for(halfedge_descriptor h : halfedge_range) + put(range_halfedges, h, true); CGAL_postcondition_code(const std::size_t initial_n = halfedge_range.size();) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/interpolated_corrected_curvatures.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/interpolated_corrected_curvatures.h index 13cad81b410..e30043961d2 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/interpolated_corrected_curvatures.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/interpolated_corrected_curvatures.h @@ -1000,7 +1000,7 @@ private: * * computes the interpolated corrected curvatures across the mesh `pmesh`. * By providing mean, Gaussian and/or principal curvature and direction property maps as named parameters, the user -* can choose which quantites to compute. +* can choose which quantities to compute. * * \note This function depends on the \eigen 3.1 (or later) library. * @@ -1090,7 +1090,7 @@ void interpolated_corrected_curvatures(const PolygonMesh& pmesh, * \ingroup PMP_corrected_curvatures_grp * computes the interpolated corrected curvatures at a vertex `v`. * By providing mean, Gaussian and/or principal curvature and direction property maps as named parameters, the user -* can choose which quantites to compute. +* can choose which quantities to compute. * * \note This function depends on the \eigen 3.1 (or later) library. * diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/remesh_planar_patches.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/remesh_planar_patches.h index 71e49fcbffa..71cba41b6cd 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/remesh_planar_patches.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/remesh_planar_patches.h @@ -696,7 +696,7 @@ bool decimate_impl(const TriangleMesh& tm, { if (csts.size() > 3 && do_not_triangulate_faces) { - // TODO this is not optimal at all since we already have the set of contraints, + // TODO this is not optimal at all since we already have the set of constraints, // we could work on the graph on constraint and recover only the orientation // of the edge. To be done if someone find it too slow. std::vector hborders; diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h index 364a8dc624b..07fe736f471 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h @@ -2185,7 +2185,7 @@ remove_self_intersections_one_step(std::set op = intersection_point_for_polyhedral_envelope(eline, halfspace[filtered_intersection[queue[i]]][intersect_face[queue[i]][j]].eplane); diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt b/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt index 6c6f6cefd34..f814501997c 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygon_mesh_processing_Tests) # CGAL and its components diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/pmp_compute_normals_test.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/pmp_compute_normals_test.cpp index 20a8e8993a1..a18576dd0ab 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/pmp_compute_normals_test.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/pmp_compute_normals_test.cpp @@ -146,9 +146,9 @@ void test_SM(const std::string file_name) } typename SM::template Property_map vnormals; - vnormals = mesh.template add_property_map("v:normals", CGAL::NULL_VECTOR).first; + vnormals = mesh.template add_property_map("v:normal", CGAL::NULL_VECTOR).first; typename SM::template Property_map fnormals; - fnormals = mesh.template add_property_map("f:normals", CGAL::NULL_VECTOR).first; + fnormals = mesh.template add_property_map("f:normal", CGAL::NULL_VECTOR).first; test(mesh, vnormals, fnormals); } diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefinement_nm_bo.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefinement_nm_bo.cpp index 6ff6961ffc2..f2238ed1b09 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefinement_nm_bo.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefinement_nm_bo.cpp @@ -15,7 +15,7 @@ typedef CGAL::Polyhedron_3 Poly; namespace PMP = CGAL::Polygon_mesh_processing; -template +template void test_one(std::string filename1, std::string filename2) { std::cout << "Running test with " << filename1 << " " << filename2 << "\n"; @@ -40,7 +40,7 @@ void test_one(std::string filename1, std::string filename2) { std::cout << " checking " << out_name_prefixes[k] << "\n"; std::vector points; - std::vector< std::array > polygons; + std::vector< std::array > polygons; switch(k) { case 0: visitor.extract_union(points, polygons); break; @@ -65,8 +65,12 @@ void test_one(std::string filename1, std::string filename2) void test(std::string filename1, std::string filename2) { - test_one(filename1, filename2); - test_one(filename1, filename2); + test_one(filename1, filename2); + test_one(filename1, filename2); + test_one(filename1, filename2); + test_one(filename1, filename2); + test_one(filename1, filename2); + test_one(filename1, filename2); } int main(int argc, char* argv[]) diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_is_polygon_soup_a_polygon_mesh.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_is_polygon_soup_a_polygon_mesh.cpp index a2843ecae8c..bb9a6d550bf 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_is_polygon_soup_a_polygon_mesh.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_is_polygon_soup_a_polygon_mesh.cpp @@ -55,7 +55,7 @@ void test_polygon_soup(std::string fname, bool expected) { Polyhedron p; - // just to test the named paramers + // just to test the named parameters typedef std::pair Point_with_Boolean; std::vector points_with_pairs; for(const Point& pt : points) diff --git a/Polygon_repair/examples/Polygon_repair/CMakeLists.txt b/Polygon_repair/examples/Polygon_repair/CMakeLists.txt index 4350cb89227..93722bb7c3b 100644 --- a/Polygon_repair/examples/Polygon_repair/CMakeLists.txt +++ b/Polygon_repair/examples/Polygon_repair/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygon_repair_Examples) find_package(CGAL REQUIRED) diff --git a/Polygon_repair/test/Polygon_repair/CMakeLists.txt b/Polygon_repair/test/Polygon_repair/CMakeLists.txt index faced1f8805..9c81f408cd5 100644 --- a/Polygon_repair/test/Polygon_repair/CMakeLists.txt +++ b/Polygon_repair/test/Polygon_repair/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygon_repair_Tests) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Polygonal_surface_reconstruction/doc/Polygonal_surface_reconstruction/fig/pkg-small.png b/Polygonal_surface_reconstruction/doc/Polygonal_surface_reconstruction/fig/pkg-small.png deleted file mode 100644 index 5609b037587..00000000000 Binary files a/Polygonal_surface_reconstruction/doc/Polygonal_surface_reconstruction/fig/pkg-small.png and /dev/null differ diff --git a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/CMakeLists.txt b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/CMakeLists.txt index bc49569944f..77915e0f009 100644 --- a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/CMakeLists.txt +++ b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygonal_surface_reconstruction_Examples) diff --git a/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/CMakeLists.txt b/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/CMakeLists.txt index 91848e4bdcd..a47b82f430d 100644 --- a/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/CMakeLists.txt +++ b/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polygonal_surface_reconstruction_Tests) diff --git a/Polyhedron/examples/Polyhedron/CMakeLists.txt b/Polyhedron/examples/Polyhedron/CMakeLists.txt index 0b887ac77f4..ff8058e9415 100644 --- a/Polyhedron/examples/Polyhedron/CMakeLists.txt +++ b/Polyhedron/examples/Polyhedron/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polyhedron_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Polyhedron/examples/Polyhedron/polyhedron_self_intersection.cpp b/Polyhedron/examples/Polyhedron/polyhedron_self_intersection.cpp index 7f276009713..b5cfa8963fc 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_self_intersection.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_self_intersection.cpp @@ -65,7 +65,7 @@ struct Intersect_facets { if ( v != Halfedge_const_handle()) { // found shared vertex: assert( h->vertex() == v->vertex()); - // geomtric check if the opposite segments intersect the triangles + // geometric check if the opposite segments intersect the triangles Triangle t1( h->vertex()->point(), h->next()->vertex()->point(), h->next()->next()->vertex()->point()); diff --git a/Polyhedron/include/CGAL/Polyhedron_incremental_builder_3.h b/Polyhedron/include/CGAL/Polyhedron_incremental_builder_3.h index 6c5c3d71153..bbb2977db06 100644 --- a/Polyhedron/include/CGAL/Polyhedron_incremental_builder_3.h +++ b/Polyhedron/include/CGAL/Polyhedron_incremental_builder_3.h @@ -73,7 +73,7 @@ protected: bool first_vertex; bool last_vertex; - CGAL_assertion_code( int check_protocoll;) // use to check protocoll. + CGAL_assertion_code( int check_protocoll;) // use to check_protocoll. // states for checking: 0 = created, 1 = constructing, 2 = make face. // Implement the vertex_to_edge_map either with an array or diff --git a/Polyhedron/test/Polyhedron/CMakeLists.txt b/Polyhedron/test/Polyhedron/CMakeLists.txt index ed168ea2bff..731cae0763b 100644 --- a/Polyhedron/test/Polyhedron/CMakeLists.txt +++ b/Polyhedron/test/Polyhedron/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polyhedron_Tests) find_package(CGAL REQUIRED) diff --git a/Polyline_simplification_2/demo/Polyline_simplification_2/CMakeLists.txt b/Polyline_simplification_2/demo/Polyline_simplification_2/CMakeLists.txt index e8ffecc2a3d..a07d8998706 100644 --- a/Polyline_simplification_2/demo/Polyline_simplification_2/CMakeLists.txt +++ b/Polyline_simplification_2/demo/Polyline_simplification_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polyline_simplification_2_Demo) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/CMakeLists.txt b/Polyline_simplification_2/examples/Polyline_simplification_2/CMakeLists.txt index cf992539287..11ced7973c1 100644 --- a/Polyline_simplification_2/examples/Polyline_simplification_2/CMakeLists.txt +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polyline_simplification_2_Examples) find_package(CGAL REQUIRED) diff --git a/Polyline_simplification_2/test/Polyline_simplification_2/CMakeLists.txt b/Polyline_simplification_2/test/Polyline_simplification_2/CMakeLists.txt index 954afd626ab..6099c152bd8 100644 --- a/Polyline_simplification_2/test/Polyline_simplification_2/CMakeLists.txt +++ b/Polyline_simplification_2/test/Polyline_simplification_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polyline_simplification_2_Tests) # CGAL and its components diff --git a/Polynomial/examples/Polynomial/CMakeLists.txt b/Polynomial/examples/Polynomial/CMakeLists.txt index e6e0f27e405..330d6653e99 100644 --- a/Polynomial/examples/Polynomial/CMakeLists.txt +++ b/Polynomial/examples/Polynomial/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polynomial_Examples) find_package(CGAL REQUIRED) diff --git a/Polynomial/include/CGAL/Polynomial/modular_gcd_utcf_algorithm_M.h b/Polynomial/include/CGAL/Polynomial/modular_gcd_utcf_algorithm_M.h index c2b8cfd6634..e88bbb620d7 100644 --- a/Polynomial/include/CGAL/Polynomial/modular_gcd_utcf_algorithm_M.h +++ b/Polynomial/include/CGAL/Polynomial/modular_gcd_utcf_algorithm_M.h @@ -59,7 +59,7 @@ Polynomial modular_gcd_utcf_algorithm_M( #endif typedef Polynomial Poly; - // will paly the role of content + // will play the role of content typedef typename CGAL::Scalar_factor_traits::Scalar Scalar; typedef typename CGAL::Modular_traits::Residue_type MPoly; diff --git a/Polynomial/include/CGAL/Polynomial/polynomial_gcd_implementations.h b/Polynomial/include/CGAL/Polynomial/polynomial_gcd_implementations.h index a23b110d7f9..1e897ccf890 100644 --- a/Polynomial/include/CGAL/Polynomial/polynomial_gcd_implementations.h +++ b/Polynomial/include/CGAL/Polynomial/polynomial_gcd_implementations.h @@ -168,7 +168,7 @@ Polynomial gcd_utcf_Integral_domain( Polynomial p1, Polynomial p2){ Polynomial q, r; - // TODO measure performance of both methodes with respect to + // TODO measure performance of both methods with respect to // univariat polynomials on Integeres // univariat polynomials on Sqrt_extension // multivariat polynomials diff --git a/Polynomial/include/CGAL/Polynomial/subresultants.h b/Polynomial/include/CGAL/Polynomial/subresultants.h index e6f4eb40fcd..042f8ba9cd0 100644 --- a/Polynomial/include/CGAL/Polynomial/subresultants.h +++ b/Polynomial/include/CGAL/Polynomial/subresultants.h @@ -130,7 +130,7 @@ namespace CGAL { * This is an implementation of Ducos' algorithm. It improves on the * classical methods for subresultant computation by reducing the * swell-up of intermediate results. For all details, see - * L.Ducos: Optimazations of the Subresultant algorithm. Journal of Pure + * L.Ducos: Optimizations of the Subresultant algorithm. Journal of Pure * and Applied Algebra 145 (2000) 149--163 */ template inline diff --git a/Polynomial/include/CGAL/Polynomial_traits_d.h b/Polynomial/include/CGAL/Polynomial_traits_d.h index dfbf7cf3135..c29af9b79dd 100644 --- a/Polynomial/include/CGAL/Polynomial_traits_d.h +++ b/Polynomial/include/CGAL/Polynomial_traits_d.h @@ -999,7 +999,7 @@ public: // Sign_at, Sign_at_homogeneous, Compare // define XXX_ even though ICoeff may not be Real_embeddable - // select propoer XXX among XXX_ or Null_functor using ::std::conditional_t + // select proper XXX among XXX_ or Null_functor using ::std::conditional_t private: struct Sign_at_ { private: diff --git a/Polynomial/test/Polynomial/CMakeLists.txt b/Polynomial/test/Polynomial/CMakeLists.txt index 21f12181b10..e39eb04c74b 100644 --- a/Polynomial/test/Polynomial/CMakeLists.txt +++ b/Polynomial/test/Polynomial/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polynomial_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Polytope_distance_d/examples/Polytope_distance_d/CMakeLists.txt b/Polytope_distance_d/examples/Polytope_distance_d/CMakeLists.txt index 44c4b610b8e..20a8fde663f 100644 --- a/Polytope_distance_d/examples/Polytope_distance_d/CMakeLists.txt +++ b/Polytope_distance_d/examples/Polytope_distance_d/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polytope_distance_d_Examples) find_package(CGAL REQUIRED) diff --git a/Polytope_distance_d/include/CGAL/Width_3.h b/Polytope_distance_d/include/CGAL/Width_3.h index 8ebc1cd0cdc..293d65635f4 100644 --- a/Polytope_distance_d/include/CGAL/Width_3.h +++ b/Polytope_distance_d/include/CGAL/Width_3.h @@ -704,7 +704,7 @@ class Width_3 { RT maxdist=0; RT hompart=1; //Try every point to be an/the antipodal vertex of the facet f. Take the - //one with the bigest distance from E1 + //one with the biggest distance from E1 DEBUGENDL(INITIAL_VF_PAIR,"Plane E1:",f->plane()); while (vtxit != P.vertices_end() ) { RT pix, piy, piz, pih; @@ -871,7 +871,7 @@ class Width_3 { <<"ASSERTION OK."); if ( a*nx+b*ny+c*nz+d*nh >= 0 ) { //Could be a violation. Now check if v and n lie on the - //same plane. If so no violation, othervise we can break + //same plane. If so no violation, otherwise we can break if (a*nx+b*ny+c*nz+d*nh == 0 ) { DEBUGMSG(CHECK_ABOUT_VF_PAIRS,"Additional Antipodal Vertex " <<"found. Expanding "<<"set of witnesses."); diff --git a/Polytope_distance_d/test/Polytope_distance_d/CMakeLists.txt b/Polytope_distance_d/test/Polytope_distance_d/CMakeLists.txt index fdd5bfe37ac..12ea05b9a05 100644 --- a/Polytope_distance_d/test/Polytope_distance_d/CMakeLists.txt +++ b/Polytope_distance_d/test/Polytope_distance_d/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Polytope_distance_d_Tests) find_package(CGAL REQUIRED) diff --git a/Principal_component_analysis/demo/Principal_component_analysis/CMakeLists.txt b/Principal_component_analysis/demo/Principal_component_analysis/CMakeLists.txt index 9a6ace55f2b..9f3d7cbefb7 100644 --- a/Principal_component_analysis/demo/Principal_component_analysis/CMakeLists.txt +++ b/Principal_component_analysis/demo/Principal_component_analysis/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling the PCA demo. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Principal_component_analysis_Demo) include_directories(./) diff --git a/Principal_component_analysis/examples/Principal_component_analysis/CMakeLists.txt b/Principal_component_analysis/examples/Principal_component_analysis/CMakeLists.txt index 5eaeeee35a3..924a2b07a37 100644 --- a/Principal_component_analysis/examples/Principal_component_analysis/CMakeLists.txt +++ b/Principal_component_analysis/examples/Principal_component_analysis/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Principal_component_analysis_Examples) find_package(CGAL REQUIRED) diff --git a/Principal_component_analysis/test/Principal_component_analysis/CMakeLists.txt b/Principal_component_analysis/test/Principal_component_analysis/CMakeLists.txt index 8a4078ffd37..b61fbc8b755 100644 --- a/Principal_component_analysis/test/Principal_component_analysis/CMakeLists.txt +++ b/Principal_component_analysis/test/Principal_component_analysis/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Principal_component_analysis_Tests) find_package(CGAL REQUIRED) diff --git a/Profiling_tools/examples/Profiling_tools/CMakeLists.txt b/Profiling_tools/examples/Profiling_tools/CMakeLists.txt index 17f0d657f96..d43577af955 100644 --- a/Profiling_tools/examples/Profiling_tools/CMakeLists.txt +++ b/Profiling_tools/examples/Profiling_tools/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Profiling_tools_Examples) find_package(CGAL REQUIRED) diff --git a/Profiling_tools/test/Profiling_tools/CMakeLists.txt b/Profiling_tools/test/Profiling_tools/CMakeLists.txt index 95552b038f1..e366a8e9b9d 100644 --- a/Profiling_tools/test/Profiling_tools/CMakeLists.txt +++ b/Profiling_tools/test/Profiling_tools/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Profiling_tools_Tests) find_package(CGAL REQUIRED) diff --git a/Property_map/doc/Property_map/Property_map.txt b/Property_map/doc/Property_map/Property_map.txt index d2ecf66d1df..1c044a148a8 100644 --- a/Property_map/doc/Property_map/Property_map.txt +++ b/Property_map/doc/Property_map/Property_map.txt @@ -12,7 +12,7 @@ namespace CGAL { \section Property_mapA A Short Introduction to the Boost Property Maps Library -The Boost Property Map Library consists mainly of interface specifications in the form of concepts. These interface specifications are intended for use by implementors of generic libraries in communicating requirements on template parameters to their users. In particular, the Boost Property Map concepts define a general purpose interface for mapping key objects to corresponding value objects, thereby hiding the details of how the mapping is implemented from algorithms. The implementation of types fulfilling the property map interface is up to the client of the algorithm to provide. +The Boost Property Map Library consists mainly of interface specifications in the form of concepts. These interface specifications are intended for use by implementers of generic libraries in communicating requirements on template parameters to their users. In particular, the Boost Property Map concepts define a general purpose interface for mapping key objects to corresponding value objects, thereby hiding the details of how the mapping is implemented from algorithms. The implementation of types fulfilling the property map interface is up to the client of the algorithm to provide. The Boost Property Map Library also contains a few adaptors that convert commonly used data-structures that implement a mapping operation, such as builtin arrays (pointers), iterators, and std::map, to have the property map interface. diff --git a/Property_map/examples/Property_map/CMakeLists.txt b/Property_map/examples/Property_map/CMakeLists.txt index 4cc28458f81..7a890baba13 100644 --- a/Property_map/examples/Property_map/CMakeLists.txt +++ b/Property_map/examples/Property_map/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Property_map_Examples) # CGAL and its components diff --git a/Property_map/include/CGAL/Property_container.h b/Property_map/include/CGAL/Property_container.h index 739f652b318..4aa3fe15577 100644 --- a/Property_map/include/CGAL/Property_container.h +++ b/Property_map/include/CGAL/Property_container.h @@ -109,7 +109,7 @@ public: CGAL_precondition(m_active_indices.size() == m_data.size()); } -// deactived as MSVC 2017 as an issue with that but it is not currently used. +// deactivated as MSVC 2017 has an issue with that but it is not currently used. #if 0 virtual void move(Property_array_base&& other_base) override { auto&& other = static_cast&&>(other_base); diff --git a/Property_map/test/Property_map/CMakeLists.txt b/Property_map/test/Property_map/CMakeLists.txt index 9f920ea9611..92a3eb097d5 100644 --- a/Property_map/test/Property_map/CMakeLists.txt +++ b/Property_map/test/Property_map/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Property_map_Tests) # CGAL and its components diff --git a/Property_map/test/Property_map/test_Property_container.cpp b/Property_map/test/Property_map/test_Property_container.cpp index 1efe25f4001..eb0099ed8c1 100644 --- a/Property_map/test/Property_map/test_Property_container.cpp +++ b/Property_map/test/Property_map/test_Property_container.cpp @@ -18,7 +18,7 @@ void test_property_creation() { static_assert(std::is_same_v>>); assert(properties.num_properties() == 2); - // get() should retreive the same arrays + // get() should retrieve the same arrays assert(integers.get() == properties.get_property("integer")); assert(floats.get() == properties.get_property("float")); diff --git a/QP_solver/examples/QP_solver/CMakeLists.txt b/QP_solver/examples/QP_solver/CMakeLists.txt index 0c3ab1c6541..530025ed487 100644 --- a/QP_solver/examples/QP_solver/CMakeLists.txt +++ b/QP_solver/examples/QP_solver/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(QP_solver_Examples) find_package(CGAL REQUIRED) diff --git a/QP_solver/include/CGAL/QP_functions.h b/QP_solver/include/CGAL/QP_functions.h index 37c90936eca..89e650180ac 100644 --- a/QP_solver/include/CGAL/QP_functions.h +++ b/QP_solver/include/CGAL/QP_functions.h @@ -30,7 +30,7 @@ namespace QP_functions_detail { // p is treated as LinearProgram / QuadraticProgram // Is_nonnegative == Tag_true / Tag_false // p is treated as Nonnegative / Arbitrary - // the dmatrix parameter specificies whether the quadratic matrix (if any) + // the dmatrix parameter specifies whether the quadratic matrix (if any) // is written in DMATRIX format (no multiplication by two, good for // cross-checking output, or in QMATRIX format (good for using other // solvers like CPLEX) @@ -83,7 +83,7 @@ namespace QP_functions_detail { bool is_in_equational_form (const R& r); // internal routine: - // test whether the row vectors of A that correpsond to equations + // test whether the row vectors of A that correspond to equations // are linearly independent; this is done using type ET. The value // type of LinearInequalitySystem must be convertible to ET template diff --git a/QP_solver/include/CGAL/QP_solver/QP_functions_impl.h b/QP_solver/include/CGAL/QP_solver/QP_functions_impl.h index 37496f16136..83d409a175e 100644 --- a/QP_solver/include/CGAL/QP_solver/QP_functions_impl.h +++ b/QP_solver/include/CGAL/QP_solver/QP_functions_impl.h @@ -36,7 +36,7 @@ namespace QP_functions_detail { return true; } - // test whether the row vectors of A that correpsond to equations + // test whether the row vectors of A that correspond to equations // are linearly independent; this is done using type ET. The value // type of LinearInequalitySystem must be convertible to ET template diff --git a/QP_solver/include/CGAL/QP_solver/QP_solver_impl.h b/QP_solver/include/CGAL/QP_solver/QP_solver_impl.h index 262e20f1ba7..d0eefd3454c 100644 --- a/QP_solver/include/CGAL/QP_solver/QP_solver_impl.h +++ b/QP_solver/include/CGAL/QP_solver/QP_solver_impl.h @@ -1053,7 +1053,7 @@ ratio_test_2( Tag_false) // optimal BEFORE a variable drops to zero. As delta = mu_j - mu_j(t_1), // the latter is precisely the case if delta_min >= -mu_j(t_1). // - // (Note: please forget the crap identitiy between (2.11) and (2.12); the + // (Note: please forget the crap identity between (2.11) and (2.12); the // notation is misleading.) // // Now to the nonstandard-form case. diff --git a/QP_solver/test/QP_solver/CMakeLists.txt b/QP_solver/test/QP_solver/CMakeLists.txt index 72866e9432d..bf4d78ee26d 100644 --- a/QP_solver/test/QP_solver/CMakeLists.txt +++ b/QP_solver/test/QP_solver/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(QP_solver_Tests) find_package(CGAL REQUIRED) diff --git a/Random_numbers/test/Random_numbers/CMakeLists.txt b/Random_numbers/test/Random_numbers/CMakeLists.txt index 58b35707a54..9b06ba31570 100644 --- a/Random_numbers/test/Random_numbers/CMakeLists.txt +++ b/Random_numbers/test/Random_numbers/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Random_numbers_Tests) find_package(CGAL REQUIRED) diff --git a/Ridges_3/doc/Ridges_3/Ridges_3.txt b/Ridges_3/doc/Ridges_3/Ridges_3.txt index e060ec4d1c4..e6e30e83d92 100644 --- a/Ridges_3/doc/Ridges_3/Ridges_3.txt +++ b/Ridges_3/doc/Ridges_3/Ridges_3.txt @@ -44,7 +44,7 @@ functions of the package are provided in Section \ref Ridges_3Examples. For a detailed introduction to ridges and related topics, the reader may consult -\cgalCite{cgal:hgygm-ttdpf-99},cgal:p-gd-01, as well as +\cgalCite{cgal:hgygm-ttdpf-99},\cgalCite{cgal:p-gd-01}, as well as the following survey article \cgalCite{cgal:cp-ssulc-05}. In the sequel, we just introduce the basic notions so as to explain our algorithms. Consider a smooth embedded surface, and denote \f$ k_1\f$ diff --git a/Ridges_3/examples/Ridges_3/CMakeLists.txt b/Ridges_3/examples/Ridges_3/CMakeLists.txt index fa1c4c35ff6..7c9dac3523f 100644 --- a/Ridges_3/examples/Ridges_3/CMakeLists.txt +++ b/Ridges_3/examples/Ridges_3/CMakeLists.txt @@ -1,5 +1,5 @@ # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Ridges_3_Examples) find_package(CGAL REQUIRED) diff --git a/Ridges_3/test/Ridges_3/CMakeLists.txt b/Ridges_3/test/Ridges_3/CMakeLists.txt index f47bdeca10a..5fe941c248b 100644 --- a/Ridges_3/test/Ridges_3/CMakeLists.txt +++ b/Ridges_3/test/Ridges_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Ridges_3_Tests) find_package(CGAL REQUIRED) diff --git a/SMDS_3/examples/SMDS_3/CMakeLists.txt b/SMDS_3/examples/SMDS_3/CMakeLists.txt index a1d23ab87ab..c00acbc0408 100644 --- a/SMDS_3/examples/SMDS_3/CMakeLists.txt +++ b/SMDS_3/examples/SMDS_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.20) +cmake_minimum_required(VERSION 3.12...3.29) project(SMDS_3_Examples) diff --git a/SMDS_3/test/SMDS_3/CMakeLists.txt b/SMDS_3/test/SMDS_3/CMakeLists.txt index 7124b808434..8f88df59ce4 100644 --- a/SMDS_3/test/SMDS_3/CMakeLists.txt +++ b/SMDS_3/test/SMDS_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.20) +cmake_minimum_required(VERSION 3.12...3.29) project(SMDS_3_Tests) find_package(CGAL REQUIRED) diff --git a/STL_Extension/benchmark/compact_container_benchmark/CMakeLists.txt b/STL_Extension/benchmark/compact_container_benchmark/CMakeLists.txt index 4771b63fe10..dca323d0a78 100644 --- a/STL_Extension/benchmark/compact_container_benchmark/CMakeLists.txt +++ b/STL_Extension/benchmark/compact_container_benchmark/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Compact_container_benchmark) find_package(CGAL REQUIRED) diff --git a/STL_Extension/benchmark/copy_n_benchmark/CMakeLists.txt b/STL_Extension/benchmark/copy_n_benchmark/CMakeLists.txt index f84da4862f9..beb128ff1da 100644 --- a/STL_Extension/benchmark/copy_n_benchmark/CMakeLists.txt +++ b/STL_Extension/benchmark/copy_n_benchmark/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(copy_n_benchmark_example) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/STL_Extension/doc/STL_Extension/CGAL/tags.h b/STL_Extension/doc/STL_Extension/CGAL/tags.h index 91b0ca5532d..9d349bf63a0 100644 --- a/STL_Extension/doc/STL_Extension/CGAL/tags.h +++ b/STL_Extension/doc/STL_Extension/CGAL/tags.h @@ -102,3 +102,74 @@ struct Null_tag { }; /* end Null_tag */ } /* end namespace CGAL */ + +namespace CGAL { + +/*! +\ingroup PkgSTLExtensionUtilities + +The class `Manifold_tag` is a tag class used to monitor the +surface meshing algorithm. When instantiated with the tag +`Manifold_tag` the function template +`make_surface_mesh()` +ensures that the output mesh is a manifold surface +without boundary. + +\sa `make_surface_mesh()` +\sa `Manifold_with_boundary_tag` +\sa `Non_manifold_tag` + +*/ + +struct Manifold_tag { + +}; /* end Manifold_tag */ +} /* end namespace CGAL */ + +namespace CGAL { + +/*! +\ingroup PkgSTLExtensionUtilities + +The class `Manifold_with_boundary_tag` is a tag class used to monitor the +surface meshing algorithm. When instantiated with the tag +`Manifold_with_boundary_tag`, the function template +`make_surface_mesh()` +ensures that the output mesh is a manifold surface +but it may have boundaries. + +\sa `make_surface_mesh()` +\sa `Manifold_tag` +\sa `Non_manifold_tag` + +*/ + +struct Manifold_with_boundary_tag { + +}; /* end Manifold_with_boundary_tag */ +} /* end namespace CGAL */ + +namespace CGAL { + +/*! +\ingroup PkgSTLExtensionUtilities + +The class `Non_manifold_tag` is a tag class used to monitor the +surface meshing algorithm. When instantiated with the tag +`Non_manifold_tag` the function template +`make_surface_mesh()` +does not ensure that the output mesh is a manifold surface. +The manifold property of output mesh +may nevertheless result from the choice of +appropriate meshing criteria. + +\sa `make_surface_mesh()` +\sa `Manifold_tag` +\sa `Manifold_with_boundary_tag` + +*/ + +struct Non_manifold_tag { + +}; /* end Non_manifold_tag */ +} /* end namespace CGAL */ diff --git a/STL_Extension/doc/STL_Extension/dependencies b/STL_Extension/doc/STL_Extension/dependencies index e3e3864ed1f..a28909c2b4f 100644 --- a/STL_Extension/doc/STL_Extension/dependencies +++ b/STL_Extension/doc/STL_Extension/dependencies @@ -1,7 +1,7 @@ -Manual -Circulator -Number_types -Kernel_23 -Miscellany -Surface_mesh BGL +Circulator +Kernel_23 +Manual +Miscellany +Number_types +Surface_mesh diff --git a/STL_Extension/examples/STL_Extension/CMakeLists.txt b/STL_Extension/examples/STL_Extension/CMakeLists.txt index f8a2de476a2..be616289bff 100644 --- a/STL_Extension/examples/STL_Extension/CMakeLists.txt +++ b/STL_Extension/examples/STL_Extension/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(STL_Extension_Examples) find_package(CGAL REQUIRED) diff --git a/STL_Extension/include/CGAL/Handle_with_policy.h b/STL_Extension/include/CGAL/Handle_with_policy.h index 528bf8061d1..7127e36fd96 100644 --- a/STL_Extension/include/CGAL/Handle_with_policy.h +++ b/STL_Extension/include/CGAL/Handle_with_policy.h @@ -597,7 +597,7 @@ public: typedef Reference_counted_hierarchy_with_union Type; }; - // abbreviation to re-use its implementation below. + // abbreviation to reuse its implementation below. typedef Handle_policy_union U; /*! \brief unifies the representations of the two handles \a h and \a g. diff --git a/STL_Extension/include/CGAL/STL_Extension/internal/boost/array_binary_tree.hpp b/STL_Extension/include/CGAL/STL_Extension/internal/boost/array_binary_tree.hpp index 3e1fa963176..addbac79ccd 100644 --- a/STL_Extension/include/CGAL/STL_Extension/internal/boost/array_binary_tree.hpp +++ b/STL_Extension/include/CGAL/STL_Extension/internal/boost/array_binary_tree.hpp @@ -30,7 +30,7 @@ namespace CGAL { namespace internal { namespace boost_ { /* - * Note: array_binary_tree is a completey balanced binary tree. + * Note: array_binary_tree is a completely balanced binary tree. */ #if !defined BOOST_NO_STD_ITERATOR_TRAITS template diff --git a/STL_Extension/include/CGAL/Time_stamper.h b/STL_Extension/include/CGAL/Time_stamper.h index 295717b8041..081c003b69b 100644 --- a/STL_Extension/include/CGAL/Time_stamper.h +++ b/STL_Extension/include/CGAL/Time_stamper.h @@ -42,7 +42,7 @@ struct Time_stamper pt->set_time_stamp(new_ts); } else { - // else: the time stamp is re-used + // else: the time stamp is reused // Enforces that the time stamp is greater than the current value. // That is used when a TDS_3 is copied: in that case, the diff --git a/STL_Extension/include/CGAL/algorithm.h b/STL_Extension/include/CGAL/algorithm.h index 34ca7c58cf5..8cabe0a3f4b 100644 --- a/STL_Extension/include/CGAL/algorithm.h +++ b/STL_Extension/include/CGAL/algorithm.h @@ -263,7 +263,7 @@ lexicographical_compare_three_valued( InputIterator1 first1, InputIterator1 last The iterator range \c [first,beyond) is written to \c os (obeying CGAL I/O modes). Each element is bracketed by \c pre and \c post (default: empty string). Adjacent values are - spearated by \c sep (default: ", ", i.e. comma space). + separated by \c sep (default: ", ", i.e. comma space). The stream \c os is returned in its new state after output. Example: diff --git a/STL_Extension/include/CGAL/tags.h b/STL_Extension/include/CGAL/tags.h index eba9ffdc721..8c446d8128d 100644 --- a/STL_Extension/include/CGAL/tags.h +++ b/STL_Extension/include/CGAL/tags.h @@ -51,6 +51,11 @@ typedef CGAL::Parallel_tag Parallel_if_available_tag; typedef CGAL::Sequential_tag Parallel_if_available_tag; #endif +// For Surface_mesher and Mesh_3 +struct Non_manifold_tag {}; +struct Manifold_tag {}; +struct Manifold_with_boundary_tag {}; + // A function that asserts a specific compile time tag // forcing its two arguments to have equal type. template diff --git a/STL_Extension/test/STL_Extension/CMakeLists.txt b/STL_Extension/test/STL_Extension/CMakeLists.txt index 4207a5aef8e..ee978530077 100644 --- a/STL_Extension/test/STL_Extension/CMakeLists.txt +++ b/STL_Extension/test/STL_Extension/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(STL_Extension_Tests) find_package(CGAL REQUIRED) diff --git a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/CMakeLists.txt b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/CMakeLists.txt index f08b349b318..02feca0ab2c 100644 --- a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/CMakeLists.txt +++ b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Scale_space_reconstruction_3_Examples) find_package(CGAL REQUIRED) diff --git a/Scale_space_reconstruction_3/include/CGAL/Scale_space_reconstruction_3/Alpha_shape_mesher.h b/Scale_space_reconstruction_3/include/CGAL/Scale_space_reconstruction_3/Alpha_shape_mesher.h index d0f393c0821..f2aa4922182 100644 --- a/Scale_space_reconstruction_3/include/CGAL/Scale_space_reconstruction_3/Alpha_shape_mesher.h +++ b/Scale_space_reconstruction_3/include/CGAL/Scale_space_reconstruction_3/Alpha_shape_mesher.h @@ -123,7 +123,7 @@ private: // The shape must be a pointer, because the alpha of a Fixed_alpha_shape_3 // can only be set at construction and its assignment operator is private. // We want to be able to set the alpha after constructing the scale-space - // reconstructer object. + // reconstructor object. Shape* _shape; // The surface. If the surface is collected per shell, the triples of the diff --git a/Scripts/developer_scripts/autotest_cgal b/Scripts/developer_scripts/autotest_cgal index c984ac9ae23..8d0f0f3b8f8 100755 --- a/Scripts/developer_scripts/autotest_cgal +++ b/Scripts/developer_scripts/autotest_cgal @@ -9,7 +9,7 @@ # * or alternatively curl # # Furthermore you have to edit .autocgalrc in order to -# cutomize it for your environment. +# customize it for your environment. # In particular you have to change the BUILHOSTS # variable to contain the names of your hosts and # set the COMPILERS_ variables to the diff --git a/Scripts/developer_scripts/cgal_create_release_with_cmake.cmake b/Scripts/developer_scripts/cgal_create_release_with_cmake.cmake index 2443c61aad5..96479acffeb 100644 --- a/Scripts/developer_scripts/cgal_create_release_with_cmake.cmake +++ b/Scripts/developer_scripts/cgal_create_release_with_cmake.cmake @@ -10,7 +10,7 @@ # GPL_PACKAGE_LIST=path to a file containing the list of GPL packages to include in the release. If not provided all of them are. # GENERATE_TARBALLS=[ON/OFF] indicates if release tarballs should be created as DESTINATION -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) find_program(BASH NAMES bash sh) function(process_package pkg) if(VERBOSE) diff --git a/Scripts/developer_scripts/run_doxygen_testsuite b/Scripts/developer_scripts/run_doxygen_testsuite index ec3a5855620..470eb295d84 100755 --- a/Scripts/developer_scripts/run_doxygen_testsuite +++ b/Scripts/developer_scripts/run_doxygen_testsuite @@ -13,6 +13,14 @@ exec > "$LOGFILE" # Display commands as if using `set -o xtrace`, but to the stdout trap 'echo "[$BASH_SOURCE:$LINENO] $BASH_COMMAND" >&1' DEBUG +# Report errxit errors on cerr (&2) +report_errexit() { + echo "errexit on line $(caller)" >&1 + echo "errexit on line $(caller)" >&2 +} + +trap report_errexit ERR + # A helper error function that outputs both to stderr and stdout before # aborting the script. function error() { diff --git a/Scripts/scripts/cgal_create_CMakeLists b/Scripts/scripts/cgal_create_CMakeLists index 07e560aee48..e83f25c1286 100755 --- a/Scripts/scripts/cgal_create_CMakeLists +++ b/Scripts/scripts/cgal_create_CMakeLists @@ -85,7 +85,7 @@ create_cmake_script_with_options() # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) EOF #--------------------------------------------------------------------------- diff --git a/Scripts/scripts/cgal_create_cmake_script b/Scripts/scripts/cgal_create_cmake_script index a7a22294904..3b74a4a3da6 100755 --- a/Scripts/scripts/cgal_create_cmake_script +++ b/Scripts/scripts/cgal_create_cmake_script @@ -31,7 +31,7 @@ create_cmake_script() # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project( ${PROJECT}${TYPE} ) find_package(CGAL REQUIRED QUIET OPTIONAL_COMPONENTS Core ) diff --git a/SearchStructures/examples/RangeSegmentTrees/CMakeLists.txt b/SearchStructures/examples/RangeSegmentTrees/CMakeLists.txt index 652208fa35f..cd2ca858e8c 100644 --- a/SearchStructures/examples/RangeSegmentTrees/CMakeLists.txt +++ b/SearchStructures/examples/RangeSegmentTrees/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(RangeSegmentTrees_Examples) find_package(CGAL REQUIRED) diff --git a/SearchStructures/test/RangeSegmentTrees/CMakeLists.txt b/SearchStructures/test/RangeSegmentTrees/CMakeLists.txt index 006802d17e3..661aac496bb 100644 --- a/SearchStructures/test/RangeSegmentTrees/CMakeLists.txt +++ b/SearchStructures/test/RangeSegmentTrees/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(RangeSegmentTrees_Tests) find_package(CGAL REQUIRED) diff --git a/Segment_Delaunay_graph_2/benchmark/Segment_Delaunay_graph_2/CMakeLists.txt b/Segment_Delaunay_graph_2/benchmark/Segment_Delaunay_graph_2/CMakeLists.txt index c46aa5c84de..7b51d363797 100644 --- a/Segment_Delaunay_graph_2/benchmark/Segment_Delaunay_graph_2/CMakeLists.txt +++ b/Segment_Delaunay_graph_2/benchmark/Segment_Delaunay_graph_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Segment_Delaunay_graph_2_example) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Segment_Delaunay_graph_2/examples/Segment_Delaunay_graph_2/CMakeLists.txt b/Segment_Delaunay_graph_2/examples/Segment_Delaunay_graph_2/CMakeLists.txt index 7d280fb1feb..18da5df1518 100644 --- a/Segment_Delaunay_graph_2/examples/Segment_Delaunay_graph_2/CMakeLists.txt +++ b/Segment_Delaunay_graph_2/examples/Segment_Delaunay_graph_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Segment_Delaunay_graph_2_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core) diff --git a/Segment_Delaunay_graph_2/examples/Segment_Delaunay_graph_2/sdg-advanced-draw.cpp b/Segment_Delaunay_graph_2/examples/Segment_Delaunay_graph_2/sdg-advanced-draw.cpp index 09791c10c36..101087519e7 100644 --- a/Segment_Delaunay_graph_2/examples/Segment_Delaunay_graph_2/sdg-advanced-draw.cpp +++ b/Segment_Delaunay_graph_2/examples/Segment_Delaunay_graph_2/sdg-advanced-draw.cpp @@ -15,7 +15,7 @@ #include #define SDG_DRAW_DEBUG // debug log -#define SDG_DRAW_DUMP_FILES // print input / ouput +#define SDG_DRAW_DUMP_FILES // print input / output // #define SINGLE_INPUT_FILE // if not defined, each segment of the input has its own file #ifdef SDG_DRAW_DUMP_FILES_PP // also print parabolas diff --git a/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2_impl.h b/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2_impl.h index 00c2130c50a..d09313c5d6b 100644 --- a/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2_impl.h +++ b/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2_impl.h @@ -2549,7 +2549,7 @@ arrangement_type(const Site_2& p, const Site_2& q) const Arrangement_type res = geom_traits().arrangement_type_2_object()(p, q); - // The valeus that have to be treated are the following: + // The values that have to be treated are the following: // DISJOINT, TOUCH_1, TOUCH_2, CROSSING, IDENTICAL, INTERIOR, // TOUCH_11_INTERIOR_1, TOUCH_12_INTERIOR_1, TOUCH_21_INTERIOR_1 and // TOUCH_22_INTERIOR_1. diff --git a/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Vertex_conflict_C2.h b/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Vertex_conflict_C2.h index 9b7a9355621..5b6b43ad161 100644 --- a/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Vertex_conflict_C2.h +++ b/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Vertex_conflict_C2.h @@ -147,7 +147,7 @@ private: bool q_exact = q.is_input(); bool t_exact = t.is_input(); bool filtered = false; - // the following if-statement does the gometric filtering... + // the following if-statement does the geometric filtering... // maybe it is not so important since this will only be // activated if a lot of intersection points appear on the // convex hull @@ -239,7 +239,7 @@ private: bool q_exact = q.is_input(); bool t_exact = t.is_input(); bool filtered = false; - // the following if-statement does the gometric filtering... + // the following if-statement does the geometric filtering... // maybe it is not so important since this will only be // activated if a lot of intersection points appear on the // convex hull diff --git a/Segment_Delaunay_graph_2/test/Segment_Delaunay_graph_2/CMakeLists.txt b/Segment_Delaunay_graph_2/test/Segment_Delaunay_graph_2/CMakeLists.txt index 12f7bbe57c4..9507b4e0539 100644 --- a/Segment_Delaunay_graph_2/test/Segment_Delaunay_graph_2/CMakeLists.txt +++ b/Segment_Delaunay_graph_2/test/Segment_Delaunay_graph_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Segment_Delaunay_graph_2_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Segment_Delaunay_graph_Linf_2/benchmark/Segment_Delaunay_graph_Linf_2/CMakeLists.txt b/Segment_Delaunay_graph_Linf_2/benchmark/Segment_Delaunay_graph_Linf_2/CMakeLists.txt index 806bec1f95d..490127d7e40 100644 --- a/Segment_Delaunay_graph_Linf_2/benchmark/Segment_Delaunay_graph_Linf_2/CMakeLists.txt +++ b/Segment_Delaunay_graph_Linf_2/benchmark/Segment_Delaunay_graph_Linf_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Segment_Delaunay_graph_2_example) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Segment_Delaunay_graph_Linf_2/examples/Segment_Delaunay_graph_Linf_2/CMakeLists.txt b/Segment_Delaunay_graph_Linf_2/examples/Segment_Delaunay_graph_Linf_2/CMakeLists.txt index a6f61f80ec4..36922d90e81 100644 --- a/Segment_Delaunay_graph_Linf_2/examples/Segment_Delaunay_graph_Linf_2/CMakeLists.txt +++ b/Segment_Delaunay_graph_Linf_2/examples/Segment_Delaunay_graph_Linf_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Segment_Delaunay_graph_Linf_2_Examples) find_package(CGAL REQUIRED) diff --git a/Segment_Delaunay_graph_Linf_2/include/CGAL/Segment_Delaunay_graph_Linf_2/Vertex_conflict_C2.h b/Segment_Delaunay_graph_Linf_2/include/CGAL/Segment_Delaunay_graph_Linf_2/Vertex_conflict_C2.h index 229e30ffc9c..c78bc09543c 100644 --- a/Segment_Delaunay_graph_Linf_2/include/CGAL/Segment_Delaunay_graph_Linf_2/Vertex_conflict_C2.h +++ b/Segment_Delaunay_graph_Linf_2/include/CGAL/Segment_Delaunay_graph_Linf_2/Vertex_conflict_C2.h @@ -184,7 +184,7 @@ private: bool q_exact = q.is_input(); bool t_exact = t.is_input(); bool filtered = false; - // the following if-statement does the gometric filtering... + // the following if-statement does the geometric filtering... // maybe it is not so important since this will only be // activated if a lot of intersection points appear on the // convex hull @@ -284,7 +284,7 @@ private: bool q_exact = q.is_input(); bool t_exact = t.is_input(); bool filtered = false; - // the following if-statement does the gometric filtering... + // the following if-statement does the geometric filtering... // maybe it is not so important since this will only be // activated if a lot of intersection points appear on the // convex hull diff --git a/Segment_Delaunay_graph_Linf_2/test/Segment_Delaunay_graph_Linf_2/CMakeLists.txt b/Segment_Delaunay_graph_Linf_2/test/Segment_Delaunay_graph_Linf_2/CMakeLists.txt index dbd377a9b05..7c8b12dcd47 100644 --- a/Segment_Delaunay_graph_Linf_2/test/Segment_Delaunay_graph_Linf_2/CMakeLists.txt +++ b/Segment_Delaunay_graph_Linf_2/test/Segment_Delaunay_graph_Linf_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Segment_Delaunay_graph_Linf_2_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Set_movable_separability_2/examples/Set_movable_separability_2/CMakeLists.txt b/Set_movable_separability_2/examples/Set_movable_separability_2/CMakeLists.txt index 5f5008878f6..d8a58dc8c2e 100644 --- a/Set_movable_separability_2/examples/Set_movable_separability_2/CMakeLists.txt +++ b/Set_movable_separability_2/examples/Set_movable_separability_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Set_movable_separability_2_Examples) find_package(CGAL REQUIRED) diff --git a/Set_movable_separability_2/test/Set_movable_separability_2/CMakeLists.txt b/Set_movable_separability_2/test/Set_movable_separability_2/CMakeLists.txt index b06dec3dfef..7169e884959 100644 --- a/Set_movable_separability_2/test/Set_movable_separability_2/CMakeLists.txt +++ b/Set_movable_separability_2/test/Set_movable_separability_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Set_movable_separability_2_Tests) if(RUNNING_CGAL_AUTO_TEST OR CGAL_TEST_SUITE) diff --git a/Shape_detection/benchmark/Shape_detection/CMakeLists.txt b/Shape_detection/benchmark/Shape_detection/CMakeLists.txt index eb5185726dc..77e9dc7684f 100644 --- a/Shape_detection/benchmark/Shape_detection/CMakeLists.txt +++ b/Shape_detection/benchmark/Shape_detection/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script. # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Shape_detection_Benchmarks) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Shape_detection/examples/Shape_detection/CMakeLists.txt b/Shape_detection/examples/Shape_detection/CMakeLists.txt index 928e332d3cc..4a2cbea8183 100644 --- a/Shape_detection/examples/Shape_detection/CMakeLists.txt +++ b/Shape_detection/examples/Shape_detection/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script. # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Shape_detection_Examples) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Shape_detection/include/CGAL/Shape_detection/Efficient_RANSAC/Octree.h b/Shape_detection/include/CGAL/Shape_detection/Efficient_RANSAC/Octree.h index acb782b70a6..e965e9193bc 100644 --- a/Shape_detection/include/CGAL/Shape_detection/Efficient_RANSAC/Octree.h +++ b/Shape_detection/include/CGAL/Shape_detection/Efficient_RANSAC/Octree.h @@ -31,10 +31,6 @@ namespace CGAL { namespace Shape_detection { -// Forward declaration needed for automatic traits detection without -// including the deprecated header itself -template -struct Shape_detection_traits; namespace internal { @@ -43,9 +39,6 @@ struct Traits_base { typedef Traits type; }; template struct Traits_base > { typedef Gt type; }; -template -struct Traits_base > -{ typedef Gt type; }; template class RANSAC_octree { diff --git a/Shape_detection/include/CGAL/Shape_detection/Region_growing/Polygon_mesh/Least_squares_plane_fit_region.h b/Shape_detection/include/CGAL/Shape_detection/Region_growing/Polygon_mesh/Least_squares_plane_fit_region.h index 61e157c8745..03074231c09 100644 --- a/Shape_detection/include/CGAL/Shape_detection/Region_growing/Polygon_mesh/Least_squares_plane_fit_region.h +++ b/Shape_detection/include/CGAL/Shape_detection/Region_growing/Polygon_mesh/Least_squares_plane_fit_region.h @@ -308,7 +308,7 @@ namespace Polygon_mesh { // The best fit plane will be a plane fitted to all vertices of all // region faces with its normal being perpendicular to the plane. // Given that the points, and no normals, are used in estimating - // the plane, the estimated normal will point into an arbitray + // the plane, the estimated normal will point into an arbitrary // one of the two possible directions. // We flip it into the correct direction (the one that the majority // of faces agree with) below. diff --git a/Shape_detection/test/Shape_detection/CMakeLists.txt b/Shape_detection/test/Shape_detection/CMakeLists.txt index ac4e28e2877..35abd070d58 100644 --- a/Shape_detection/test/Shape_detection/CMakeLists.txt +++ b/Shape_detection/test/Shape_detection/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script. # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Shape_detection_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Shape_regularization/benchmark/Shape_regularization/CMakeLists.txt b/Shape_regularization/benchmark/Shape_regularization/CMakeLists.txt index 06073318cbc..645499957d9 100644 --- a/Shape_regularization/benchmark/Shape_regularization/CMakeLists.txt +++ b/Shape_regularization/benchmark/Shape_regularization/CMakeLists.txt @@ -3,7 +3,7 @@ project(Shape_regularization_Benchmarks) -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Shape_regularization/examples/Shape_regularization/CMakeLists.txt b/Shape_regularization/examples/Shape_regularization/CMakeLists.txt index 52206f94312..5e9bf84f85f 100644 --- a/Shape_regularization/examples/Shape_regularization/CMakeLists.txt +++ b/Shape_regularization/examples/Shape_regularization/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists. # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Shape_regularization_Examples) diff --git a/Shape_regularization/test/Shape_regularization/CMakeLists.txt b/Shape_regularization/test/Shape_regularization/CMakeLists.txt index b465c7cfa16..beb23ce81e2 100644 --- a/Shape_regularization/test/Shape_regularization/CMakeLists.txt +++ b/Shape_regularization/test/Shape_regularization/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists. # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Shape_regularization_Tests) diff --git a/Skin_surface_3/examples/Skin_surface_3/CMakeLists.txt b/Skin_surface_3/examples/Skin_surface_3/CMakeLists.txt index 0041dc4ccd0..10bbb63a0e4 100644 --- a/Skin_surface_3/examples/Skin_surface_3/CMakeLists.txt +++ b/Skin_surface_3/examples/Skin_surface_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Skin_surface_3_Examples) find_package(CGAL REQUIRED) diff --git a/Skin_surface_3/test/Skin_surface_3/CMakeLists.txt b/Skin_surface_3/test/Skin_surface_3/CMakeLists.txt index f1076353ab2..3e6401efc37 100644 --- a/Skin_surface_3/test/Skin_surface_3/CMakeLists.txt +++ b/Skin_surface_3/test/Skin_surface_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Skin_surface_3_Tests) find_package(CGAL REQUIRED) diff --git a/Snap_rounding_2/examples/Snap_rounding_2/CMakeLists.txt b/Snap_rounding_2/examples/Snap_rounding_2/CMakeLists.txt index 341729a42b7..5b3941923b9 100644 --- a/Snap_rounding_2/examples/Snap_rounding_2/CMakeLists.txt +++ b/Snap_rounding_2/examples/Snap_rounding_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Snap_rounding_2_Examples) find_package(CGAL REQUIRED) diff --git a/Snap_rounding_2/include/CGAL/Snap_rounding_kd_2.h b/Snap_rounding_2/include/CGAL/Snap_rounding_kd_2.h index a070f1522d3..d626c670601 100644 --- a/Snap_rounding_2/include/CGAL/Snap_rounding_kd_2.h +++ b/Snap_rounding_2/include/CGAL/Snap_rounding_kd_2.h @@ -68,7 +68,7 @@ public: ////////////////////// //Search_traits_kd_tree_2 // -//(Search traits modified to be used by the Spacial Searching kd_trees for Snap rounding) +//(Search traits modified to be used by the Spatial Searching kd_trees for Snap rounding) ////////////////////// template < class Traits_, class Point_ = typename Traits_::Point_2 > diff --git a/Snap_rounding_2/test/Snap_rounding_2/CMakeLists.txt b/Snap_rounding_2/test/Snap_rounding_2/CMakeLists.txt index d243a9dd6e6..eba48480599 100644 --- a/Snap_rounding_2/test/Snap_rounding_2/CMakeLists.txt +++ b/Snap_rounding_2/test/Snap_rounding_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Snap_rounding_2_Tests) find_package(CGAL REQUIRED) diff --git a/Solver_interface/examples/Solver_interface/CMakeLists.txt b/Solver_interface/examples/Solver_interface/CMakeLists.txt index cf7fafadd89..10fc026e719 100644 --- a/Solver_interface/examples/Solver_interface/CMakeLists.txt +++ b/Solver_interface/examples/Solver_interface/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Solver_interface_Examples) find_package(CGAL REQUIRED) diff --git a/Spatial_searching/benchmark/Spatial_searching/CMakeLists.txt b/Spatial_searching/benchmark/Spatial_searching/CMakeLists.txt index cc0ac42097f..4aaf189118f 100644 --- a/Spatial_searching/benchmark/Spatial_searching/CMakeLists.txt +++ b/Spatial_searching/benchmark/Spatial_searching/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Spatial_searching_) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Spatial_searching/benchmark/Spatial_searching/tools/CMakeLists.txt b/Spatial_searching/benchmark/Spatial_searching/tools/CMakeLists.txt index 20d5ad1bb2d..cf823429fee 100644 --- a/Spatial_searching/benchmark/Spatial_searching/tools/CMakeLists.txt +++ b/Spatial_searching/benchmark/Spatial_searching/tools/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(tools_) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Spatial_searching/doc/Spatial_searching/CGAL/Kd_tree.h b/Spatial_searching/doc/Spatial_searching/CGAL/Kd_tree.h index 7261727d5ae..4b370bdba1f 100644 --- a/Spatial_searching/doc/Spatial_searching/CGAL/Kd_tree.h +++ b/Spatial_searching/doc/Spatial_searching/CGAL/Kd_tree.h @@ -209,7 +209,7 @@ OutputIterator search(OutputIterator it, FuzzyQueryItem q) const; Returns a const iterator to the first point in the tree. \note Starting with \cgal 4.6, the order of the points in the iterator range `[begin() , end())` is not the order of insertion of the points into the tree. -This was not guaranteed before but might have beeen observed and exploited. +This was not guaranteed before but might have been observed and exploited. */ iterator begin() const; diff --git a/Spatial_searching/examples/Spatial_searching/CMakeLists.txt b/Spatial_searching/examples/Spatial_searching/CMakeLists.txt index b273ac3477b..18b828a05df 100644 --- a/Spatial_searching/examples/Spatial_searching/CMakeLists.txt +++ b/Spatial_searching/examples/Spatial_searching/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Spatial_searching_Examples) # CGAL and its components diff --git a/Spatial_searching/examples/Spatial_searching/iso_rectangle_2_query_projection.cpp b/Spatial_searching/examples/Spatial_searching/iso_rectangle_2_query_projection.cpp index c50c2853a0d..106b83557b9 100644 --- a/Spatial_searching/examples/Spatial_searching/iso_rectangle_2_query_projection.cpp +++ b/Spatial_searching/examples/Spatial_searching/iso_rectangle_2_query_projection.cpp @@ -52,7 +52,7 @@ int main() Point_2 q(0.7, 0.7); // Searching an exact range - // using default value 0.0 for epsilon fuzziness paramater + // using default value 0.0 for epsilon fuzziness parameter Fuzzy_iso_box exact_range(p,q); tree.search( std::back_inserter( result ), exact_range); std::cout << "The points in the box [0.2, 0.7]^2 are: " << std::endl; @@ -62,7 +62,7 @@ int main() result.clear(); // Searching a fuzzy range - // using value 0.1 for fuzziness paramater + // using value 0.1 for fuzziness parameter Fuzzy_iso_box approximate_range(p, q, 0.1); tree.search(std::back_inserter( result ), approximate_range); std::cout << "The points in the fuzzy box [[0.1, 0.3], [0.6, 0.8]]^2 are: " << std::endl; diff --git a/Spatial_searching/test/Spatial_searching/CMakeLists.txt b/Spatial_searching/test/Spatial_searching/CMakeLists.txt index 98c4528f085..c6bce28aef0 100644 --- a/Spatial_searching/test/Spatial_searching/CMakeLists.txt +++ b/Spatial_searching/test/Spatial_searching/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Spatial_searching_Tests) find_package(CGAL REQUIRED) diff --git a/Spatial_sorting/benchmark/Spatial_sorting/CMakeLists.txt b/Spatial_sorting/benchmark/Spatial_sorting/CMakeLists.txt index 9cd0fbfc6ba..7311dc9811e 100644 --- a/Spatial_sorting/benchmark/Spatial_sorting/CMakeLists.txt +++ b/Spatial_sorting/benchmark/Spatial_sorting/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Spatial_sorting_) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Spatial_sorting/examples/Spatial_sorting/CMakeLists.txt b/Spatial_sorting/examples/Spatial_sorting/CMakeLists.txt index e8cd7e05df7..bee8717e29d 100644 --- a/Spatial_sorting/examples/Spatial_sorting/CMakeLists.txt +++ b/Spatial_sorting/examples/Spatial_sorting/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Spatial_sorting_Examples) find_package(CGAL REQUIRED) diff --git a/Spatial_sorting/test/Spatial_sorting/CMakeLists.txt b/Spatial_sorting/test/Spatial_sorting/CMakeLists.txt index e7f809cb086..57662ba95f7 100644 --- a/Spatial_sorting/test/Spatial_sorting/CMakeLists.txt +++ b/Spatial_sorting/test/Spatial_sorting/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Spatial_sorting_Tests) find_package(CGAL REQUIRED) diff --git a/Straight_skeleton_2/doc/Straight_skeleton_2/CGAL/extrude_skeleton.h b/Straight_skeleton_2/doc/Straight_skeleton_2/CGAL/extrude_skeleton.h index 6fcb059ae2d..af6dd682f58 100644 --- a/Straight_skeleton_2/doc/Straight_skeleton_2/CGAL/extrude_skeleton.h +++ b/Straight_skeleton_2/doc/Straight_skeleton_2/CGAL/extrude_skeleton.h @@ -13,7 +13,7 @@ namespace CGAL { * `maximum_height()` named parameter. * * The result is a closed, 2-manifold surface triangle mesh. Note that this mesh can have non-local -* self-intersections if a maximal height is provided due to possible (geometric) non-manifold occurences. +* self-intersections if a maximal height is provided due to possible (geometric) non-manifold occurrences. * * @tparam PolygonWithHoles must be a model of `SequenceContainer` with value type `InK::Point_2` (e.g. `Polygon_2`) or a model of `GeneralPolygonWithHoles_2` (e.g. `Polygon_with_holes_2`). diff --git a/Straight_skeleton_2/doc/Straight_skeleton_2/Straight_skeleton_2.txt b/Straight_skeleton_2/doc/Straight_skeleton_2/Straight_skeleton_2.txt index c771bf8929e..9686bdf2e97 100644 --- a/Straight_skeleton_2/doc/Straight_skeleton_2/Straight_skeleton_2.txt +++ b/Straight_skeleton_2/doc/Straight_skeleton_2/Straight_skeleton_2.txt @@ -175,7 +175,7 @@ for each boundary that does not contain the defining contour edge of its inciden \cgalFigureCaptionBegin{SLSArtificial} A polygon with four holes (black) and its straight skeleton (red). -Three artifical bisectors (green) are added in a post-processing step to recover the simply-connected +Three artificial bisectors (green) are added in a post-processing step to recover the simply-connected property for the straight skeleton face (gray) of the rightmost vertical contour edge. \cgalFigureCaptionEnd diff --git a/Straight_skeleton_2/examples/Straight_skeleton_2/CMakeLists.txt b/Straight_skeleton_2/examples/Straight_skeleton_2/CMakeLists.txt index 98bdac7fa05..3a8820e61a0 100644 --- a/Straight_skeleton_2/examples/Straight_skeleton_2/CMakeLists.txt +++ b/Straight_skeleton_2/examples/Straight_skeleton_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project( Straight_skeleton_2_Examples ) find_package(CGAL REQUIRED COMPONENTS Qt6 Core) diff --git a/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_builder_2_impl.h b/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_builder_2_impl.h index 5470ad13717..0c0a87466ca 100644 --- a/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_builder_2_impl.h +++ b/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_builder_2_impl.h @@ -2037,7 +2037,7 @@ bool Straight_skeleton_builder_2::MergeCoincidentNodes() // For weighted skeletons of polygons with holes, one can create non-simply-connected skeleton faces. // This is a problem both because it is not a valid HDS, and because we walk skeleton face borders -// in polygon offseting. We add so-called artificial nodes and bisectors to ensure that faces +// in polygon offsetting. We add so-called artificial nodes and bisectors to ensure that faces // are simply-connected by shooting rays from the topmost vertex of the bisectors of the skeleton // of the hole(s). template @@ -2317,7 +2317,7 @@ extreme_h / \ extreme_h / \ // This is not a valid triedge because split_h is not a contour halfedge, but we need // to know which skeleton bisector the line orthogonal to contour_h interscets. - // The pair of identical contour halfedges at e0 and e1 is the marker for artifical vertices + // The pair of identical contour halfedges at e0 and e1 is the marker for artificial vertices SetVertexTriedge(new_v, artificial_event->triedge()); SetTrisegment(new_v, artificial_event->trisegment()); diff --git a/Straight_skeleton_2/include/CGAL/constructions/Straight_skeleton_cons_ftC2.h b/Straight_skeleton_2/include/CGAL/constructions/Straight_skeleton_cons_ftC2.h index 9d04a209e26..2fa5d01ce06 100644 --- a/Straight_skeleton_2/include/CGAL/constructions/Straight_skeleton_cons_ftC2.h +++ b/Straight_skeleton_2/include/CGAL/constructions/Straight_skeleton_cons_ftC2.h @@ -567,7 +567,7 @@ compute_artifical_isec_timeC2 ( Trisegment_2_ptr< Trisegment_2(FT(0),FT(0))) ; // does not exist - // Compute the intersection point and evalute the time from the line equation of the contour edge + // Compute the intersection point and evaluate the time from the line equation of the contour edge auto inter_res = K().intersect_2_object()(ray, opp_seg); FT t; diff --git a/Straight_skeleton_2/test/Straight_skeleton_2/CMakeLists.txt b/Straight_skeleton_2/test/Straight_skeleton_2/CMakeLists.txt index 20fdb058a7b..c7395c3cc44 100644 --- a/Straight_skeleton_2/test/Straight_skeleton_2/CMakeLists.txt +++ b/Straight_skeleton_2/test/Straight_skeleton_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Straight_skeleton_2_Tests) find_package(CGAL REQUIRED COMPONENTS Qt6 Core) diff --git a/Straight_skeleton_extrusion_2/include/CGAL/extrude_skeleton.h b/Straight_skeleton_extrusion_2/include/CGAL/extrude_skeleton.h index bb8929a3da9..e4d7ef2722a 100644 --- a/Straight_skeleton_extrusion_2/include/CGAL/extrude_skeleton.h +++ b/Straight_skeleton_extrusion_2/include/CGAL/extrude_skeleton.h @@ -886,7 +886,7 @@ void convert_angles(AngleRange& angles) CGAL_precondition(0 < angle && angle < 180); // @todo should this be an epsilon around 90°? As theta goes to 90°, tan(theta) goes to infinity - // and thus we could get numerical issues (overlfows) if the kernel is not exact + // and thus we could get numerical issues (overflows) if the kernel is not exact if(angle == 90) return 0; else @@ -1034,7 +1034,7 @@ bool extrude_skeleton(const PolygonWithHoles& pwh, // build a soup, to be converted to a mesh afterwards std::vector points; std::vector > faces; - points.reserve(2 * pwh.outer_boundary().size()); // just a reasonnable guess + points.reserve(2 * pwh.outer_boundary().size()); // just a reasonable guess faces.reserve(2 * pwh.outer_boundary().size() + 2*pwh.number_of_holes()); Extrusion_builder builder(gt); diff --git a/Straight_skeleton_extrusion_2/package_info/Straight_skeleton_extrusion_2/description.txt b/Straight_skeleton_extrusion_2/package_info/Straight_skeleton_extrusion_2/description.txt index 7b6e45eb158..28d57ee0da4 100644 --- a/Straight_skeleton_extrusion_2/package_info/Straight_skeleton_extrusion_2/description.txt +++ b/Straight_skeleton_extrusion_2/package_info/Straight_skeleton_extrusion_2/description.txt @@ -1 +1 @@ -Given a 2D stricly simple polygon, possibly with weights, and a set of angles associated to edges, construct the extruded polygon using a straight skeleton. +Given a 2D strictly simple polygon, possibly with weights, and a set of angles associated to edges, construct the extruded polygon using a straight skeleton. diff --git a/Straight_skeleton_extrusion_2/test/Straight_skeleton_extrusion_2/CMakeLists.txt b/Straight_skeleton_extrusion_2/test/Straight_skeleton_extrusion_2/CMakeLists.txt index bfc26d7ea20..1c26729e327 100644 --- a/Straight_skeleton_extrusion_2/test/Straight_skeleton_extrusion_2/CMakeLists.txt +++ b/Straight_skeleton_extrusion_2/test/Straight_skeleton_extrusion_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Straight_skeleton_extrusion_2_Tests) find_package(CGAL REQUIRED COMPONENTS Qt6 Core) diff --git a/Stream_lines_2/examples/Stream_lines_2/CMakeLists.txt b/Stream_lines_2/examples/Stream_lines_2/CMakeLists.txt index 68ee9c8a39d..fde8f8a4077 100644 --- a/Stream_lines_2/examples/Stream_lines_2/CMakeLists.txt +++ b/Stream_lines_2/examples/Stream_lines_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Stream_lines_2_Examples) find_package(CGAL REQUIRED) diff --git a/Stream_lines_2/test/Stream_lines_2/CMakeLists.txt b/Stream_lines_2/test/Stream_lines_2/CMakeLists.txt index bb49bb4d104..dd57b219200 100644 --- a/Stream_lines_2/test/Stream_lines_2/CMakeLists.txt +++ b/Stream_lines_2/test/Stream_lines_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Stream_lines_2_Tests) find_package(CGAL REQUIRED) diff --git a/Stream_support/benchmark/Stream_support/CMakeLists.txt b/Stream_support/benchmark/Stream_support/CMakeLists.txt index 8d03f6b673a..365ada0dc3e 100644 --- a/Stream_support/benchmark/Stream_support/CMakeLists.txt +++ b/Stream_support/benchmark/Stream_support/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Stream_support) # CGAL and its components diff --git a/Stream_support/doc/Stream_support/dependencies b/Stream_support/doc/Stream_support/dependencies index db5367a453b..bde3549c149 100644 --- a/Stream_support/doc/Stream_support/dependencies +++ b/Stream_support/doc/Stream_support/dependencies @@ -13,7 +13,6 @@ Point_set_3 Point_set_processing_3 STL_Extension Surface_mesh -Surface_mesher SMDS_3 Triangulation Triangulation_2 diff --git a/Stream_support/examples/Stream_support/CMakeLists.txt b/Stream_support/examples/Stream_support/CMakeLists.txt index fbcca427489..899b86e7d9b 100644 --- a/Stream_support/examples/Stream_support/CMakeLists.txt +++ b/Stream_support/examples/Stream_support/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Stream_support_Examples) find_package(CGAL REQUIRED) diff --git a/Stream_support/package_info/Stream_support/long_description.txt b/Stream_support/package_info/Stream_support/long_description.txt index bb88707737d..6cb10849c3c 100644 --- a/Stream_support/package_info/Stream_support/long_description.txt +++ b/Stream_support/package_info/Stream_support/long_description.txt @@ -12,7 +12,7 @@ Stream_support Package - CGAL/IO/Verbose_ostream.h The class CGAL_Verbose_ostream is useful for debugging and - diagnostic output, for example in inplementing the member + diagnostic output, for example in implementing the member function `bool is_valid( bool verbose = false, ...)' of complex data structures. diff --git a/Stream_support/test/Stream_support/CMakeLists.txt b/Stream_support/test/Stream_support/CMakeLists.txt index 15c115bd3fa..911f06a0bbf 100644 --- a/Stream_support/test/Stream_support/CMakeLists.txt +++ b/Stream_support/test/Stream_support/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Stream_support_Tests) find_package(CGAL REQUIRED) find_path( diff --git a/Subdivision_method_3/examples/Subdivision_method_3/CMakeLists.txt b/Subdivision_method_3/examples/Subdivision_method_3/CMakeLists.txt index f5967b3707f..f7e403c4e81 100644 --- a/Subdivision_method_3/examples/Subdivision_method_3/CMakeLists.txt +++ b/Subdivision_method_3/examples/Subdivision_method_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Subdivision_method_3_Examples) find_package(CGAL REQUIRED) diff --git a/Subdivision_method_3/test/Subdivision_method_3/CMakeLists.txt b/Subdivision_method_3/test/Subdivision_method_3/CMakeLists.txt index d21624dbd97..2e05ac1b014 100644 --- a/Subdivision_method_3/test/Subdivision_method_3/CMakeLists.txt +++ b/Subdivision_method_3/test/Subdivision_method_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Subdivision_method_3_Tests) find_package(CGAL REQUIRED) diff --git a/Surface_mesh/benchmark/CMakeLists.txt b/Surface_mesh/benchmark/CMakeLists.txt index 818e8cb6b9d..6faf4b6b6fe 100644 --- a/Surface_mesh/benchmark/CMakeLists.txt +++ b/Surface_mesh/benchmark/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_performance) find_package(CGAL REQUIRED) diff --git a/Surface_mesh/examples/Surface_mesh/CMakeLists.txt b/Surface_mesh/examples/Surface_mesh/CMakeLists.txt index 896c0d7b275..4ecd528f219 100644 --- a/Surface_mesh/examples/Surface_mesh/CMakeLists.txt +++ b/Surface_mesh/examples/Surface_mesh/CMakeLists.txt @@ -6,7 +6,7 @@ # Used in /CGAL/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt. # Careful when modifying -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_Examples) #CGAL_Qt6 is needed for the drawing. diff --git a/Surface_mesh/test/Surface_mesh/CMakeLists.txt b/Surface_mesh/test/Surface_mesh/CMakeLists.txt index ce006010e98..62d2cb3bca7 100644 --- a/Surface_mesh/test/Surface_mesh/CMakeLists.txt +++ b/Surface_mesh/test/Surface_mesh/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_Tests) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_approximation/benchmark/Surface_mesh_approximation/CMakeLists.txt b/Surface_mesh_approximation/benchmark/Surface_mesh_approximation/CMakeLists.txt index a4eea6abf69..469d78b87a5 100644 --- a/Surface_mesh_approximation/benchmark/Surface_mesh_approximation/CMakeLists.txt +++ b/Surface_mesh_approximation/benchmark/Surface_mesh_approximation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_approximation_Benchmarks) # CGAL and its components diff --git a/Surface_mesh_approximation/examples/Surface_mesh_approximation/CMakeLists.txt b/Surface_mesh_approximation/examples/Surface_mesh_approximation/CMakeLists.txt index e61a9141b62..35110d182d2 100644 --- a/Surface_mesh_approximation/examples/Surface_mesh_approximation/CMakeLists.txt +++ b/Surface_mesh_approximation/examples/Surface_mesh_approximation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_approximation_Examples) # CGAL and its components diff --git a/Surface_mesh_approximation/test/Surface_mesh_approximation/CMakeLists.txt b/Surface_mesh_approximation/test/Surface_mesh_approximation/CMakeLists.txt index 565c4480010..aefc4da29fa 100644 --- a/Surface_mesh_approximation/test/Surface_mesh_approximation/CMakeLists.txt +++ b/Surface_mesh_approximation/test/Surface_mesh_approximation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_approximation_Tests) # CGAL and its components diff --git a/Surface_mesh_deformation/benchmark/Surface_mesh_deformation/optimal_rotation/CMakeLists.txt b/Surface_mesh_deformation/benchmark/Surface_mesh_deformation/optimal_rotation/CMakeLists.txt index 15ec2c40838..e76761f9787 100644 --- a/Surface_mesh_deformation/benchmark/Surface_mesh_deformation/optimal_rotation/CMakeLists.txt +++ b/Surface_mesh_deformation/benchmark/Surface_mesh_deformation/optimal_rotation/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(benchmark_for_closest_rotation) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Surface_mesh_deformation/demo/Surface_mesh_deformation/CMakeLists.txt b/Surface_mesh_deformation/demo/Surface_mesh_deformation/CMakeLists.txt index 3f5e0bdb430..98b5dc3c61f 100644 --- a/Surface_mesh_deformation/demo/Surface_mesh_deformation/CMakeLists.txt +++ b/Surface_mesh_deformation/demo/Surface_mesh_deformation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_deformation_Demo) set_property(DIRECTORY PROPERTY CGAL_NO_TESTING TRUE) diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt b/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt index e61a3546eb2..ab336b9fb26 100644 --- a/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_deformation_Examples) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_deformation/test/Surface_mesh_deformation/CMakeLists.txt b/Surface_mesh_deformation/test/Surface_mesh_deformation/CMakeLists.txt index b903ca3bcf0..398dd703748 100644 --- a/Surface_mesh_deformation/test/Surface_mesh_deformation/CMakeLists.txt +++ b/Surface_mesh_deformation/test/Surface_mesh_deformation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_deformation_Tests) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt index 0ae9468f45c..9315c25e287 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling this folder. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_parameterization_Examples) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/ARAP_parameterizer_3.h b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/ARAP_parameterizer_3.h index 7ff51e70ce0..1b93e215342 100644 --- a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/ARAP_parameterizer_3.h +++ b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/ARAP_parameterizer_3.h @@ -458,7 +458,7 @@ private: const Faces_vector& faces, Cot_map ctmap) const { - // Since we loop faces, we are implicitely defining the weight of border halfedges as 0... + // Since we loop faces, we are implicitly defining the weight of border halfedges as 0... for(face_descriptor fd : faces) { halfedge_descriptor hd = halfedge(fd, mesh), hdb = hd; diff --git a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/MVC_post_processor_3.h b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/MVC_post_processor_3.h index d4efce8934d..a64dcf41c41 100644 --- a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/MVC_post_processor_3.h +++ b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/MVC_post_processor_3.h @@ -212,7 +212,7 @@ private: halfedge_descriptor bhd, const VertexUVMap uvmap) const { - // @fixme unefficient: use sweep line algorithms instead of brute force + // @fixme inefficient: use sweep line algorithms instead of brute force for(halfedge_descriptor hd_1 : halfedges_around_face(bhd, mesh)) { for(halfedge_descriptor hd_2 : halfedges_around_face(bhd, mesh)) { @@ -385,7 +385,7 @@ private: // The other parts of A(i,j) and A(i,k) will be added when this function // is called from the neighboring faces of F_ijk that share the vertex i - // @fixme unefficient: lengths are computed (and inversed!) twice per edge + // @fixme inefficient: lengths are computed (and inversed!) twice per edge // Set w_i_base: - tan(alpha / 2) // Match order of the input points to the new weight implementation. @@ -436,7 +436,7 @@ private: // if vh_i is fixed, there is nothing to do: A(i,i)=1 and A(i,j)=0 for j!=i if(get(vpmap, vd_i)) { - // @fixme unefficient: A(i,i) is written as many times as i has neighbors + // @fixme inefficient: A(i,i) is written as many times as i has neighbors A.set_coef(i, i, 1); return; } @@ -496,7 +496,7 @@ private: // if vh_i is fixed, there is nothing to do: A(i,i)=1 and A(i,j)=0 for j!=i if(get(vpmap, vd_i)) { - // @fixme unefficient A(i,i) is written as many times as i has neighbors + // @fixme inefficient A(i,i) is written as many times as i has neighbors A.set_coef(i, i, 1); return; } diff --git a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Orbifold_Tutte_parameterizer_3.h b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Orbifold_Tutte_parameterizer_3.h index 252f0864a1e..151165423f9 100644 --- a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Orbifold_Tutte_parameterizer_3.h +++ b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Orbifold_Tutte_parameterizer_3.h @@ -715,7 +715,7 @@ private: // The other parts of M(i,j) and M(i,k) will be added when this function // is called from the neighboring faces of F_ijk that share the vertex i - // @fixme unefficient: lengths are computed (and inversed!) twice per edge + // @fixme inefficient: lengths are computed (and inversed!) twice per edge // Set w_i_base: - tan(alpha / 2) const Point_3& p = pk; diff --git a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt index ab08e517ccd..00278df2f7a 100644 --- a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt +++ b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling this folder. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_parameterization_Tests) # Find CGAL diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/CMakeLists.txt b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/CMakeLists.txt index b319050e6a5..5ef633bb539 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/CMakeLists.txt +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script_with_options # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_segmentation_Examples) # CGAL and its components diff --git a/Surface_mesh_segmentation/test/Surface_mesh_segmentation/CMakeLists.txt b/Surface_mesh_segmentation/test/Surface_mesh_segmentation/CMakeLists.txt index e5c9981fa5e..9c2e4233b54 100644 --- a/Surface_mesh_segmentation/test/Surface_mesh_segmentation/CMakeLists.txt +++ b/Surface_mesh_segmentation/test/Surface_mesh_segmentation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_segmentation_Tests) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/CMakeLists.txt b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/CMakeLists.txt index 763fb37b61a..5238bd06c18 100644 --- a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/CMakeLists.txt +++ b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_shortest_path_Examples) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_shortest_path/test/Surface_mesh_shortest_path/CMakeLists.txt b/Surface_mesh_shortest_path/test/Surface_mesh_shortest_path/CMakeLists.txt index f3184c37609..ea1eb891aab 100644 --- a/Surface_mesh_shortest_path/test/Surface_mesh_shortest_path/CMakeLists.txt +++ b/Surface_mesh_shortest_path/test/Surface_mesh_shortest_path/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_shortest_path_Tests) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core) diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/edge_collapse.h b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/edge_collapse.h index bb0ed1c8ea6..5be0f4d1ef4 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/edge_collapse.h +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/CGAL/Surface_mesh_simplification/edge_collapse.h @@ -50,7 +50,7 @@ the number of edges effectively removed. \cgalParamNEnd \cgalParamNBegin{get_placement} - \cgalParamDescription{a policy which returns the placement (position of the replacemet vertex) for an edge} + \cgalParamDescription{a policy which returns the placement (position of the replacement vertex) for an edge} \cgalParamType{a model of the concept `GetPlacement`} \cgalParamDefault{`CGAL::Surface_mesh_simplification::LindstromTurk_placement`} \cgalParamNEnd diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt b/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt index 4b2c37925e1..60135e84d4d 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script_with_options # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_simplification_Examples) # CGAL and its components diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_filter.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_filter.h index 036d5bb9b44..a9e6f7e8d5b 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_filter.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_filter.h @@ -49,7 +49,7 @@ public: if(op) { // triangles returns the triangles of the star of the vertices of the edge to collapse - // First the two trianges incident to the edge, then the other triangles + // First the two triangles incident to the edge, then the other triangles // The second vertex of each triangle is the vertex that gets placed const typename Profile::Triangle_vector& triangles = profile.triangles(); if(triangles.size() > 2) diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_placement.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_placement.h index 1a1b9aafd12..a7b5521dbee 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_placement.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_placement.h @@ -47,7 +47,7 @@ public: if(op) { // triangles returns the triangles of the star of the vertices of the edge to collapse - // First the two trianges incident to the edge, then the other triangles + // First the two triangles incident to the edge, then the other triangles // The second vertex of each triangle is the vertex that gets placed const typename Profile::Triangle_vector& triangles = profile.triangles(); if(triangles.size() > 2) diff --git a/Surface_mesh_simplification/test/Surface_mesh_simplification/CMakeLists.txt b/Surface_mesh_simplification/test/Surface_mesh_simplification/CMakeLists.txt index 9c1e010e5ef..cd3cee59729 100644 --- a/Surface_mesh_simplification/test/Surface_mesh_simplification/CMakeLists.txt +++ b/Surface_mesh_simplification/test/Surface_mesh_simplification/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_simplification_Tests) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_simplification/test/Surface_mesh_simplification/test_self_intersection.h b/Surface_mesh_simplification/test/Surface_mesh_simplification/test_self_intersection.h index 483cdef89d7..aa31a56c8d4 100644 --- a/Surface_mesh_simplification/test/Surface_mesh_simplification/test_self_intersection.h +++ b/Surface_mesh_simplification/test/Surface_mesh_simplification/test_self_intersection.h @@ -53,7 +53,7 @@ struct Intersect_facets if(v != Halfedge_const_handle()) { // found shared vertex: assert(h->vertex() == v->vertex()); - // geomtric check if the opposite segments intersect the triangles + // geometric check if the opposite segments intersect the triangles Triangle t1(h->vertex()->point(), h->next()->vertex()->point(), h->next()->next()->vertex()->point()); diff --git a/Surface_mesh_skeletonization/benchmark/Surface_mesh_skeletonization/CMakeLists.txt b/Surface_mesh_skeletonization/benchmark/Surface_mesh_skeletonization/CMakeLists.txt index 280cc828112..21b285a0b97 100644 --- a/Surface_mesh_skeletonization/benchmark/Surface_mesh_skeletonization/CMakeLists.txt +++ b/Surface_mesh_skeletonization/benchmark/Surface_mesh_skeletonization/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script_with_options # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Mean_curvature_skeleton) # CGAL and its components diff --git a/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/CMakeLists.txt b/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/CMakeLists.txt index 798977cdd1b..674ac89feff 100644 --- a/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/CMakeLists.txt +++ b/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_skeletonization_Examples) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_skeletonization/test/Surface_mesh_skeletonization/CMakeLists.txt b/Surface_mesh_skeletonization/test/Surface_mesh_skeletonization/CMakeLists.txt index a44eb1af3eb..86bc2ec1328 100644 --- a/Surface_mesh_skeletonization/test/Surface_mesh_skeletonization/CMakeLists.txt +++ b/Surface_mesh_skeletonization/test/Surface_mesh_skeletonization/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_skeletonization_Tests) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_topology/benchmark/Surface_mesh_topology/CMakeLists.txt b/Surface_mesh_topology/benchmark/Surface_mesh_topology/CMakeLists.txt index 1eaee1642bc..595aee92c9d 100644 --- a/Surface_mesh_topology/benchmark/Surface_mesh_topology/CMakeLists.txt +++ b/Surface_mesh_topology/benchmark/Surface_mesh_topology/CMakeLists.txt @@ -1,6 +1,6 @@ project(Surface_mesh_topology_Benchmarks) -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) find_package(CGAL REQUIRED) diff --git a/Surface_mesh_topology/examples/Surface_mesh_topology/CMakeLists.txt b/Surface_mesh_topology/examples/Surface_mesh_topology/CMakeLists.txt index 479ee9fa367..c176292dfab 100644 --- a/Surface_mesh_topology/examples/Surface_mesh_topology/CMakeLists.txt +++ b/Surface_mesh_topology/examples/Surface_mesh_topology/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_topology_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h b/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h index 79ba01fedd0..16caafb4f27 100644 --- a/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h +++ b/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h @@ -62,7 +62,7 @@ protected: namespace draw_function_for_lcc { - // We need to re-use the namespace draw_function_for_lcc because we want to specialize + // We need to reuse the namespace draw_function_for_lcc because we want to specialize // the previous struct LCC_geom_utils // template // struct LCC_geom_utils; diff --git a/Surface_mesh_topology/test/Surface_mesh_topology/CMakeLists.txt b/Surface_mesh_topology/test/Surface_mesh_topology/CMakeLists.txt index 2b2a7d5a0e0..bd8dd2a9535 100644 --- a/Surface_mesh_topology/test/Surface_mesh_topology/CMakeLists.txt +++ b/Surface_mesh_topology/test/Surface_mesh_topology/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesh_topology_Tests) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Surface_mesh_topology/test/Surface_mesh_topology/fundamental_group_of_the_torus.cpp b/Surface_mesh_topology/test/Surface_mesh_topology/fundamental_group_of_the_torus.cpp index 1f445d7ebc0..799198f5c0c 100644 --- a/Surface_mesh_topology/test/Surface_mesh_topology/fundamental_group_of_the_torus.cpp +++ b/Surface_mesh_topology/test/Surface_mesh_topology/fundamental_group_of_the_torus.cpp @@ -4,7 +4,7 @@ FUNDAMENTAL GROUP OF THE TORUS We know that the fundamental group of the torus is the direct product ZxZ Hence we can choose a path on a circle by choosing an pair of integers -The test generats all groups of four integers (i, j, k, l) between -5 and 5 and the associated paths pij and pkl with two different basepoints +The test generates all groups of four integers (i, j, k, l) between -5 and 5 and the associated paths pij and pkl with two different basepoints Then it verify that -> pij is contractible iff i==0 and j==0 -> pkl is contractible iff k==0 and l==0 diff --git a/Surface_mesher/doc/Surface_mesher/CGAL/make_surface_mesh.h b/Surface_mesher/doc/Surface_mesher/CGAL/make_surface_mesh.h index 620f7b9184e..23805009c22 100644 --- a/Surface_mesher/doc/Surface_mesher/CGAL/make_surface_mesh.h +++ b/Surface_mesher/doc/Surface_mesher/CGAL/make_surface_mesh.h @@ -136,73 +136,3 @@ int initial_number_of_points = 20 ); } /* namespace CGAL */ -namespace CGAL { - -/*! -\ingroup PkgSurfaceMesher3TagClasses - -The class `Manifold_tag` is a tag class used to monitor the -surface meshing algorithm. When instantiated with the tag -`Manifold_tag` the function template -`make_surface_mesh()` -ensures that the output mesh is a manifold surface -without boundary. - -\sa `make_surface_mesh()` -\sa `Manifold_with_boundary_tag` -\sa `Non_manifold_tag` - -*/ - -struct Manifold_tag { - -}; /* end Manifold_tag */ -} /* end namespace CGAL */ - -namespace CGAL { - -/*! -\ingroup PkgSurfaceMesher3TagClasses - -The class `Manifold_with_boundary_tag` is a tag class used to monitor the -surface meshing algorithm. When instantiated with the tag -`Manifold_with_boundary_tag`, the function template -`make_surface_mesh()` -ensures that the output mesh is a manifold surface -but it may have boundaries. - -\sa `make_surface_mesh()` -\sa `Manifold_tag` -\sa `Non_manifold_tag` - -*/ - -struct Manifold_with_boundary_tag { - -}; /* end Manifold_with_boundary_tag */ -} /* end namespace CGAL */ - -namespace CGAL { - -/*! -\ingroup PkgSurfaceMesher3TagClasses - -The class `Non_manifold_tag` is a tag class used to monitor the -surface meshing algorithm. When instantiated with the tag -`Non_manifold_tag` the function template -`make_surface_mesh()` -does not ensure that the output mesh is a manifold surface. -The manifold property of output mesh -may nevertheless result from the choice of -appropriate meshing criteria. - -\sa `make_surface_mesh()` -\sa `Manifold_tag` -\sa `Manifold_with_boundary_tag` - -*/ - -struct Non_manifold_tag { - -}; /* end Non_manifold_tag */ -} /* end namespace CGAL */ diff --git a/Surface_mesher/doc/Surface_mesher/PackageDescription.txt b/Surface_mesher/doc/Surface_mesher/PackageDescription.txt index bf46b3a6eba..39b9d967d97 100644 --- a/Surface_mesher/doc/Surface_mesher/PackageDescription.txt +++ b/Surface_mesher/doc/Surface_mesher/PackageDescription.txt @@ -7,10 +7,6 @@ /// \defgroup PkgSurfaceMesher3Classes Mesh and Domain Classes /// \ingroup PkgSurfaceMesher3Ref -/// \defgroup PkgSurfaceMesher3TagClasses Tag Classes -/// \ingroup PkgSurfaceMesher3Ref - - /// \defgroup PkgSurfaceMesher3Functions Functions /// \ingroup PkgSurfaceMesher3Ref @@ -41,6 +37,9 @@ \cgalPkgShortInfoEnd \cgalPkgDescriptionEnd +\deprecated This package is deprecated since the version 6.0 of \cgal. The package \ref PkgMesh3 should be used instead. + + The surface mesh generation package offers a function template which builds a triangular mesh approximating a surface. diff --git a/Surface_mesher/doc/Surface_mesher/Surface_mesher.txt b/Surface_mesher/doc/Surface_mesher/Surface_mesher.txt index 5414f94f131..658dc7bae53 100644 --- a/Surface_mesher/doc/Surface_mesher/Surface_mesher.txt +++ b/Surface_mesher/doc/Surface_mesher/Surface_mesher.txt @@ -11,6 +11,8 @@ namespace CGAL { \image html segmented_head.png \image latex segmented_head.png +\deprecated This package is deprecated since the version 6.0 of \cgal. The package \ref PkgMesh3 should be used instead. + \section SurfaceMesher_section_intro Introduction This package provides a function template diff --git a/Surface_mesher/doc/Surface_mesher/dependencies b/Surface_mesher/doc/Surface_mesher/dependencies index c0330a78330..1cbc65e3661 100644 --- a/Surface_mesher/doc/Surface_mesher/dependencies +++ b/Surface_mesher/doc/Surface_mesher/dependencies @@ -1,9 +1,11 @@ -Manual -Kernel_23 -STL_Extension + Algebraic_foundations Circulator +Kernel_23 +Manual +Mesh_3 +Polyhedron +STL_Extension Stream_support Triangulation_2 Triangulation_3 -Polyhedron diff --git a/Surface_mesher/doc/Surface_mesher/fig/segmented_head-small.png b/Surface_mesher/doc/Surface_mesher/fig/segmented_head-small.png index e42950336e0..038424ea393 100644 Binary files a/Surface_mesher/doc/Surface_mesher/fig/segmented_head-small.png and b/Surface_mesher/doc/Surface_mesher/fig/segmented_head-small.png differ diff --git a/Surface_mesher/examples/Surface_mesher/CMakeLists.txt b/Surface_mesher/examples/Surface_mesher/CMakeLists.txt index f167c9a13da..4613fe7dc45 100644 --- a/Surface_mesher/examples/Surface_mesher/CMakeLists.txt +++ b/Surface_mesher/examples/Surface_mesher/CMakeLists.txt @@ -1,6 +1,6 @@ # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesher_Examples) find_package(CGAL REQUIRED COMPONENTS ImageIO) diff --git a/Surface_mesher/examples/Surface_mesher/mesh_a_3d_gray_image.cpp b/Surface_mesher/examples/Surface_mesher/mesh_a_3d_gray_image.cpp index 00508fc121b..600177e088a 100644 --- a/Surface_mesher/examples/Surface_mesher/mesh_a_3d_gray_image.cpp +++ b/Surface_mesher/examples/Surface_mesher/mesh_a_3d_gray_image.cpp @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/Surface_mesher/examples/Surface_mesher/mesh_an_implicit_function.cpp b/Surface_mesher/examples/Surface_mesher/mesh_an_implicit_function.cpp index c62844c85d5..0d2860938aa 100644 --- a/Surface_mesher/examples/Surface_mesher/mesh_an_implicit_function.cpp +++ b/Surface_mesher/examples/Surface_mesher/mesh_an_implicit_function.cpp @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/Surface_mesher/include/CGAL/AABB_polyhedral_oracle.h b/Surface_mesher/include/CGAL/AABB_polyhedral_oracle.h index 0f05ae1f18e..251dabe040b 100644 --- a/Surface_mesher/include/CGAL/AABB_polyhedral_oracle.h +++ b/Surface_mesher/include/CGAL/AABB_polyhedral_oracle.h @@ -16,6 +16,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include #include diff --git a/Surface_mesher/include/CGAL/Complex_2_in_triangulation_3.h b/Surface_mesher/include/CGAL/Complex_2_in_triangulation_3.h index 79122ed5f60..9c17823f873 100644 --- a/Surface_mesher/include/CGAL/Complex_2_in_triangulation_3.h +++ b/Surface_mesher/include/CGAL/Complex_2_in_triangulation_3.h @@ -15,6 +15,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include // TODO: add the iterators diff --git a/Surface_mesher/include/CGAL/Complex_2_in_triangulation_cell_base_3.h b/Surface_mesher/include/CGAL/Complex_2_in_triangulation_cell_base_3.h index af757f8365e..83a97cf4f5b 100644 --- a/Surface_mesher/include/CGAL/Complex_2_in_triangulation_cell_base_3.h +++ b/Surface_mesher/include/CGAL/Complex_2_in_triangulation_cell_base_3.h @@ -17,6 +17,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Complex_2_in_triangulation_vertex_base_3.h b/Surface_mesher/include/CGAL/Complex_2_in_triangulation_vertex_base_3.h index 23140ed6efb..0d7e84604b9 100644 --- a/Surface_mesher/include/CGAL/Complex_2_in_triangulation_vertex_base_3.h +++ b/Surface_mesher/include/CGAL/Complex_2_in_triangulation_vertex_base_3.h @@ -18,7 +18,10 @@ #include - +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Gray_level_image_3.h b/Surface_mesher/include/CGAL/Gray_level_image_3.h index 64c00a06f3f..9edd091f0eb 100644 --- a/Surface_mesher/include/CGAL/Gray_level_image_3.h +++ b/Surface_mesher/include/CGAL/Gray_level_image_3.h @@ -14,6 +14,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_file_writer.h b/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_file_writer.h index 46e95566031..fe79571ff2f 100644 --- a/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_file_writer.h +++ b/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_file_writer.h @@ -15,6 +15,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #define CGAL_C2T3_USE_FILE_WRITER_OFF diff --git a/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_polyhedron_builder.h b/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_polyhedron_builder.h index 865fdfb5657..5d804bd8caf 100644 --- a/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_polyhedron_builder.h +++ b/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_polyhedron_builder.h @@ -16,6 +16,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_to_medit.h b/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_to_medit.h index f84385c8555..f3905c0aed5 100644 --- a/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_to_medit.h +++ b/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_to_medit.h @@ -15,6 +15,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_to_vtk.h b/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_to_vtk.h index 2a76461b98a..6ae55d5a9c2 100644 --- a/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_to_vtk.h +++ b/Surface_mesher/include/CGAL/IO/Complex_2_in_triangulation_3_to_vtk.h @@ -15,6 +15,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/IO/facets_in_complex_2_to_triangle_mesh.h b/Surface_mesher/include/CGAL/IO/facets_in_complex_2_to_triangle_mesh.h index 80a3afaefe5..72d1813359d 100644 --- a/Surface_mesher/include/CGAL/IO/facets_in_complex_2_to_triangle_mesh.h +++ b/Surface_mesher/include/CGAL/IO/facets_in_complex_2_to_triangle_mesh.h @@ -15,6 +15,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/IO/output_surface_facets_to_polyhedron.h b/Surface_mesher/include/CGAL/IO/output_surface_facets_to_polyhedron.h index 08935e04503..2bf6e11f9c3 100644 --- a/Surface_mesher/include/CGAL/IO/output_surface_facets_to_polyhedron.h +++ b/Surface_mesher/include/CGAL/IO/output_surface_facets_to_polyhedron.h @@ -14,6 +14,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Implicit_surface_3.h b/Surface_mesher/include/CGAL/Implicit_surface_3.h index 23fa443abdc..34976c4660e 100644 --- a/Surface_mesher/include/CGAL/Implicit_surface_3.h +++ b/Surface_mesher/include/CGAL/Implicit_surface_3.h @@ -14,6 +14,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Multi_surface_3.h b/Surface_mesher/include/CGAL/Multi_surface_3.h index 134e9627711..2f4a27ef75d 100644 --- a/Surface_mesher/include/CGAL/Multi_surface_3.h +++ b/Surface_mesher/include/CGAL/Multi_surface_3.h @@ -14,6 +14,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include namespace CGAL { diff --git a/Surface_mesher/include/CGAL/Point_traits.h b/Surface_mesher/include/CGAL/Point_traits.h index 948482f0219..cab4a1f9a17 100644 --- a/Surface_mesher/include/CGAL/Point_traits.h +++ b/Surface_mesher/include/CGAL/Point_traits.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include #include diff --git a/Surface_mesher/include/CGAL/Point_with_psc_localisation.h b/Surface_mesher/include/CGAL/Point_with_psc_localisation.h index 24122b515cc..6eefcbc8256 100644 --- a/Surface_mesher/include/CGAL/Point_with_psc_localisation.h +++ b/Surface_mesher/include/CGAL/Point_with_psc_localisation.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Point_with_surface_index.h b/Surface_mesher/include/CGAL/Point_with_surface_index.h index a4adc974429..c14ba410f4b 100644 --- a/Surface_mesher/include/CGAL/Point_with_surface_index.h +++ b/Surface_mesher/include/CGAL/Point_with_surface_index.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Point_with_surface_index_geom_traits.h b/Surface_mesher/include/CGAL/Point_with_surface_index_geom_traits.h index bf65a959d6b..96af36419c3 100644 --- a/Surface_mesher/include/CGAL/Point_with_surface_index_geom_traits.h +++ b/Surface_mesher/include/CGAL/Point_with_surface_index_geom_traits.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Robust_circumcenter_traits_3.h b/Surface_mesher/include/CGAL/Robust_circumcenter_traits_3.h index 37b5107fd8d..448c267a9a6 100644 --- a/Surface_mesher/include/CGAL/Robust_circumcenter_traits_3.h +++ b/Surface_mesher/include/CGAL/Robust_circumcenter_traits_3.h @@ -20,6 +20,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesh_cell_base_3.h b/Surface_mesher/include/CGAL/Surface_mesh_cell_base_3.h index 8d813f47469..a83722a3c3c 100644 --- a/Surface_mesher/include/CGAL/Surface_mesh_cell_base_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesh_cell_base_3.h @@ -14,6 +14,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesh_complex_2_in_triangulation_3.h b/Surface_mesher/include/CGAL/Surface_mesh_complex_2_in_triangulation_3.h index fefeb5580dc..974d5f3d1f1 100644 --- a/Surface_mesher/include/CGAL/Surface_mesh_complex_2_in_triangulation_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesh_complex_2_in_triangulation_3.h @@ -15,6 +15,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesh_default_criteria_3.h b/Surface_mesher/include/CGAL/Surface_mesh_default_criteria_3.h index 1fde430d98d..677a97cbea6 100644 --- a/Surface_mesher/include/CGAL/Surface_mesh_default_criteria_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesh_default_criteria_3.h @@ -14,6 +14,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesh_default_edges_criteria_3.h b/Surface_mesher/include/CGAL/Surface_mesh_default_edges_criteria_3.h index c07930d8bae..32fa61734ce 100644 --- a/Surface_mesher/include/CGAL/Surface_mesh_default_edges_criteria_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesh_default_edges_criteria_3.h @@ -14,6 +14,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesh_default_triangulation_3.h b/Surface_mesher/include/CGAL/Surface_mesh_default_triangulation_3.h index 2474efe3e1f..9589b2b52bd 100644 --- a/Surface_mesher/include/CGAL/Surface_mesh_default_triangulation_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesh_default_triangulation_3.h @@ -15,6 +15,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include // traits class diff --git a/Surface_mesher/include/CGAL/Surface_mesh_traits_generator_3.h b/Surface_mesher/include/CGAL/Surface_mesh_traits_generator_3.h index 28b57b62dfa..08569ec23e3 100644 --- a/Surface_mesher/include/CGAL/Surface_mesh_traits_generator_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesh_traits_generator_3.h @@ -14,6 +14,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesh_triangulation_generator_3.h b/Surface_mesher/include/CGAL/Surface_mesh_triangulation_generator_3.h index f3df76a67d8..575557d5e27 100644 --- a/Surface_mesher/include/CGAL/Surface_mesh_triangulation_generator_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesh_triangulation_generator_3.h @@ -14,6 +14,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesh_vertex_base_3.h b/Surface_mesher/include/CGAL/Surface_mesh_vertex_base_3.h index 479fcd944b3..73520f1fc93 100644 --- a/Surface_mesher/include/CGAL/Surface_mesh_vertex_base_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesh_vertex_base_3.h @@ -14,6 +14,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Combining_oracle.h b/Surface_mesher/include/CGAL/Surface_mesher/Combining_oracle.h index 2541ef6ff30..e5addd68f56 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Combining_oracle.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Combining_oracle.h @@ -16,6 +16,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Has_edges.h b/Surface_mesher/include/CGAL/Surface_mesher/Has_edges.h index cb8b8e08b28..4abebce71ab 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Has_edges.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Has_edges.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include namespace CGAL { namespace Surface_mesher { diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Implicit_surface_oracle_3.h b/Surface_mesher/include/CGAL/Surface_mesher/Implicit_surface_oracle_3.h index 27362bda2f8..1b1663c4091 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Implicit_surface_oracle_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Implicit_surface_oracle_3.h @@ -16,6 +16,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include @@ -331,7 +336,7 @@ namespace CGAL { #ifdef CGAL_SURFACE_MESHER_DEBUG_CLIPPED_SEGMENT std::cerr << "=" << debug_point(surface, mid) << "\n"; #endif - // the following function conditionnally call + // the following function conditionally call // mid.set_on_surface(...) if mid has such a function. set_on_surface(mid, surface_identifiers_generator(value_at_p1, diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Intersection_data_structure_3.h b/Surface_mesher/include/CGAL/Surface_mesher/Intersection_data_structure_3.h index 453d4db1212..8e9b42811d4 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Intersection_data_structure_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Intersection_data_structure_3.h @@ -14,6 +14,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Null_oracle_visitor.h b/Surface_mesher/include/CGAL/Surface_mesher/Null_oracle_visitor.h index 1e633a3566e..44897235895 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Null_oracle_visitor.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Null_oracle_visitor.h @@ -16,6 +16,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include namespace CGAL { diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Point_surface_indices_oracle_visitor.h b/Surface_mesher/include/CGAL/Surface_mesher/Point_surface_indices_oracle_visitor.h index ef9526468c1..d5512a662c1 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Point_surface_indices_oracle_visitor.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Point_surface_indices_oracle_visitor.h @@ -16,6 +16,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include namespace CGAL { diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Polyhedral_oracle.h b/Surface_mesher/include/CGAL/Surface_mesher/Polyhedral_oracle.h index 9d2ac2cd6b3..3863c8ebbb0 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Polyhedral_oracle.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Polyhedral_oracle.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Profile_counter.h b/Surface_mesher/include/CGAL/Surface_mesher/Profile_counter.h index 12a0c01cc94..43dbeb4c8bc 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Profile_counter.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Profile_counter.h @@ -18,6 +18,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Profile_timer.h b/Surface_mesher/include/CGAL/Surface_mesher/Profile_timer.h index 5588637af54..cd8bd792fdf 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Profile_timer.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Profile_timer.h @@ -18,6 +18,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #ifdef CGAL_SURFACE_MESHER_PROFILE diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Sphere_oracle_3.h b/Surface_mesher/include/CGAL/Surface_mesher/Sphere_oracle_3.h index 55d4e1dc104..2e8cf47f695 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Sphere_oracle_3.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Sphere_oracle_3.h @@ -15,6 +15,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Standard_criteria.h b/Surface_mesher/include/CGAL/Surface_mesher/Standard_criteria.h index 01408e568c8..e05d358bc5a 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Standard_criteria.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Standard_criteria.h @@ -16,6 +16,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher.h b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher.h index e2b9cd4720a..ce0e4de049a 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher.h @@ -22,6 +22,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_edges_level.h b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_edges_level.h index 6466a188db9..64b80f4d793 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_edges_level.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_edges_level.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_edges_level_visitor.h b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_edges_level_visitor.h index 049b35f9c66..c69a904283f 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_edges_level_visitor.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_edges_level_visitor.h @@ -16,6 +16,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_manifold.h b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_manifold.h index 71b6cb08cbd..37c8d63bf12 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_manifold.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_manifold.h @@ -16,6 +16,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_regular_edges.h b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_regular_edges.h index 25095602a93..074861ea222 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_regular_edges.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_regular_edges.h @@ -15,6 +15,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_visitor.h b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_visitor.h index 9eaa3b197d7..af3f9ea198d 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_visitor.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Surface_mesher_visitor.h @@ -16,6 +16,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Types_generators.h b/Surface_mesher/include/CGAL/Surface_mesher/Types_generators.h index 9bef978a28d..da46a9858f0 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Types_generators.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Types_generators.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Verbose_flag.h b/Surface_mesher/include/CGAL/Surface_mesher/Verbose_flag.h index fefabbf888a..fae4d957850 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Verbose_flag.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Verbose_flag.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include namespace CGAL { namespace Surface_mesher { diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Vertices_on_the_same_psc_element_criterion.h b/Surface_mesher/include/CGAL/Surface_mesher/Vertices_on_the_same_psc_element_criterion.h index a349354287d..14bb5893d6e 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Vertices_on_the_same_psc_element_criterion.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Vertices_on_the_same_psc_element_criterion.h @@ -16,6 +16,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher/Vertices_on_the_same_surface_criterion.h b/Surface_mesher/include/CGAL/Surface_mesher/Vertices_on_the_same_surface_criterion.h index 9cba024536c..a8e8567adbc 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher/Vertices_on_the_same_surface_criterion.h +++ b/Surface_mesher/include/CGAL/Surface_mesher/Vertices_on_the_same_surface_criterion.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include diff --git a/Surface_mesher/include/CGAL/Surface_mesher_generator.h b/Surface_mesher/include/CGAL/Surface_mesher_generator.h index 45bdb7f28b6..42000144288 100644 --- a/Surface_mesher/include/CGAL/Surface_mesher_generator.h +++ b/Surface_mesher/include/CGAL/Surface_mesher_generator.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #include #include @@ -31,10 +35,6 @@ namespace CGAL { - struct Non_manifold_tag {}; - struct Manifold_tag {}; - struct Manifold_with_boundary_tag {}; - // struct Dynamic_manifold_tag { // enum Tag { Manifold = 0, Non_manifold = 1, Manifold_with_boundary = 2 }; // }; diff --git a/Surface_mesher/include/CGAL/make_piecewise_smooth_surface_mesh.h b/Surface_mesher/include/CGAL/make_piecewise_smooth_surface_mesh.h index ee7f4c54f0b..f95e4234cca 100644 --- a/Surface_mesher/include/CGAL/make_piecewise_smooth_surface_mesh.h +++ b/Surface_mesher/include/CGAL/make_piecewise_smooth_surface_mesh.h @@ -14,6 +14,11 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include + #include #endif //CGAL_MAKE_PIECEWISE_SMOOTH_SURFACE_MESH_H diff --git a/Surface_mesher/include/CGAL/make_surface_mesh.h b/Surface_mesher/include/CGAL/make_surface_mesh.h index 63929cc6f2f..ba69f1d6942 100644 --- a/Surface_mesher/include/CGAL/make_surface_mesh.h +++ b/Surface_mesher/include/CGAL/make_surface_mesh.h @@ -14,7 +14,12 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include +#include #include #include diff --git a/Surface_mesher/include/CGAL/vtkSurfaceMesherContourFilter.h b/Surface_mesher/include/CGAL/vtkSurfaceMesherContourFilter.h index 76f3a81590d..59ea94847f2 100644 --- a/Surface_mesher/include/CGAL/vtkSurfaceMesherContourFilter.h +++ b/Surface_mesher/include/CGAL/vtkSurfaceMesherContourFilter.h @@ -15,6 +15,10 @@ #include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_DEPRECATED_MESSAGE_DETAILS \ + "The 3D Mesh Generation package (see https://doc.cgal.org/latest/Mesh_3/) should be used instead." +#include #ifdef CGAL_USE_VTK diff --git a/Surface_mesher/test/Surface_mesher/CMakeLists.txt b/Surface_mesher/test/Surface_mesher/CMakeLists.txt index 18ef4575958..751de47ec99 100644 --- a/Surface_mesher/test/Surface_mesher/CMakeLists.txt +++ b/Surface_mesher/test/Surface_mesher/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_mesher_Tests) find_package(CGAL REQUIRED) diff --git a/Surface_mesher/test/Surface_mesher/combined_spheres.cpp b/Surface_mesher/test/Surface_mesher/combined_spheres.cpp index 631ed4d355a..26500a87635 100644 --- a/Surface_mesher/test/Surface_mesher/combined_spheres.cpp +++ b/Surface_mesher/test/Surface_mesher/combined_spheres.cpp @@ -1,3 +1,5 @@ +#include + #include #include diff --git a/Surface_mesher/test/Surface_mesher/implicit_surface_mesher_test.cpp b/Surface_mesher/test/Surface_mesher/implicit_surface_mesher_test.cpp index 374c5b6941c..19eb6e57e00 100644 --- a/Surface_mesher/test/Surface_mesher/implicit_surface_mesher_test.cpp +++ b/Surface_mesher/test/Surface_mesher/implicit_surface_mesher_test.cpp @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/Surface_mesher/test/Surface_mesher/test_c2t3_iterators.cpp b/Surface_mesher/test/Surface_mesher/test_c2t3_iterators.cpp index 2a6dbdb633c..531ae9b8e31 100644 --- a/Surface_mesher/test/Surface_mesher/test_c2t3_iterators.cpp +++ b/Surface_mesher/test/Surface_mesher/test_c2t3_iterators.cpp @@ -1,3 +1,5 @@ +#include + #include // c2t3 diff --git a/Surface_mesher/test/Surface_mesher/test_robust_circumcenter.cpp b/Surface_mesher/test/Surface_mesher/test_robust_circumcenter.cpp index 64950e89f51..7a5a1f83e1b 100644 --- a/Surface_mesher/test/Surface_mesher/test_robust_circumcenter.cpp +++ b/Surface_mesher/test/Surface_mesher/test_robust_circumcenter.cpp @@ -1,8 +1,4 @@ -// $URL$ -// $Id$ -// -// -// Author(s) : Mariette Yvinec +#include #include #include diff --git a/Surface_sweep_2/examples/Surface_sweep_2/CMakeLists.txt b/Surface_sweep_2/examples/Surface_sweep_2/CMakeLists.txt index 37472e6b921..9c8742904a3 100644 --- a/Surface_sweep_2/examples/Surface_sweep_2/CMakeLists.txt +++ b/Surface_sweep_2/examples/Surface_sweep_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_sweep_2_Examples) # CGAL and its components diff --git a/Surface_sweep_2/include/CGAL/Surface_sweep_2.h b/Surface_sweep_2/include/CGAL/Surface_sweep_2.h index 1c1d0df3a06..47b7353fd79 100644 --- a/Surface_sweep_2/include/CGAL/Surface_sweep_2.h +++ b/Surface_sweep_2/include/CGAL/Surface_sweep_2.h @@ -62,8 +62,8 @@ namespace Surface_sweep_2 { * are calculated. * End * - * Convensions through out the code: - * In order to make the code as readable as possible, some convensions were + * Conventions through out the code: + * In order to make the code as readable as possible, some conventions were * made in regards to variable naming: * * xp - is the intersection point between two curves diff --git a/Surface_sweep_2/include/CGAL/Surface_sweep_2/Event_comparer.h b/Surface_sweep_2/include/CGAL/Surface_sweep_2/Event_comparer.h index f956a0b2ee4..b23abba79c1 100644 --- a/Surface_sweep_2/include/CGAL/Surface_sweep_2/Event_comparer.h +++ b/Surface_sweep_2/include/CGAL/Surface_sweep_2/Event_comparer.h @@ -62,7 +62,7 @@ private: Arr_curve_end m_index; // boundary conditions. public: - /*! Cosntruct. */ + /*! Constructor. */ Event_comparer(const Gt2* traits) : m_traits(traits) {} //!\name Function call operators diff --git a/Surface_sweep_2/include/CGAL/Surface_sweep_2/Surface_sweep_2_impl.h b/Surface_sweep_2/include/CGAL/Surface_sweep_2/Surface_sweep_2_impl.h index 657ea92e9aa..fe1060f71eb 100644 --- a/Surface_sweep_2/include/CGAL/Surface_sweep_2/Surface_sweep_2_impl.h +++ b/Surface_sweep_2/include/CGAL/Surface_sweep_2/Surface_sweep_2_impl.h @@ -488,7 +488,7 @@ void Surface_sweep_2::_remove_curve_from_status_line(Subcurve* leftCurve, return; } - // the subcurve will be removed for good from the stauts line, we need + // the subcurve will be removed for good from the status line, we need // to check for intersection between his two neighbors (below and above him) // but we need to make sure that its not the first or last subcurve // at the status line. @@ -827,13 +827,13 @@ void Surface_sweep_2::_create_intersection_point(const Point_2& xp, } else { if ((multiplicity % 2) == 1) { - // The mutiplicity of the intersection point is odd: Swap their + // The multiplicity of the intersection point is odd: Swap their // order to the right of this point. std::swap(c1,c2); e->add_curve_pair_to_right(c1, c2); } else { - // The mutiplicity of the intersection point is even, so they + // The multiplicity of the intersection point is even, so they // maintain their order to the right of this point. CGAL_assertion((multiplicity % 2) == 0); e->add_curve_pair_to_right(c1, c2); diff --git a/Surface_sweep_2/test/Surface_sweep_2/CMakeLists.txt b/Surface_sweep_2/test/Surface_sweep_2/CMakeLists.txt index a6de52b8c0d..ae1336034cb 100644 --- a/Surface_sweep_2/test/Surface_sweep_2/CMakeLists.txt +++ b/Surface_sweep_2/test/Surface_sweep_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Surface_sweep_2_Tests) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/TDS_2/include/CGAL/Triangulation_data_structure_2.h b/TDS_2/include/CGAL/Triangulation_data_structure_2.h index f7c386b9d3f..7eb651ef407 100644 --- a/TDS_2/include/CGAL/Triangulation_data_structure_2.h +++ b/TDS_2/include/CGAL/Triangulation_data_structure_2.h @@ -1351,7 +1351,7 @@ void Triangulation_data_structure_2:: make_hole(Vertex_handle v, List_edges& hole) // delete the faces incident to v and v - // and return the dscription of the hole in hole + // and return the description of the hole in hole { CGAL_precondition(dimension() == 2); std::list to_delete; @@ -1604,7 +1604,7 @@ split_vertex(Vertex_handle v, Face_handle f1, Face_handle g1) Vertex_handle v3 = f1->vertex( ccw(i1) ); Vertex_handle v4 = g1->vertex( ccw(j1) ); - // lst is the list of faces adjecent to v stored in + // lst is the list of faces adjacent to v stored in // counterclockwise order from g2 to f1) inclusive. // the list idx contains the indices of v in the // faces in lst. @@ -2244,7 +2244,7 @@ Triangulation_data_structure_2:: vrml_output( std::ostream& os, Vertex_handle v, bool skip_infinite) const { // output to a vrml file style - // Point are assumed to be 3d points with a stream oprator << + // Point are assumed to be 3d points with a stream operator << // if non nullptr, v is the vertex to be output first // if skip_inf is true, the point in the first vertex is not output // and the faces incident to v are not output diff --git a/TDS_2/include/CGAL/Triangulation_ds_vertex_2.h b/TDS_2/include/CGAL/Triangulation_ds_vertex_2.h index e9e2597a2dd..6bc98d43cb3 100644 --- a/TDS_2/include/CGAL/Triangulation_ds_vertex_2.h +++ b/TDS_2/include/CGAL/Triangulation_ds_vertex_2.h @@ -42,7 +42,7 @@ public: //ACCESS size_type degree(); //should be const - //Deprecated access to circulators - for bacward compatibility + //Deprecated access to circulators - for backward compatibility // the following should be const // when Face_circulator, Vertex_circulator and Edge_circulator // are created from diff --git a/TDS_2/test/TDS_2/CMakeLists.txt b/TDS_2/test/TDS_2/CMakeLists.txt index 8ed8e1ee700..283d2478e12 100644 --- a/TDS_2/test/TDS_2/CMakeLists.txt +++ b/TDS_2/test/TDS_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(TDS_2_Tests) find_package(CGAL REQUIRED) diff --git a/TDS_3/examples/TDS_3/CMakeLists.txt b/TDS_3/examples/TDS_3/CMakeLists.txt index a9a7872288a..c0ba49a3d79 100644 --- a/TDS_3/examples/TDS_3/CMakeLists.txt +++ b/TDS_3/examples/TDS_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(TDS_3_Examples) find_package(CGAL REQUIRED) diff --git a/TDS_3/include/CGAL/Triangulation_utils_3.h b/TDS_3/include/CGAL/Triangulation_utils_3.h index 80c8c507977..58299cf071a 100644 --- a/TDS_3/include/CGAL/Triangulation_utils_3.h +++ b/TDS_3/include/CGAL/Triangulation_utils_3.h @@ -55,7 +55,7 @@ template < class T > const int Triangulation_utils_base_3::cw_map[3] = {2, 0, 1}; // We derive from Triangulation_cw_ccw_2 because we still use cw() and ccw() -// in the 2D part of the code. Ideally, this should go away when we re-use +// in the 2D part of the code. Ideally, this should go away when we reuse // T2D entirely. struct Triangulation_utils_3 diff --git a/TDS_3/test/TDS_3/CMakeLists.txt b/TDS_3/test/TDS_3/CMakeLists.txt index a80cd824ea3..887a97215fb 100644 --- a/TDS_3/test/TDS_3/CMakeLists.txt +++ b/TDS_3/test/TDS_3/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(TDS_3_Tests) find_package(CGAL REQUIRED) diff --git a/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Tetrahedral_remeshing.txt b/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Tetrahedral_remeshing.txt index 4835279b293..e8d94344cfc 100644 --- a/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Tetrahedral_remeshing.txt +++ b/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Tetrahedral_remeshing.txt @@ -74,7 +74,7 @@ Tetrahedral mesh, modified by our tetrahedral remeshing method. dihedral angles in the interval [0.1; 179.8], 33,936 vertices. (Middle) After remeshing with uniform sizing field, - targetting the average edge length of input (left) mesh; + targeting the average edge length of input (left) mesh; dihedral angles in the interval [9.8; 165.5], 301,127 vertices. (Right) After remeshing with adaptive sizing field; diff --git a/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/CMakeLists.txt b/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/CMakeLists.txt index 7dad8864ac8..4a1e6db6cc7 100644 --- a/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/CMakeLists.txt +++ b/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Tetrahedral_remeshing_Examples) diff --git a/Tetrahedral_remeshing/test/Tetrahedral_remeshing/CMakeLists.txt b/Tetrahedral_remeshing/test/Tetrahedral_remeshing/CMakeLists.txt index 57c066b8aec..37afbe1c7a5 100644 --- a/Tetrahedral_remeshing/test/Tetrahedral_remeshing/CMakeLists.txt +++ b/Tetrahedral_remeshing/test/Tetrahedral_remeshing/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Tetrahedral_remeshing_Tests) diff --git a/Three/doc/Three/Three.txt b/Three/doc/Three/Three.txt index ba0cc0946aa..996cf95d13d 100644 --- a/Three/doc/Three/Three.txt +++ b/Three/doc/Three/Three.txt @@ -328,7 +328,7 @@ Configure CMake as you desire and fetch the right Qt6 packages : set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc automatically when needed. set(CMAKE_AUTOMOC ON) - cmake_minimum_required(VERSION 3.1...3.23) + cmake_minimum_required(VERSION 3.12...3.29) #Find CGAL find_package(CGAL COMPONENTS Qt6) @@ -366,7 +366,7 @@ Notice that an external plugin will not be automatically loaded in the Lab. It m set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc automatically when needed. set(CMAKE_AUTOMOC ON) - cmake_minimum_required(VERSION 3.1...3.23) + cmake_minimum_required(VERSION 3.12...3.29) #Find CGAL find_package(CGAL COMPONENTS Qt6) diff --git a/Three/include/CGAL/Three/Scene_group_item.h b/Three/include/CGAL/Three/Scene_group_item.h index 558c21e5301..52b2bcc53ff 100644 --- a/Three/include/CGAL/Three/Scene_group_item.h +++ b/Three/include/CGAL/Three/Scene_group_item.h @@ -109,21 +109,21 @@ public : //! //! Calls `Scene_item::draw()`, then calls `Scene_item::drawEdges()` //! and `Scene_item::drawPoints` for each child if its current - //! rendering mode is adequat. + //! rendering mode is adequate. //! @see #RenderingMode virtual void draw(CGAL::Three::Viewer_interface*) const override; //!\brief draws all the children //! //! Calls `Scene_item::drawEdges()`, then calls `Scene_item::draw()` //! and `Scene_item::drawPoints` for each child if its current - //! rendering mode is adequat. + //! rendering mode is adequate. //! @see #RenderingMode virtual void drawEdges(CGAL::Three::Viewer_interface*) const override; //!\brief draws all the children //! //! Calls `Scene_item::drawPoints()`, then calls `Scene_item::draw()` //! and `Scene_item::drawEdges()` for each child if its current - //! rendering mode is adequat. + //! rendering mode is adequate. //! @see #RenderingMode virtual void drawPoints(CGAL::Three::Viewer_interface*) const override; //! diff --git a/Triangulation/applications/Triangulation/CMakeLists.txt b/Triangulation/applications/Triangulation/CMakeLists.txt index 8ec8183570c..034a38fa697 100644 --- a/Triangulation/applications/Triangulation/CMakeLists.txt +++ b/Triangulation/applications/Triangulation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script_with_options # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_apps) # CGAL and its components diff --git a/Triangulation/benchmark/Triangulation/CMakeLists.txt b/Triangulation/benchmark/Triangulation/CMakeLists.txt index ab384682f8e..9737bcc99c6 100644 --- a/Triangulation/benchmark/Triangulation/CMakeLists.txt +++ b/Triangulation/benchmark/Triangulation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_benchmark) find_package(CGAL REQUIRED COMPONENTS Core) diff --git a/Triangulation/examples/Triangulation/CMakeLists.txt b/Triangulation/examples/Triangulation/CMakeLists.txt index 3ad27172e58..bf1fcf87fb3 100644 --- a/Triangulation/examples/Triangulation/CMakeLists.txt +++ b/Triangulation/examples/Triangulation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_Examples) if(CMAKE_COMPILER_IS_GNUCCX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4) diff --git a/Triangulation/include/CGAL/Triangulation_data_structure.h b/Triangulation/include/CGAL/Triangulation_data_structure.h index 2b8ca29f8fc..c93ddb76507 100644 --- a/Triangulation/include/CGAL/Triangulation_data_structure.h +++ b/Triangulation/include/CGAL/Triangulation_data_structure.h @@ -828,8 +828,8 @@ Triangulation_data_structure delete_vertex(v); delete_full_cell(s); inf1->set_vertex(1, Vertex_handle()); - inf1->set_vertex(1, Vertex_handle()); - inf2->set_neighbor(1, Full_cell_handle()); + inf2->set_vertex(1, Vertex_handle()); + inf1->set_neighbor(1, Full_cell_handle()); inf2->set_neighbor(1, Full_cell_handle()); associate_vertex_with_full_cell(inf1, 0, star); associate_vertex_with_full_cell(inf2, 0, v2); diff --git a/Triangulation/test/Triangulation/CMakeLists.txt b/Triangulation/test/Triangulation/CMakeLists.txt index c726891424f..03a5deff165 100644 --- a/Triangulation/test/Triangulation/CMakeLists.txt +++ b/Triangulation/test/Triangulation/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_Tests) if(CMAKE_COMPILER_IS_GNUCCX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4) @@ -23,8 +23,9 @@ if(TARGET CGAL::Eigen3_support) create_single_source_cgal_program("test_torture.cpp") create_single_source_cgal_program("test_insert_if_in_star.cpp") create_single_source_cgal_program("simple_io_test.cpp") + create_single_source_cgal_program("issue_8347.cpp") foreach(target test_triangulation test_delaunay test_regular test_tds - test_torture test_insert_if_in_star simple_io_test) + test_torture test_insert_if_in_star simple_io_test issue_8347) target_link_libraries(${target} PUBLIC CGAL::Eigen3_support) endforeach() diff --git a/Triangulation/test/Triangulation/issue_8347.cpp b/Triangulation/test/Triangulation/issue_8347.cpp new file mode 100644 index 00000000000..9f13868ffd5 --- /dev/null +++ b/Triangulation/test/Triangulation/issue_8347.cpp @@ -0,0 +1,40 @@ +#include + +#include +#include +#include + +typedef CGAL::Dynamic_dimension_tag Dim_tag; +//typedef CGAL::Dimension_tag<2> Dim_tag; + +typedef CGAL::Epick_d< Dim_tag > Kernel; +typedef CGAL::Delaunay_triangulation Triangulation; + +typedef typename Triangulation::Vertex_handle Vertex_handle; +typedef typename Triangulation::Point Point; + +Point create_point(double x,double y) { + std::vector c; + c.push_back(x); + c.push_back(y); + return Point(2,c.begin(),c.end()); +} + +int main() { + + Triangulation T(2); + + Point p1=create_point(2, 3); + Point p2=create_point(6, 3); + Point p3=create_point(0, 4); + + Vertex_handle vh1=T.insert(p1); + T.insert(p2); + T.remove(vh1); + + T.insert(p3); + + std::cout << "Exit normally" << std::endl; + + return 0; +} diff --git a/Triangulation_2/doc/Triangulation_2/Triangulation_2.txt b/Triangulation_2/doc/Triangulation_2/Triangulation_2.txt index 17ae1a6e24b..fb97a042599 100644 --- a/Triangulation_2/doc/Triangulation_2/Triangulation_2.txt +++ b/Triangulation_2/doc/Triangulation_2/Triangulation_2.txt @@ -1253,7 +1253,7 @@ information or functionality in the vertices and faces. \subsection Triangulation_2ACyclicDependency A Cyclic Dependency -To insure flexibility, the triangulation data structure is templated by the +To ensure flexibility, the triangulation data structure is templated by the vertex and face base classes. Also since incidence and adjacency relations are stored in vertices and faces, the base classes have to know the types of handles on vertices and faces provided diff --git a/Triangulation_2/examples/Triangulation_2/CMakeLists.txt b/Triangulation_2/examples/Triangulation_2/CMakeLists.txt index 8f399fa86da..3e3aafa5f56 100644 --- a/Triangulation_2/examples/Triangulation_2/CMakeLists.txt +++ b/Triangulation_2/examples/Triangulation_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_2_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Triangulation_2/test/Triangulation_2/CMakeLists.txt b/Triangulation_2/test/Triangulation_2/CMakeLists.txt index ac024e2eefb..341976b159f 100644 --- a/Triangulation_2/test/Triangulation_2/CMakeLists.txt +++ b/Triangulation_2/test/Triangulation_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_2_Tests) find_package(CGAL REQUIRED) diff --git a/Triangulation_3/benchmark/Triangulation_3/CMakeLists.txt b/Triangulation_3/benchmark/Triangulation_3/CMakeLists.txt index d65cc654dbd..5a6b5b4474c 100644 --- a/Triangulation_3/benchmark/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/benchmark/Triangulation_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_3) diff --git a/Triangulation_3/demo/Triangulation_3/CMakeLists.txt b/Triangulation_3/demo/Triangulation_3/CMakeLists.txt index 1cf16c563df..2333c9a9ffc 100644 --- a/Triangulation_3/demo/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/demo/Triangulation_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_3_Demo) # Find includes in corresponding build directories diff --git a/Triangulation_3/doc/Triangulation_3/Concepts/DelaunayTriangulationTraits_3.h b/Triangulation_3/doc/Triangulation_3/Concepts/DelaunayTriangulationTraits_3.h index 3a7514fab6a..064b89b4371 100644 --- a/Triangulation_3/doc/Triangulation_3/Concepts/DelaunayTriangulationTraits_3.h +++ b/Triangulation_3/doc/Triangulation_3/Concepts/DelaunayTriangulationTraits_3.h @@ -4,7 +4,7 @@ \cgalConcept The concept `DelaunayTriangulationTraits_3` is the first template parameter of the class -`Delaunay_triangulation_3`. It defines the geometric objects (points, +`CGAL::Delaunay_triangulation_3`. It defines the geometric objects (points, segments...) forming the triangulation together with a few geometric predicates and constructions on these objects. @@ -221,4 +221,3 @@ Construct_ray_3 construct_ray_3_object(); /// @} }; /* end DelaunayTriangulationTraits_3 */ - diff --git a/Triangulation_3/doc/Triangulation_3/Concepts/TriangulationTraits_3.h b/Triangulation_3/doc/Triangulation_3/Concepts/TriangulationTraits_3.h index 99f5fda1753..9bb4aa99b70 100644 --- a/Triangulation_3/doc/Triangulation_3/Concepts/TriangulationTraits_3.h +++ b/Triangulation_3/doc/Triangulation_3/Concepts/TriangulationTraits_3.h @@ -6,7 +6,7 @@ \cgalRefines{SpatialSortingTraits_3} The concept `TriangulationTraits_3` is the first template parameter of the class -`Triangulation_3`. It defines the geometric objects (points, segments, +`CGAL::Triangulation_3`. It defines the geometric objects (points, segments, triangles and tetrahedra) forming the triangulation together with a few geometric predicates and constructions on these objects: lexicographical comparison, orientation in case of coplanar points and orientation in space. @@ -188,4 +188,3 @@ Orientation_3 orientation_3_object(); /// @} }; /* end TriangulationTraits_3 */ - diff --git a/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt b/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt index 84daca88505..5e2a44f9b2f 100644 --- a/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt +++ b/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt @@ -333,7 +333,7 @@ Prior to \cgal 3.6, this functionality was available through the In order to satisfy as many uses as possible, a design has been selected that allows to exchange different parts to meet the users' needs, while still -re-using a maximum of the provided functionalities. We have already seen that +reusing a maximum of the provided functionalities. We have already seen that the main triangulation classes are parameterized by a geometric traits class and a triangulation data structure (TDS), so that each of them can be interchanged with alternate implementations. diff --git a/Triangulation_3/examples/Triangulation_3/CMakeLists.txt b/Triangulation_3/examples/Triangulation_3/CMakeLists.txt index c3dcf1e0bba..62631b150e2 100644 --- a/Triangulation_3/examples/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/examples/Triangulation_3/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_3_Examples) find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6) diff --git a/Triangulation_3/include/CGAL/Triangulation_3.h b/Triangulation_3/include/CGAL/Triangulation_3.h index 5b2df86f1e0..523a60945c4 100644 --- a/Triangulation_3/include/CGAL/Triangulation_3.h +++ b/Triangulation_3/include/CGAL/Triangulation_3.h @@ -1624,7 +1624,7 @@ protected: // to make it more general one could have an internal function here // to remove v without touching its handle - // This insert must be from Delaunay (or the particular trian.) + // This insert must be from Delaunay (or the particular triangle.) // not the basic Triangulation_3. // Here we correct the recent triangulation (with decreased dimension) formed // in particular here a 2D (from 3D to 2D displacement) @@ -5371,7 +5371,7 @@ remove(Vertex_handle v, VertexRemover& remover, bool *could_lock_zone) } // The remove here uses the remover, but -// no function envolving hidden points +// no function involving hidden points // will be used in this internal version template < class Gt, class Tds, class Lds > template < class VertexRemover, class OutputItCells > @@ -5618,7 +5618,7 @@ move_if_no_collision(Vertex_handle v, const Point& p, if(((dim == 2) && (lt != OUTSIDE_AFFINE_HULL)) || ((lt == OUTSIDE_AFFINE_HULL) && (dim == 1))) { - // This is insert must be from Delaunay (or the particular trian.) + // This is insert must be from Delaunay (or the particular triangle.) // not Triangulation_3 ! Vertex_handle inserted = inserter.insert(p, lt, loc, li, lj); @@ -5687,7 +5687,7 @@ move_if_no_collision(Vertex_handle v, const Point& p, } } - // This is insert must be from Delaunay (or the particular trian.) + // This is insert must be from Delaunay (or the particular triangle.) // not Triangulation_3 ! Vertex_handle inserted = inserter.insert(p, lt, loc, li, lj); @@ -5915,7 +5915,7 @@ move_if_no_collision_and_give_new_cells(Vertex_handle v, const Point& p, ((lt == OUTSIDE_AFFINE_HULL) && (dim == 1))) { std::set cells_set; - // This is insert must be from Delaunay (or the particular trian.) + // This is insert must be from Delaunay (or the particular triangle.) // not Triangulation_3 ! Vertex_handle inserted = inserter.insert(p, lt, loc, li, lj); Cell_handle c = inserted->cell(), end = c; @@ -6004,7 +6004,7 @@ move_if_no_collision_and_give_new_cells(Vertex_handle v, const Point& p, std::set cells_set; - // This is insert must be from Delaunay (or the particular trian.) + // This is insert must be from Delaunay (or the particular triangle.) // not Triangulation_3 ! Vertex_handle inserted = inserter.insert(p, lt, loc, li, lj); diff --git a/Triangulation_3/test/Triangulation_3/CMakeLists.txt b/Triangulation_3/test/Triangulation_3/CMakeLists.txt index 85fff794a2f..31da9b48320 100644 --- a/Triangulation_3/test/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/test/Triangulation_3/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Triangulation_3_Tests) find_package(CGAL REQUIRED) diff --git a/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_regular_3.h b/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_regular_3.h index 798c40e2b5f..edc962c4d9c 100644 --- a/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_regular_3.h +++ b/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_regular_3.h @@ -181,7 +181,7 @@ _test_cls_regular_3(const Triangulation &) T111.insert(wp1); T111.insert(wp2); T111.insert(wp3); - T111.insert(wp13); // it doesnot work inserting wp13 here + T111.insert(wp13); // it doesn't work inserting wp13 here T111.insert(wp4); T111.insert(wp5); T111.insert(wp6); diff --git a/Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/CMakeLists.txt b/Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/CMakeLists.txt index 0e8422aefa1..7b4e8858a12 100644 --- a/Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/CMakeLists.txt +++ b/Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project( Triangulation_on_sphere_2_Benchmarks ) diff --git a/Triangulation_on_sphere_2/demo/Triangulation_on_sphere_2/CMakeLists.txt b/Triangulation_on_sphere_2/demo/Triangulation_on_sphere_2/CMakeLists.txt index 5fc26c32a7f..076adb04ea7 100644 --- a/Triangulation_on_sphere_2/demo/Triangulation_on_sphere_2/CMakeLists.txt +++ b/Triangulation_on_sphere_2/demo/Triangulation_on_sphere_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project (Triangulation_on_sphere_2_Demo) diff --git a/Triangulation_on_sphere_2/doc/Triangulation_on_sphere_2/Concepts/TriangulationOnSphereFaceBase_2.h b/Triangulation_on_sphere_2/doc/Triangulation_on_sphere_2/Concepts/TriangulationOnSphereFaceBase_2.h index b87fe2a5deb..9297a0c6a75 100644 --- a/Triangulation_on_sphere_2/doc/Triangulation_on_sphere_2/Concepts/TriangulationOnSphereFaceBase_2.h +++ b/Triangulation_on_sphere_2/doc/Triangulation_on_sphere_2/Concepts/TriangulationOnSphereFaceBase_2.h @@ -34,4 +34,16 @@ public: /// provides write access to a Boolean used to indicate if the face is a ghost face. void set_ghost(const bool b); + + /*! + inputs the non-combinatorial information given by the face: + its ghost status and other possible information. + */ + std::istream& operator>>(std::istream& is, TriangulationOnSphereFaceBase_2& v); + + /*! + outputs the non combinatorial operation given by the face: + its ghost status and other possible information. + */ + std::ostream& operator<<(std::ostream& os, const TriangulationOnSphereFaceBase_2& v); }; diff --git a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/CMakeLists.txt b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/CMakeLists.txt index 65ed31daad1..80173de13c7 100644 --- a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/CMakeLists.txt +++ b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project( Triangulation_on_sphere_2_Examples ) diff --git a/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_2.h b/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_2.h index c6751c2a3cb..66186f314da 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_2.h +++ b/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_2.h @@ -327,9 +327,8 @@ public: Arc_on_sphere_2 dual_on_sphere(const All_edges_iterator ei) const { return dual_on_sphere(*ei); } // Validity - bool is_plane() const; - bool is_valid(bool verbose = false, int level = 0) const; bool is_valid_face(Face_handle fh, bool verbose = false, int level = 0) const; + bool is_valid(bool verbose = false, int level = 0) const; }; // ------------------------ PREDICATES / CONSTRUCTIONS --------------------------------// @@ -521,7 +520,7 @@ insert_outside_affine_hull_regular(const Point& p) if(orient2 == POSITIVE) conform = true; - // find smallest vertex this step garanties a unique triangulation + // find smallest vertex this step guarantees a unique triangulation Vertex_handle w = vertices_begin(); Vertices_iterator vi; for(vi=vertices_begin(); vi!=vertices_end(); ++vi) @@ -1090,39 +1089,6 @@ dual_on_sphere(const Edge& e) const //-------------------------------------------CHECK------------------------------------------------// -// checks whether a given triangulation is plane (all points are coplanar) -template -bool -Delaunay_triangulation_on_sphere_2:: -is_plane() const -{ - if(number_of_vertices() <= 3) - return true; - - bool plane = true; - - Vertices_iterator it1 = vertices_begin(), it2(it1), it3(it1), it4(it1); - std::advance(it2, 1); - std::advance(it3, 2); - std::advance(it4, 3); - - while(it4 != vertices_end()) - { - Orientation s = side_of_oriented_circle(point(it1), point(it2), point(it3), point(it4)); - plane = plane && s == ON_ORIENTED_BOUNDARY; - - if(!plane) - return false; - - ++it1; - ++it2; - ++it3; - ++it4; - } - - return true; -} - template bool Delaunay_triangulation_on_sphere_2:: @@ -1154,47 +1120,19 @@ bool Delaunay_triangulation_on_sphere_2:: is_valid(bool verbose, int level) const { - bool result = true; - - if(!tds().is_valid(verbose, level)) + // in any dimension + if(verbose) { - if(verbose) - std::cerr << "invalid data structure" << std::endl; - - CGAL_assertion(false); - return false; + std::cerr << " number of vertices " << number_of_vertices() << "\t" << std::endl; + std::cerr << " number of faces " << number_of_faces() << "\t" << std::endl; } + bool result = Base::is_valid(verbose, level); + CGAL_assertion(result); + for(All_faces_iterator fit=all_faces_begin(); fit!=all_faces_end(); ++fit) result = result && is_valid_face(fit, verbose, level); - for(Vertices_iterator vit=vertices_begin(); vit!=vertices_end(); ++vit) - result = result && Base::is_valid_vertex(vit, verbose, level); - - switch(dimension()) - { - case 0: - break; - case 1: - CGAL_assertion(this->is_plane()); - break; - case 2: - for(All_faces_iterator it=all_faces_begin(); it!=all_faces_end(); ++it) - { - Orientation s = orientation_on_sphere(point(it, 0), point(it, 1), point(it, 2)); - result = result && (s != NEGATIVE || it->is_ghost()); - CGAL_assertion(result); - } - - result = result && (number_of_faces() == 2 * number_of_vertices() - 4); - CGAL_assertion(result); - break; - } - - // in any dimension - if(verbose) - std::cerr << " number of vertices " << number_of_vertices() << "\t" << std::endl; - CGAL_assertion(result); return result; } diff --git a/Triangulation_on_sphere_2/include/CGAL/Projection_on_sphere_traits_3.h b/Triangulation_on_sphere_2/include/CGAL/Projection_on_sphere_traits_3.h index 5673c7f597e..cd1713cadbd 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Projection_on_sphere_traits_3.h +++ b/Triangulation_on_sphere_2/include/CGAL/Projection_on_sphere_traits_3.h @@ -37,7 +37,7 @@ private: mutable Base_point proj_pt; public: - Point_with_scale() : Base_point() { } // vertex base wants a default constructor + Point_with_scale() : Base_point(), cached(false) { } // vertex base wants a default constructor Point_with_scale(const Base_point& p) : Base_point(p), cached(false) { } const Base_point& get_projection(const Base_point& center, diff --git a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h index 35c2ef8d7e0..545e54ac112 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h +++ b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h @@ -482,7 +482,7 @@ public: //-----------------------DEBUG-------------------------------------------------------------------- void check_neighboring_faces() const; - + bool is_plane() const; bool is_valid_vertex(Vertex_handle fh, bool verbose = false, int level = 0) const; bool is_valid(bool verbose = false, int level = 0) const; @@ -1239,6 +1239,39 @@ check_neighboring_faces() const } } +// checks whether a given triangulation is plane (all points are coplanar) +template +bool +Triangulation_on_sphere_2:: +is_plane() const +{ + if(number_of_vertices() <= 3) + return true; + + bool is_plane = true; + + Vertices_iterator it1 = vertices_begin(), it2(it1), it3(it1), it4(it1); + std::advance(it2, 1); + std::advance(it3, 2); + std::advance(it4, 3); + + while(it4 != vertices_end()) + { + Orientation s = orientation(point(it1), point(it2), point(it3), point(it4)); + is_plane = is_plane && s == COPLANAR; + + if(!is_plane) + return false; + + ++it1; + ++it2; + ++it3; + ++it4; + } + + return true; +} + template bool Triangulation_on_sphere_2:: @@ -1274,27 +1307,21 @@ is_valid(bool verbose, if(dimension() <= 0 || (dimension() == 1 && number_of_vertices() == 2)) return result; + for(Vertices_iterator vit=vertices_begin(); vit!=vertices_end(); ++vit) + result = result && is_valid_vertex(vit, verbose, level); + if(dimension() == 1) { - Vertices_iterator it1 = vertices_begin(), it2(it1), it3(it1); - std::advance(it2, 1); - std::advance(it3, 2); - while(it3 != vertices_end()) - { - const Orientation s = orientation(point(it1), point(it2), point(it3)); - result = result && (s == COLLINEAR); - CGAL_assertion(result); - ++it1; ++it2; ++it3; - } + result = result && this->is_plane(); + CGAL_assertion(result); } else // dimension() == 2 { for(All_faces_iterator it=all_faces_begin(); it!=all_faces_end(); ++it) { const Orientation s = orientation_on_sphere(point(it, 0), point(it, 1), point(it, 2)); - CGAL_assertion(s == LEFT_TURN || is_ghost(it)); - result = result && (s == LEFT_TURN || is_ghost(it)); + CGAL_assertion(result); } // check number of faces. This cannot be done by the TDS, @@ -1314,6 +1341,7 @@ void Triangulation_on_sphere_2:: file_output(std::ostream& os) const { + os << _gt.center() << " " << _gt.radius() << "\n"; _tds.file_output(os, Vertex_handle(), true); } @@ -1323,7 +1351,15 @@ Triangulation_on_sphere_2:: file_input(std::istream& is) { clear(); - Vertex_handle v = _tds.file_input(is, true); + + Point_3 center; + FT radius; + is >> center >> radius; + _gt.set_center(center); + _gt.set_radius(radius); + + Vertex_handle v = _tds.file_input(is, false); + CGAL_assertion(is_valid()); return v; } @@ -1340,7 +1376,6 @@ std::istream& operator>>(std::istream& is, Triangulation_on_sphere_2& tr) { tr.file_input(is); - CGAL_assertion(tr.is_valid()); return is; } diff --git a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_face_base_2.h b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_face_base_2.h index cae6d48153b..84bbc11e136 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_face_base_2.h +++ b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_face_base_2.h @@ -64,6 +64,27 @@ protected: bool _ghost_flag; }; +template < class Gt, class Fb > +std::ostream& +operator<<(std::ostream &os, const Triangulation_on_sphere_face_base_2 &f) +{ + // non combinatorial information. Default = point + os << static_cast(f); + os << (f.is_ghost() ? " 1" : " 0"); + return os; +} + +template < class Gt, class Fb > +std::istream& +operator>>(std::istream &is, Triangulation_on_sphere_face_base_2 &f) +{ + int g = -1; + is >> static_cast(f); + is >> g; + f.set_ghost(g == 1); + return is; +} + } // namespace CGAL #endif //CGAL_TRIANGULATION_ON_SPHERE_FACE_BASE_2_H diff --git a/Triangulation_on_sphere_2/test/Triangulation_on_sphere_2/CMakeLists.txt b/Triangulation_on_sphere_2/test/Triangulation_on_sphere_2/CMakeLists.txt index 0353327dfbe..79beea09c1e 100644 --- a/Triangulation_on_sphere_2/test/Triangulation_on_sphere_2/CMakeLists.txt +++ b/Triangulation_on_sphere_2/test/Triangulation_on_sphere_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project( Triangulation_on_sphere_2_Tests ) @@ -10,6 +10,7 @@ create_single_source_cgal_program( "test_dtos2_remove.cpp" ) create_single_source_cgal_program( "test_dtos_illegal_points.cpp" ) create_single_source_cgal_program( "test_dtos_projection_traits.cpp" ) create_single_source_cgal_program( "test_dtos_traits.cpp" ) +create_single_source_cgal_program( "issue_8200.cpp" ) if (CGAL_Core_FOUND OR LEDA_FOUND) create_single_source_cgal_program( "test_dtos_degenerate_cases.cpp" ) diff --git a/Triangulation_on_sphere_2/test/Triangulation_on_sphere_2/issue_8200.cpp b/Triangulation_on_sphere_2/test/Triangulation_on_sphere_2/issue_8200.cpp new file mode 100644 index 00000000000..ae3db4f3f10 --- /dev/null +++ b/Triangulation_on_sphere_2/test/Triangulation_on_sphere_2/issue_8200.cpp @@ -0,0 +1,73 @@ +#include + +#include +#include +#include + +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; + +typedef CGAL::Projection_on_sphere_traits_3 Traits; +typedef CGAL::Delaunay_triangulation_on_sphere_2 DToS2; + +typedef Traits::Point_3 Point_3; + +int main(int, char**) +{ + std::vector points; + points.emplace_back( 3, 1, 1); + points.emplace_back(-8, 1, 1); + points.emplace_back( 1, 2, 1); + points.emplace_back( 1, -2, 1); + points.emplace_back( 1, 1, 10); + + Traits traits(Point_3(4,1,1)); // radius is 1 by default + DToS2 dtos(traits); + + Traits::Construct_point_on_sphere_2 cst = traits.construct_point_on_sphere_2_object(); + + for(const auto& pt : points) + { + std::cout << "----- Inserting (" << pt + << ") at squared distance " << CGAL::squared_distance(pt, traits.center()) + << " from the center of the sphere" << std::endl; + dtos.insert(cst(pt)); + + std::cout << "The triangulation now has dimension: " << dtos.dimension() << " and\n"; + std::cout << dtos.number_of_vertices() << " vertices" << std::endl; + std::cout << dtos.number_of_edges() << " edges" << std::endl; + std::cout << dtos.number_of_solid_faces() << " solid faces" << std::endl; + std::cout << dtos.number_of_ghost_faces() << " ghost faces" << std::endl; + } + + assert(dtos.is_valid()); + std::ofstream out("dtos.txt"); + out.precision(17); + out << dtos << std::endl; + out.close(); + + CGAL::IO::write_OFF("dtos.off", dtos, CGAL::parameters::stream_precision(17)); + + DToS2 dtos2; + std::ifstream in("dtos.txt"); + in >> dtos2; + in.close(); + assert(dtos2.is_valid()); + + std::cout << "DTOS2 center: " << dtos2.geom_traits().center() << " radius: " << dtos2.geom_traits().radius() << std::endl; + std::cout << "DTOS2 has dimension: " << dtos2.dimension() << " and\n"; + std::cout << dtos2.number_of_vertices() << " vertices" << std::endl; + std::cout << dtos2.number_of_edges() << " edges" << std::endl; + std::cout << dtos2.number_of_solid_faces() << " solid faces" << std::endl; + std::cout << dtos2.number_of_ghost_faces() << " ghost faces" << std::endl; + + CGAL::IO::write_OFF("dtos2.off", dtos2, CGAL::parameters::stream_precision(17)); + + assert(dtos.number_of_vertices() == dtos2.number_of_vertices()); + assert(dtos.number_of_edges() == dtos2.number_of_edges()); + assert(dtos.number_of_solid_faces() == dtos2.number_of_solid_faces()); + assert(dtos.number_of_ghost_faces() == dtos2.number_of_ghost_faces()); + + std::cout << "Done." << std::endl; + + return EXIT_SUCCESS; +} diff --git a/Union_find/test/Union_find/CMakeLists.txt b/Union_find/test/Union_find/CMakeLists.txt index 0a666e5d6b1..1fa61d78d72 100644 --- a/Union_find/test/Union_find/CMakeLists.txt +++ b/Union_find/test/Union_find/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Union_find_Tests) find_package(CGAL REQUIRED) diff --git a/Visibility_2/examples/Visibility_2/CMakeLists.txt b/Visibility_2/examples/Visibility_2/CMakeLists.txt index 47226cefe9a..6a95ae841ca 100644 --- a/Visibility_2/examples/Visibility_2/CMakeLists.txt +++ b/Visibility_2/examples/Visibility_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Visibility_2_Examples) find_package(CGAL REQUIRED) diff --git a/Visibility_2/test/Visibility_2/CMakeLists.txt b/Visibility_2/test/Visibility_2/CMakeLists.txt index 2e521f149c9..8cb1638680b 100644 --- a/Visibility_2/test/Visibility_2/CMakeLists.txt +++ b/Visibility_2/test/Visibility_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Visibility_2_Tests) find_package(CGAL REQUIRED) diff --git a/Voronoi_diagram_2/doc/Voronoi_diagram_2/Voronoi_diagram_2.txt b/Voronoi_diagram_2/doc/Voronoi_diagram_2/Voronoi_diagram_2.txt index 437036f97ef..36676947fff 100644 --- a/Voronoi_diagram_2/doc/Voronoi_diagram_2/Voronoi_diagram_2.txt +++ b/Voronoi_diagram_2/doc/Voronoi_diagram_2/Voronoi_diagram_2.txt @@ -135,7 +135,7 @@ resulting Voronoi diagram. What we care about is that firstly the policy itself is consistent and, secondly, that the adaptation is also done in a consistent manner. The latter is the responsibility of the adaptor provided by this package, whereas the former is the -responsibility of the implementor of a policy. +responsibility of the implementer of a policy. In this package we currently provide two types of adaptation policies. The first one is the simplest: we reject no feature of the diff --git a/Voronoi_diagram_2/examples/Voronoi_diagram_2/CMakeLists.txt b/Voronoi_diagram_2/examples/Voronoi_diagram_2/CMakeLists.txt index 76d87b64941..2d826a426b1 100644 --- a/Voronoi_diagram_2/examples/Voronoi_diagram_2/CMakeLists.txt +++ b/Voronoi_diagram_2/examples/Voronoi_diagram_2/CMakeLists.txt @@ -1,7 +1,7 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Voronoi_diagram_2_Examples) find_package(CGAL REQUIRED QUIET OPTIONAL_COMPONENTS Qt6) diff --git a/Voronoi_diagram_2/test/Voronoi_diagram_2/CMakeLists.txt b/Voronoi_diagram_2/test/Voronoi_diagram_2/CMakeLists.txt index 3c52d3d7eca..1675ac21334 100644 --- a/Voronoi_diagram_2/test/Voronoi_diagram_2/CMakeLists.txt +++ b/Voronoi_diagram_2/test/Voronoi_diagram_2/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Voronoi_diagram_2_Tests) diff --git a/Weights/doc/Weights/fig/pkg-small.png b/Weights/doc/Weights/fig/pkg-small.png deleted file mode 100644 index 5609b037587..00000000000 Binary files a/Weights/doc/Weights/fig/pkg-small.png and /dev/null differ diff --git a/Weights/examples/Weights/CMakeLists.txt b/Weights/examples/Weights/CMakeLists.txt index 26748ec7233..d8218de5381 100644 --- a/Weights/examples/Weights/CMakeLists.txt +++ b/Weights/examples/Weights/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Weights_Examples) diff --git a/Weights/test/Weights/CMakeLists.txt b/Weights/test/Weights/CMakeLists.txt index 38fb9e881a3..02aef6a76c5 100644 --- a/Weights/test/Weights/CMakeLists.txt +++ b/Weights/test/Weights/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1...3.23) +cmake_minimum_required(VERSION 3.12...3.29) project(Weights_Tests)