29 : nodes(
std::move(
std::move(point_list)))
38 const size_t mid=(left+right)>>1;
39 std::nth_element(
nodes.begin()+
static_cast<long int>(left),
nodes.begin()+
static_cast<long int>(mid),
nodes.begin()+
static_cast<long int>(right)+1,
42 return i[y_axis] < j[y_axis];
52 const std::vector<Node> &
62 const size_t start_node_index = 0;
64 std::numeric_limits<double>::max()
69 return index_distance;
81 const size_t mid=(left+right)>>1;
83 if (check_point[static_cast<size_t>(y_axis)] < node[y_axis])
92 const double distance = sqrt((node[
false]-check_point[0])*(node[
false]-check_point[0])
93 +(node[
true]-check_point[1])*(node[
true]-check_point[1]));
94 if (index_distance.
distance > distance)
96 index_distance.
index = mid;
103 if ((node[y_axis]-check_point[static_cast<size_t>(y_axis)]) < index_distance.
distance)
116 const double distance = sqrt((node[
false]-check_point[0])*(node[
false]-check_point[0])
117 +(node[
true]-check_point[1])*(node[
true]-check_point[1]));
118 if (index_distance.
distance > distance)
120 index_distance.
index = mid;
126 if ((node[y_axis]-check_point[static_cast<size_t>(y_axis)]) < index_distance.
distance)
136 const size_t start_node_index = 0;
138 std::numeric_limits<double>::max(),
145 return index_distances;
157 const size_t mid=(left+right)>>1;
159 if (check_point[static_cast<size_t>(y_axis)] < node[y_axis])
168 const double distance = sqrt((node[
false]-check_point[0])*(node[
false]-check_point[0])
169 +(node[
true]-check_point[1])*(node[
true]-check_point[1]));
181 if ((node[y_axis]-check_point[static_cast<size_t>(y_axis)]) < index_distances.
min_distance)
194 const double distance = sqrt((node[
false]-check_point[0])*(node[
false]-check_point[0])
195 +(node[
true]-check_point[1])*(node[
true]-check_point[1]));
206 if ((node[y_axis]-check_point[static_cast<size_t>(y_axis)]) < index_distances.
min_distance)
std::vector< Node > nodes
std::vector< IndexDistance > vector
void find_closest_points_recursive(const Point< 2 > &check_point, const size_t left, const size_t right, const bool y_axis, IndexDistances &index_distances) const
const std::vector< Node > & get_nodes() const
void create_tree(const size_t left, const size_t right, const bool x_axis)
IndexDistance find_closest_point(const Point< 2 > &check_point) const
IndexDistances find_closest_points(const Point< 2 > &check_point) const
void find_closest_point_recursive(const Point< 2 > &check_point, const size_t left, const size_t right, const bool y_axis, IndexDistance &index_distance) const