From 9888d44de40cf6029ec1332f28a1257e505a511a Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 31 Jan 2022 09:44:04 +0000 Subject: [PATCH 1/2] Spatial_searching: Fix incremental search with Manhattan distance --- .../CGAL/Incremental_neighbor_search.h | 4 ++- ...search_manhattan_distance_isobox_point.cpp | 35 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 Spatial_searching/test/Spatial_searching/Incremental_neighbor_search_manhattan_distance_isobox_point.cpp diff --git a/Spatial_searching/include/CGAL/Incremental_neighbor_search.h b/Spatial_searching/include/CGAL/Incremental_neighbor_search.h index fb8f40c5e21..23c2d269d6c 100644 --- a/Spatial_searching/include/CGAL/Incremental_neighbor_search.h +++ b/Spatial_searching/include/CGAL/Incremental_neighbor_search.h @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -342,7 +343,8 @@ namespace CGAL { typename SearchTraits::Construct_cartesian_const_iterator_d construct_it = m_tree.traits().construct_cartesian_const_iterator_d_object(); - m_dim = static_cast(std::distance(construct_it(q), construct_it(q, 0))); + const Point_d& p = *m_tree.begin(); + m_dim = static_cast(std::distance(construct_it(p), construct_it(p, 0))); multiplication_factor= distance.transformed_distance(FT(1)+Eps); diff --git a/Spatial_searching/test/Spatial_searching/Incremental_neighbor_search_manhattan_distance_isobox_point.cpp b/Spatial_searching/test/Spatial_searching/Incremental_neighbor_search_manhattan_distance_isobox_point.cpp new file mode 100644 index 00000000000..7e81c4c7e6f --- /dev/null +++ b/Spatial_searching/test/Spatial_searching/Incremental_neighbor_search_manhattan_distance_isobox_point.cpp @@ -0,0 +1,35 @@ + +#include + +#include +#include +#include +#include + + +using K = CGAL::Exact_predicates_inexact_constructions_kernel; +using Point = K::Point_2; +using TreeTraits = CGAL::Search_traits_2; +using Splitter = CGAL::Sliding_midpoint; +using Distance = CGAL::Manhattan_distance_iso_box_point; + +using IncrNN = CGAL::Incremental_neighbor_search; +using Tree = IncrNN::Tree; + +int main() { + + Tree tree; + tree.insert({1,1}); + tree.insert({2,2}); + + Point pQuery(0, 0); + + IncrNN nn(tree, {pQuery, pQuery}); + + for (IncrNN::iterator it = nn.begin(); it != nn.end(); ++it) { + std::cout << it->first << " dist: " << it->second << std::endl;; + } + + return 0; + +} From 971ee5db8b59ecfa1ca82ec73f42cf557b18765e Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 2 Feb 2022 08:01:30 +0000 Subject: [PATCH 2/2] Shorten file name to see if that fixes the error for 2 VC testsuites --- ....cpp => I_neighbor_search_manhattan_distance_isobox_point.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Spatial_searching/test/Spatial_searching/{Incremental_neighbor_search_manhattan_distance_isobox_point.cpp => I_neighbor_search_manhattan_distance_isobox_point.cpp} (100%) diff --git a/Spatial_searching/test/Spatial_searching/Incremental_neighbor_search_manhattan_distance_isobox_point.cpp b/Spatial_searching/test/Spatial_searching/I_neighbor_search_manhattan_distance_isobox_point.cpp similarity index 100% rename from Spatial_searching/test/Spatial_searching/Incremental_neighbor_search_manhattan_distance_isobox_point.cpp rename to Spatial_searching/test/Spatial_searching/I_neighbor_search_manhattan_distance_isobox_point.cpp