#include <rsdl_kd_tree.h>
Inheritance diagram for rsdl_kd_tree:

Definition at line 58 of file rsdl_kd_tree.h.
Public Member Functions | |
| rsdl_kd_tree (const vcl_vector< rsdl_point > &points, double min_angle=0, int points_per_leaf=4) | |
| ctor requires the points and values associated with the tree;. | |
| ~rsdl_kd_tree () | |
| dtor deletes the nodes in tree. | |
| void | n_nearest (const rsdl_point &query_point, int n, vcl_vector< rsdl_point > &closest_points, vcl_vector< int > &indices, bool use_heap=false, int max_leaves=-1) |
| find the n points nearest to the query point (and their associate indices). | |
| void | points_in_bounding_box (const rsdl_bounding_box &box, vcl_vector< rsdl_point > &closest_points, vcl_vector< int > &indices) |
| find all points within a query's bounding box. | |
| void | points_in_radius (const rsdl_point &query_point, double radius, vcl_vector< rsdl_point > &points, vcl_vector< int > &indices) |
| find all points within a given distance of the query_point. | |
| void | ref () |
| void | unref () |
| int | get_references () const |
| bool | is_referenced () const |
Private Member Functions | |
| rsdl_kd_tree (const rsdl_kd_tree &) | |
| copy ctor is private, for now, to prevent its use. | |
| rsdl_kd_tree & | operator= (const rsdl_kd_tree &) |
| operator= is private, for now, to prevent its use. | |
| void | destroy_tree (rsdl_kd_node *&p) |
| rsdl_kd_node * | build_kd_tree (int points_per_leaf, const rsdl_bounding_box &outer_box, int depth, vcl_vector< int > &indices) |
| rsdl_bounding_box | build_inner_box (const vcl_vector< int > &indices) |
| void | greatest_variation (const vcl_vector< int > &indices, bool &use_cartesian, int &dim) |
| void | n_nearest_with_stack (const rsdl_point &query_point, int n, rsdl_kd_node *root, vcl_vector< int > &closest_indices, vcl_vector< double > &sq_distances, int &num_found) |
| void | n_nearest_with_heap (const rsdl_point &query_point, int n, rsdl_kd_node *root, vcl_vector< int > &closest_indices, vcl_vector< double > &sq_distances, int &num_found, int max_leaves) |
| void | update_closest (const rsdl_point &query_point, int n, rsdl_kd_node *p, vcl_vector< int > &closest_indices, vcl_vector< double > &sq_distances, int &num_found) |
| bool | bounded_at_leaf (const rsdl_point &query_point, int n, rsdl_kd_node *current, const vcl_vector< double > &sq_distances, int &num_found) |
| void | points_in_bounding_box (rsdl_kd_node *current, const rsdl_bounding_box &box, vcl_vector< int > &indices) |
| void | report_all_in_subtree (rsdl_kd_node *current, vcl_vector< int > &indices) |
Private Attributes | |
| rsdl_kd_node * | root_ |
| vcl_vector< rsdl_point > | points_ |
| unsigned int | Nc_ |
| unsigned int | Na_ |
| double | min_angle_ |
| int | leaf_count_ |
| int | leaves_examined_ |
| int | internal_count_ |
| int | internal_examined_ |
| rsdl_kd_tree::rsdl_kd_tree | ( | const rsdl_kd_tree & | ) | [inline, private] |
| rsdl_kd_tree::rsdl_kd_tree | ( | const vcl_vector< rsdl_point > & | points, | |
| double | min_angle = 0, |
|||
| int | points_per_leaf = 4 | |||
| ) |
ctor requires the points and values associated with the tree;.
Definition at line 16 of file rsdl_kd_tree.cxx.
| rsdl_kd_tree::~rsdl_kd_tree | ( | ) |
| rsdl_kd_tree& rsdl_kd_tree::operator= | ( | const rsdl_kd_tree & | ) | [inline, private] |
| void rsdl_kd_tree::n_nearest | ( | const rsdl_point & | query_point, | |
| int | n, | |||
| vcl_vector< rsdl_point > & | closest_points, | |||
| vcl_vector< int > & | indices, | |||
| bool | use_heap = false, |
|||
| int | max_leaves = -1 | |||
| ) |
find the n points nearest to the query point (and their associate indices).
max_leaves = -1 to not use approximate nearest neighbor queries; if max_leaves is not -1 then use_heap must be true
Definition at line 265 of file rsdl_kd_tree.cxx.
| void rsdl_kd_tree::points_in_bounding_box | ( | const rsdl_bounding_box & | box, | |
| vcl_vector< rsdl_point > & | closest_points, | |||
| vcl_vector< int > & | indices | |||
| ) |
| void rsdl_kd_tree::points_in_radius | ( | const rsdl_point & | query_point, | |
| double | radius, | |||
| vcl_vector< rsdl_point > & | points, | |||
| vcl_vector< int > & | indices | |||
| ) |
find all points within a given distance of the query_point.
Definition at line 653 of file rsdl_kd_tree.cxx.
| void rsdl_kd_tree::destroy_tree | ( | rsdl_kd_node *& | p | ) | [private] |
Definition at line 253 of file rsdl_kd_tree.cxx.
| rsdl_kd_node * rsdl_kd_tree::build_kd_tree | ( | int | points_per_leaf, | |
| const rsdl_bounding_box & | outer_box, | |||
| int | depth, | |||
| vcl_vector< int > & | indices | |||
| ) | [private] |
Definition at line 78 of file rsdl_kd_tree.cxx.
| rsdl_bounding_box rsdl_kd_tree::build_inner_box | ( | const vcl_vector< int > & | indices | ) | [private] |
Definition at line 172 of file rsdl_kd_tree.cxx.
| void rsdl_kd_tree::greatest_variation | ( | const vcl_vector< int > & | indices, | |
| bool & | use_cartesian, | |||
| int & | dim | |||
| ) | [private] |
Definition at line 200 of file rsdl_kd_tree.cxx.
| void rsdl_kd_tree::n_nearest_with_stack | ( | const rsdl_point & | query_point, | |
| int | n, | |||
| rsdl_kd_node * | root, | |||
| vcl_vector< int > & | closest_indices, | |||
| vcl_vector< double > & | sq_distances, | |||
| int & | num_found | |||
| ) | [private] |
Definition at line 307 of file rsdl_kd_tree.cxx.
| void rsdl_kd_tree::n_nearest_with_heap | ( | const rsdl_point & | query_point, | |
| int | n, | |||
| rsdl_kd_node * | root, | |||
| vcl_vector< int > & | closest_indices, | |||
| vcl_vector< double > & | sq_distances, | |||
| int & | num_found, | |||
| int | max_leaves | |||
| ) | [private] |
Definition at line 420 of file rsdl_kd_tree.cxx.
| void rsdl_kd_tree::update_closest | ( | const rsdl_point & | query_point, | |
| int | n, | |||
| rsdl_kd_node * | p, | |||
| vcl_vector< int > & | closest_indices, | |||
| vcl_vector< double > & | sq_distances, | |||
| int & | num_found | |||
| ) | [private] |
Definition at line 537 of file rsdl_kd_tree.cxx.
| bool rsdl_kd_tree::bounded_at_leaf | ( | const rsdl_point & | query_point, | |
| int | n, | |||
| rsdl_kd_node * | current, | |||
| const vcl_vector< double > & | sq_distances, | |||
| int & | num_found | |||
| ) | [private] |
Definition at line 601 of file rsdl_kd_tree.cxx.
| void rsdl_kd_tree::points_in_bounding_box | ( | rsdl_kd_node * | current, | |
| const rsdl_bounding_box & | box, | |||
| vcl_vector< int > & | indices | |||
| ) | [private] |
Definition at line 715 of file rsdl_kd_tree.cxx.
| void rsdl_kd_tree::report_all_in_subtree | ( | rsdl_kd_node * | current, | |
| vcl_vector< int > & | indices | |||
| ) | [private] |
Definition at line 739 of file rsdl_kd_tree.cxx.
rsdl_kd_node* rsdl_kd_tree::root_ [private] |
Definition at line 98 of file rsdl_kd_tree.h.
vcl_vector< rsdl_point > rsdl_kd_tree::points_ [private] |
Definition at line 100 of file rsdl_kd_tree.h.
unsigned int rsdl_kd_tree::Nc_ [private] |
Definition at line 102 of file rsdl_kd_tree.h.
unsigned int rsdl_kd_tree::Na_ [private] |
Definition at line 102 of file rsdl_kd_tree.h.
double rsdl_kd_tree::min_angle_ [private] |
Definition at line 103 of file rsdl_kd_tree.h.
int rsdl_kd_tree::leaf_count_ [private] |
Definition at line 105 of file rsdl_kd_tree.h.
int rsdl_kd_tree::leaves_examined_ [private] |
Definition at line 106 of file rsdl_kd_tree.h.
int rsdl_kd_tree::internal_count_ [private] |
Definition at line 107 of file rsdl_kd_tree.h.
int rsdl_kd_tree::internal_examined_ [private] |
Definition at line 108 of file rsdl_kd_tree.h.
1.5.1