From 415645e8eba8a12846ba0328a016840608af6df5 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 28 Jan 2025 12:01:05 +0000 Subject: [PATCH] Use interval arithmetic where needed --- .../examples/Frechet_distance/Frechet_DS_2.cpp | 2 +- .../CGAL/Frechet_distance/internal/Neighbor_search.h | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Frechet_distance/examples/Frechet_distance/Frechet_DS_2.cpp b/Frechet_distance/examples/Frechet_distance/Frechet_DS_2.cpp index d1e02258256..85886bcb67e 100644 --- a/Frechet_distance/examples/Frechet_distance/Frechet_DS_2.cpp +++ b/Frechet_distance/examples/Frechet_distance/Frechet_DS_2.cpp @@ -21,7 +21,7 @@ int main() const std::filesystem::path data{"./data_2d"}; std::vector filenames; for (auto const& dir_entry : std::filesystem::directory_iterator{data}) { - filenames.push_back(dir_entry.path()); + filenames.push_back(dir_entry.path().string()); } std::sort(filenames.begin(), filenames.end()); diff --git a/Frechet_distance/include/CGAL/Frechet_distance/internal/Neighbor_search.h b/Frechet_distance/include/CGAL/Frechet_distance/internal/Neighbor_search.h index f661561aa34..af264020792 100644 --- a/Frechet_distance/include/CGAL/Frechet_distance/internal/Neighbor_search.h +++ b/Frechet_distance/include/CGAL/Frechet_distance/internal/Neighbor_search.h @@ -143,7 +143,8 @@ private: for (size_t i = 0; i < 2*dim; ++i, ++pb, ++qb) { // AF: certainly // AN: yes, here we need certainly! - if (CGAL::abs(*pb - *qb) > distance) { + CGAL::Interval_nt ip = to_interval(*pb), iq = to_interval(*qb); + if (certainly(CGAL::abs(ip - iq) > distance)) { return false; } } @@ -154,10 +155,9 @@ private: { typename Point_d::Cartesian_const_iterator_d pb = p.cartesian_begin(); for (int d = 0; d < D::value; ++d, ++pb) { - if (rect.min_coord(d) > *pb + distance && - rect.max_coord(d) + distance < *pb) { - // AF: certainly - // AN: yes, here is really certainly! + CGAL::Interval_nt irmin = to_interval(rect.min_coord(d)), ip = to_interval(*pb), irmax = to_interval(rect.max_coord(d)); + if (certainly( irmin> ip + distance && + irmax + distance < ip)){ return false; } }