Subject: CGAL users discussion list
List archive
Re: [cgal-discuss] Bug: Missing Compare_distance_2 in CGAL::Triangulation_euclidean_traits_xy_3
Chronological Thread
- From: "Sebastien Loriot (GeometryFactory)" <>
- To:
- Subject: Re: [cgal-discuss] Bug: Missing Compare_distance_2 in CGAL::Triangulation_euclidean_traits_xy_3
- Date: Thu, 24 Jun 2010 10:08:00 +0200
Dear Lehtonen,
Thanks for you bug report.
Here is the patch and modified files that will be included in the 3.6.1 bug-fix release of CGAL.
Best,
S.
Lehtonen, Matti/HIIT wrote:
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Triangulation_euclidean_traits_xy_3<Kernel> Gt;
typedef CGAL::Delaunay_triangulation_2<Gt> DTr;
Call tr.nearest_vertex( Point_3(p), ... ) causes error
error: no type named �Compare_distance_2� in �class
CGAL::Triangulation_euclidean_traits_xy_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
�
And it cannot be replaced with (error-prone, think ..._xz_3 trait) call
tr.nearest_vertex( Point_2( p.x(), p.y() ), ... )
Triangulation_euclidean_traits_xy_3.h:
// $URL:
svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/CGAL-3.5-branch/Triangulation_2/include/CGAL/Triangulation_euclidean_traits_xy_3.h
$
// $Id: Triangulation_euclidean_traits_xy_3.h 48844 2009-04-21 18:28:04Z
spion $
Lehtonen, Matti
Researcher, head programmer - Helsinki Institute for Information Technology
HIIT
http://www.hiit.fi/
Index: include/CGAL/Triangulation_euclidean_traits_xy_3.h =================================================================== --- include/CGAL/Triangulation_euclidean_traits_xy_3.h (revision 57042) +++ include/CGAL/Triangulation_euclidean_traits_xy_3.h (working copy) @@ -65,6 +65,31 @@ } }; +template <class R> +class Compare_distance_xy_3 +{ +public: + typedef typename R::Point_3 Point_3; + typedef typename R::Point_2 Point_2; + typedef typename R::FT RT; + typename R::FT x(const Point_3 &p) const { return p.x(); } + typename R::FT y(const Point_3 &p) const { return p.y(); } + + Point_2 project(const Point_3& p) + { + return Point_2(x(p),y(p)); + } + + Comparison_result operator()(const Point_3& p,const Point_3& q,const Point_3& r) + { + Point_2 p2 = project(p); + Point_2 q2 = project(q); + Point_2 r2 = project(r); + return compare_distance_to_point(p2,q2,r2); + } +}; + + template < class R > class Triangulation_euclidean_traits_xy_3 { public: @@ -80,6 +105,7 @@ typedef typename Rp::Compare_y_3 Compare_y_2; typedef Orientation_xy_3<Rp> Orientation_2; typedef Side_of_oriented_circle_xy_3<Rp> Side_of_oriented_circle_2; + typedef Compare_distance_xy_3<Rp> Compare_distance_2; typedef typename Rp::Construct_segment_3 Construct_segment_2; typedef typename Rp::Construct_triangle_3 Construct_triangle_2; @@ -128,6 +154,11 @@ Construct_triangle_2 construct_triangle_2_object() const {return Construct_triangle_2();} + Compare_distance_2 + compare_distance_2_object() const + { + return Compare_distance_2(); + } }; Index: include/CGAL/Triangulation_euclidean_traits_xz_3.h =================================================================== --- include/CGAL/Triangulation_euclidean_traits_xz_3.h (revision 57042) +++ include/CGAL/Triangulation_euclidean_traits_xz_3.h (working copy) @@ -65,6 +65,31 @@ } }; +template <class R> +class Compare_distance_xz_3 +{ +public: + typedef typename R::Point_3 Point_3; + typedef typename R::Point_2 Point_2; + typedef typename R::FT RT; + typename R::FT x(const Point_3 &p) const { return p.x(); } + typename R::FT y(const Point_3 &p) const { return p.z(); } + + Point_2 project(const Point_3& p) + { + return Point_2(x(p),y(p)); + } + + Comparison_result operator()(const Point_3& p,const Point_3& q,const Point_3& r) + { + Point_2 p2 = project(p); + Point_2 q2 = project(q); + Point_2 r2 = project(r); + return compare_distance_to_point(p2,q2,r2); + } +}; + + template < class R > class Triangulation_euclidean_traits_xz_3 { public: @@ -80,6 +105,7 @@ typedef typename Rp::Compare_z_3 Compare_y_2; typedef Orientation_xz_3<Rp> Orientation_2; typedef Side_of_oriented_circle_xz_3<Rp> Side_of_oriented_circle_2; + typedef Compare_distance_xz_3<Rp> Compare_distance_2; typedef typename Rp::Construct_segment_3 Construct_segment_2; typedef typename Rp::Construct_triangle_3 Construct_triangle_2; @@ -126,6 +152,12 @@ Construct_triangle_2 construct_triangle_2_object() const {return Construct_triangle_2();} + + Compare_distance_2 + compare_distance_2_object() const + { + return Compare_distance_2(); + } }; CGAL_END_NAMESPACE Index: include/CGAL/Triangulation_euclidean_traits_yz_3.h =================================================================== --- include/CGAL/Triangulation_euclidean_traits_yz_3.h (revision 57042) +++ include/CGAL/Triangulation_euclidean_traits_yz_3.h (working copy) @@ -66,6 +66,31 @@ } }; +template <class R> +class Compare_distance_yz_3 +{ +public: + typedef typename R::Point_3 Point_3; + typedef typename R::Point_2 Point_2; + typedef typename R::FT RT; + typename R::FT x(const Point_3 &p) const { return p.y(); } + typename R::FT y(const Point_3 &p) const { return p.z(); } + + Point_2 project(const Point_3& p) + { + return Point_2(x(p),y(p)); + } + + Comparison_result operator()(const Point_3& p,const Point_3& q,const Point_3& r) + { + Point_2 p2 = project(p); + Point_2 q2 = project(q); + Point_2 r2 = project(r); + return compare_distance_to_point(p2,q2,r2); + } +}; + + template < class R > class Triangulation_euclidean_traits_yz_3 { public: @@ -81,6 +106,7 @@ typedef typename Rp::Compare_z_3 Compare_y_2; typedef Orientation_yz_3<Rp> Orientation_2; typedef Side_of_oriented_circle_yz_3<Rp> Side_of_oriented_circle_2; + typedef Compare_distance_yz_3<Rp> Compare_distance_2; typedef typename Rp::Construct_segment_3 Construct_segment_2; typedef typename Rp::Construct_triangle_3 Construct_triangle_2; @@ -128,6 +154,12 @@ Construct_triangle_2 construct_triangle_2_object() const {return Construct_triangle_2();} + + Compare_distance_2 + compare_distance_2_object() const + { + return Compare_distance_2(); + } };
Attachment:
patch.tgz
Description: application/compressed-tar
- [cgal-discuss] Bug: Missing Compare_distance_2 in CGAL::Triangulation_euclidean_traits_xy_3, Lehtonen, Matti/HIIT, 06/23/2010
- Re: [cgal-discuss] Bug: Missing Compare_distance_2 in CGAL::Triangulation_euclidean_traits_xy_3, Sebastien Loriot (GeometryFactory), 06/24/2010
Archive powered by MHonArc 2.6.16.