diff --git a/Kernel_23/include/CGAL/Point_3.h b/Kernel_23/include/CGAL/Point_3.h index f5bedbae9b9..5c779012c5b 100644 --- a/Kernel_23/include/CGAL/Point_3.h +++ b/Kernel_23/include/CGAL/Point_3.h @@ -50,6 +50,7 @@ public: typedef Dimension_tag<3> Ambient_dimension; typedef Dimension_tag<0> Feature_dimension; + typedef typename R_::Weighted_point_3 Weighted_point_3; typedef typename R_::Kernel_base::Point_3 Rep; typedef typename R_::Cartesian_const_iterator_3 Cartesian_const_iterator; @@ -74,6 +75,10 @@ public: Point_3(const Rep& p) : Rep(p) {} + Point_3(const Weighted_point_3& wp) + : Rep(wp.point()) + {} + template < typename T1, typename T2, typename T3 > Point_3(const T1& x, const T2& y, const T3& z) : Rep(typename R::Construct_point_3()(Return_base_tag(), x, y, z)) diff --git a/Mesh_3/include/CGAL/Mesh_3/Creator_weighted_point_3.h b/Mesh_3/include/CGAL/Mesh_3/Creator_weighted_point_3.h index f536faeb5fa..fd779803445 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Creator_weighted_point_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Creator_weighted_point_3.h @@ -56,8 +56,10 @@ public: /// We do not pass \c const \c Arg_& because \c Arg_ is a ring number type Weighted_point operator()(Arg_ a1, Arg_ a2, Arg_ a3) const { - typedef typename Weighted_point::Point Bare_point; - return Weighted_point(Bare_point(a1,a2,a3)); + // AF: check this + //typedef typename Weighted_point::Point Bare_point; + // return Weighted_point(Bare_point(a1,a2,a3)); + return Weighted_point(a1,a2,a3); } private: diff --git a/Mesh_3/include/CGAL/Mesh_3/Robust_weighted_circumcenter_filtered_traits_3.h b/Mesh_3/include/CGAL/Mesh_3/Robust_weighted_circumcenter_filtered_traits_3.h index 58d0f99fe07..b78e754cede 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Robust_weighted_circumcenter_filtered_traits_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Robust_weighted_circumcenter_filtered_traits_3.h @@ -42,8 +42,8 @@ class Robust_filtered_compute_squared_radius_3 { public: typedef Exact_predicates_exact_constructions_kernel EK; - typedef Weighted_converter_3 > To_exact; - typedef Weighted_converter_3 > Back_from_exact; + typedef Cartesian_converter To_exact; + typedef Cartesian_converter Back_from_exact; typedef typename K::Point_3 Point_3; typedef typename K::FT FT; @@ -149,8 +149,8 @@ class Robust_filtered_construct_weighted_circumcenter_3 { public: typedef Exact_predicates_exact_constructions_kernel EK; - typedef Weighted_converter_3 > To_exact; - typedef Weighted_converter_3 > Back_from_exact; + typedef Cartesian_converter To_exact; + typedef Cartesian_converter Back_from_exact; typedef CGAL::Regular_triangulation_euclidean_traits_3 Rt; typedef CGAL::Regular_triangulation_euclidean_traits_3 Exact_Rt; @@ -289,8 +289,8 @@ class Robust_filtered_compute_squared_radius_smallest_orthogonal_sphere_3 { public: typedef Exact_predicates_exact_constructions_kernel EK; - typedef Weighted_converter_3 > To_exact; - typedef Weighted_converter_3 > Back_from_exact; + typedef Cartesian_converter To_exact; + typedef Cartesian_converter Back_from_exact; typedef CGAL::Regular_triangulation_euclidean_traits_3 Rt; typedef CGAL::Regular_triangulation_euclidean_traits_3 Exact_Rt;