Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

rsdl_kd_tree Class Reference

#include <rsdl_kd_tree.h>

Inheritance diagram for rsdl_kd_tree:

Inheritance graph
[legend]
List of all members.

Detailed Description

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_treeoperator= (const rsdl_kd_tree &)
 operator= is private, for now, to prevent its use.
void destroy_tree (rsdl_kd_node *&p)
rsdl_kd_nodebuild_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_noderoot_
vcl_vector< rsdl_pointpoints_
unsigned int Nc_
unsigned int Na_
double min_angle_
int leaf_count_
int leaves_examined_
int internal_count_
int internal_examined_


Constructor & Destructor Documentation

rsdl_kd_tree::rsdl_kd_tree const rsdl_kd_tree  )  [inline, private]
 

copy ctor is private, for now, to prevent its use.

Definition at line 62 of file rsdl_kd_tree.h.

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  ) 
 

dtor deletes the nodes in tree.

Definition at line 247 of file rsdl_kd_tree.cxx.


Member Function Documentation

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.

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.

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.

void rsdl_kd_tree::destroy_tree rsdl_kd_node *&  p  )  [private]
 

Definition at line 253 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 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::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::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.

rsdl_kd_tree& rsdl_kd_tree::operator= const rsdl_kd_tree  )  [inline, private]
 

operator= is private, for now, to prevent its use.

Definition at line 65 of file rsdl_kd_tree.h.

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::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.

Definition at line 640 of file rsdl_kd_tree.cxx.

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::report_all_in_subtree rsdl_kd_node current,
vcl_vector< int > &  indices
[private]
 

Definition at line 739 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.


Member Data Documentation

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.

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.

double rsdl_kd_tree::min_angle_ [private]
 

Definition at line 103 of file rsdl_kd_tree.h.

unsigned int rsdl_kd_tree::Na_ [private]
 

Definition at line 102 of file rsdl_kd_tree.h.

unsigned int rsdl_kd_tree::Nc_ [private]
 

Definition at line 102 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.

rsdl_kd_node* rsdl_kd_tree::root_ [private]
 

Definition at line 98 of file rsdl_kd_tree.h.


The documentation for this class was generated from the following files:
Generated on Thu Jan 10 14:49:34 2008 for contrib/rpl/rsdl by  doxygen 1.4.4