634 {
635 std::vector<kd_tree<K>::item> rangePoints;
637
638 if (rangePoints.size() == 0) return {};
639
640 int nearIndex = -1;
641 float nearRate = 1E11;
642 for (int i = 0; i < rangePoints.size(); i++)
643 {
644 float rate = 0;
645 for (
int j = 0; j <
K; j++)
646 {
647 rate += std::abs(rangePoints[i][j] - point[j]);
648 }
649 if (rate <= nearRate)
650 {
651 nearRate = rate;
652 nearIndex = i;
653 }
654 }
655
656 return rangePoints[nearIndex];
657 }
Node * m_Root
Pointer to the root node of the tree.
void range_search_recursive(Node *node, const item &point, const item &condition, std::vector< item > &rangePoints, int depth) const
Recursive function to search for all nearest points in the kd_tree.