#include "include/Saver.h" #include #include #include #include namespace SR = CGAL::Shape_regularization; // This test is still here in case we will add a CGAL solver later, but for now // it is removed and we do not aim adding it in the near future. template void test_cgal_solver() { using FT = typename Traits::FT; using Point_2 = typename Traits::Point_2; using Segment_2 = typename Traits::Segment_2; using Segments = std::vector; using Indices = std::vector; using Saver = SR::Tests::Saver; using NQ = SR::Segments::Delaunay_neighbor_query_2; using AR = SR::Segments::Angle_regularization_2; using QP = CGAL::CGAL_quadratic_program_traits; using QP_AR = SR::QP_regularization; Saver saver; Segments segments = { Segment_2(Point_2(0, 0), Point_2(1, 0)), Segment_2(Point_2(1, 0), Point_2(1, 1)), Segment_2(Point_2(1, 1), Point_2(0, 1)), Segment_2(Point_2(0, 1), Point_2(0, 0)) }; assert(segments.size() == 4); // saver.export_segments(segments, "cgal_input", 100); const FT max_angle_2 = FT(5); NQ neighbor_query(segments); AR angle_regularization( segments, CGAL::parameters::maximum_angle(max_angle_2)); QP qp_angles; QP_AR qp_ar( segments, neighbor_query, angle_regularization, qp_angles); qp_ar.regularize(); std::vector parallel_groups; angle_regularization.parallel_groups( std::back_inserter(parallel_groups)); std::vector orthogonal_groups; angle_regularization.orthogonal_groups( std::back_inserter(orthogonal_groups)); const std::size_t num_segments_angles = angle_regularization.number_of_modified_segments(); // saver.export_segments(segments, "cgal_angles", 100); assert(segments.size() == 4); assert(parallel_groups.size() == 2); assert(orthogonal_groups.size() == 1); assert(num_segments_angles == 4); } int main() { test_cgal_solver< CGAL::Simple_cartesian >(); test_cgal_solver< CGAL::Exact_predicates_inexact_constructions_kernel >(); test_cgal_solver< CGAL::Exact_predicates_exact_constructions_kernel >(); std::cout << "test_cgal_solver: SUCCESS" << std::endl; return EXIT_SUCCESS; }