From 3a1e3d83c80a83d150a7b983985249d1ffdc1d8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Tue, 18 Mar 2025 12:05:17 +0100 Subject: [PATCH] Add missing filtered periodic predicates How did things even work before... --- ..._regular_triangulation_filtered_traits_3.h | 28 ++++++++++++ ...riodic_3_triangulation_filtered_traits_3.h | 44 ++++++++++++++++++- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_regular_triangulation_filtered_traits_3.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_regular_triangulation_filtered_traits_3.h index ff8038bdab9..0d4a3b6768f 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_regular_triangulation_filtered_traits_3.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_regular_triangulation_filtered_traits_3.h @@ -105,6 +105,18 @@ public: Offset_converter_3, Offset_converter_3 > Compare_weighted_squared_radius_3; + typedef Filtered_predicate< + typename Exact_traits::Compare_squared_distance_3, + typename Filtering_traits::Compare_squared_distance_3, + Offset_converter_3, + Offset_converter_3 > Compare_squared_distance_3; + + typedef Filtered_predicate< + typename Exact_traits::Power_side_of_bounded_power_sphere_3, + typename Filtering_traits::Power_side_of_bounded_power_sphere_3, + Offset_converter_3, + Offset_converter_3 > Power_side_of_bounded_power_sphere_3; + Coplanar_orientation_3 coplanar_orientation_3_object() const { typename Exact_traits::Coplanar_orientation_3 pe = regular_traits_e.coplanar_orientation_3_object(); @@ -137,6 +149,22 @@ public: return Compare_weighted_squared_radius_3(pe, pf); } + Compare_squared_distance_3 compare_squared_distance_3_object() const + { + typename Exact_traits::Compare_squared_distance_3 pe = regular_traits_e.compare_squared_distance_3_object(); + typename Filtering_traits::Compare_squared_distance_3 pf = regular_traits_f.compare_squared_distance_3_object(); + + return Compare_squared_distance_3(pe, pf); + } + + Power_side_of_bounded_power_sphere_3 power_side_of_bounded_power_sphere_3_object() const + { + typename Exact_traits::Power_side_of_bounded_power_sphere_3 pe = regular_traits_e.power_side_of_bounded_power_sphere_3_object(); + typename Filtering_traits::Power_side_of_bounded_power_sphere_3 pf = regular_traits_f.power_side_of_bounded_power_sphere_3_object(); + + return Power_side_of_bounded_power_sphere_3(pe, pf); + } + protected: Exact_traits regular_traits_e; Filtering_traits regular_traits_f; diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_filtered_traits_3.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_filtered_traits_3.h index 0254bf652b9..964f6024cb1 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_filtered_traits_3.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_filtered_traits_3.h @@ -52,7 +52,7 @@ struct Offset_converter_3 using Base::operator(); - Target_off + const Target_off& operator()(const Source_off &off) const { return off; @@ -106,6 +106,24 @@ public: traits_f.set_domain(C2F()(domain)); } + typedef Filtered_predicate< + typename Exact_traits::Compare_x_3, + typename Filtering_traits::Compare_x_3, + Offset_converter_3, + Offset_converter_3 > Compare_x_3; + + typedef Filtered_predicate< + typename Exact_traits::Compare_y_3, + typename Filtering_traits::Compare_y_3, + Offset_converter_3, + Offset_converter_3 > Compare_y_3; + + typedef Filtered_predicate< + typename Exact_traits::Compare_z_3, + typename Filtering_traits::Compare_z_3, + Offset_converter_3, + Offset_converter_3 > Compare_z_3; + typedef Filtered_predicate< typename Exact_traits::Compare_xyz_3, typename Filtering_traits::Compare_xyz_3, @@ -118,6 +136,30 @@ public: Offset_converter_3, Offset_converter_3 > Orientation_3; + Compare_x_3 compare_x_3_object() const + { + typename Exact_traits::Compare_x_3 pe = traits_e.compare_x_3_object(); + typename Filtering_traits::Compare_x_3 pf = traits_f.compare_x_3_object(); + + return Compare_x_3(pe, pf); + } + + Compare_y_3 compare_y_3_object() const + { + typename Exact_traits::Compare_y_3 pe = traits_e.compare_y_3_object(); + typename Filtering_traits::Compare_y_3 pf = traits_f.compare_y_3_object(); + + return Compare_y_3(pe, pf); + } + + Compare_z_3 compare_z_3_object() const + { + typename Exact_traits::Compare_z_3 pe = traits_e.compare_z_3_object(); + typename Filtering_traits::Compare_z_3 pf = traits_f.compare_z_3_object(); + + return Compare_z_3(pe, pf); + } + Compare_xyz_3 compare_xyz_3_object() const { typename Exact_traits::Compare_xyz_3 pe = traits_e.compare_xyz_3_object();