15 #include <boost/multi_array.hpp> 16 #include <boost/array.hpp> 49 double replace_maxpri_elt_return_new_maxpri(
KDTreeResult &);
76 KDTree(KDTreeArray &data_in,
bool rearrange_in =
true,
int dim_in = -1);
82 void n_nearest_brute_force(std::vector<double> &qv,
int nn,
KDTreeResultVector &result);
89 void n_nearest_around_point(
int idxin,
int correltime,
int nn,
KDTreeResultVector &result);
97 void r_nearest_around_point(
int idxin,
int correltime,
double r2,
KDTreeResultVector &result);
101 int r_count(std::vector<double> &qv,
double r2);
104 int r_count_around_point(
int idxin,
int correltime,
double r2);
108 friend class SearchRecord;
113 const KDTreeArray *data;
117 std::vector<int> ind;
121 KDTreeArray rearranged_data;
125 static const int bucketsize = 120;
128 void set_data(KDTreeArray &din);
131 void select_on_coordinate(
int c,
int k,
int l,
int u);
132 int select_on_coordinate_value(
int c,
double alpha,
int l,
int u);
133 void spread_in_coordinate(
int c,
int l,
int u,
interval &interv);
146 double cut_val, cut_val_left, cut_val_right;
149 std::vector<interval> box;
153 void search(SearchRecord &sr);
156 bool box_in_search_range(SearchRecord &sr);
160 void check_query_in_bound(SearchRecord &sr);
163 void process_terminal_node(SearchRecord &sr);
164 void process_terminal_node_fixedball(SearchRecord &sr);
boost::multi_array< double, 2 > KDTreeArray
const KDTreeArray & the_data
boost::const_multi_array_ref< double, 2 > KDTreeROArray