From 7b6f680f90a63949afe5aaccb45772427fd8d6d4 Mon Sep 17 00:00:00 2001 From: kn1cht <16277200+kn1cht@users.noreply.github.com> Date: Sun, 23 Jun 2024 01:26:01 +0900 Subject: [PATCH 1/2] Fix insertion bug in node_query_ --- KDTree.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/KDTree.cpp b/KDTree.cpp index 36dc254..011655d 100644 --- a/KDTree.cpp +++ b/KDTree.cpp @@ -135,6 +135,7 @@ void KDTree::node_query_( std::upper_bound(k_nearest_buffer.begin(), k_nearest_buffer.end(), node_distance, detail::compare_node_distance); if (insert_it == k_nearest_buffer.end() || + std::next(insert_it) == k_nearest_buffer.end() || insert_it->first != std::next(insert_it)->first) { k_nearest_buffer.insert(insert_it, node_distance); } From ed20caf94bb420efedc8998e236be00a19deebac Mon Sep 17 00:00:00 2001 From: kn1cht <16277200+kn1cht@users.noreply.github.com> Date: Wed, 10 Jul 2024 01:43:20 +0900 Subject: [PATCH 2/2] Revise conditions for insertion to k_nearest_buffer --- KDTree.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/KDTree.cpp b/KDTree.cpp index 011655d..8dec720 100644 --- a/KDTree.cpp +++ b/KDTree.cpp @@ -134,9 +134,8 @@ void KDTree::node_query_( auto const insert_it = std::upper_bound(k_nearest_buffer.begin(), k_nearest_buffer.end(), node_distance, detail::compare_node_distance); - if (insert_it == k_nearest_buffer.end() || - std::next(insert_it) == k_nearest_buffer.end() || - insert_it->first != std::next(insert_it)->first) { + if (insert_it != k_nearest_buffer.end() || + k_nearest_buffer.size() < num_nearest) { k_nearest_buffer.insert(insert_it, node_distance); } while (k_nearest_buffer.size() > num_nearest) {