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/I_neighbor_search_manhattan_distance_isobox_point.cpp b/Spatial_searching/test/Spatial_searching/I_neighbor_search_manhattan_distance_isobox_point.cpp new file mode 100644 index 00000000000..7e81c4c7e6f --- /dev/null +++ b/Spatial_searching/test/Spatial_searching/I_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; + +}