AdaptiveOpticsControl
kdtree.c File Reference

Data Structures

struct  kdhyperrect
 
struct  kdnode
 
struct  res_node
 
struct  kdtree
 
struct  kdres
 

Functions

static void clear_rec (struct kdnode *node, void(*destr)(void *))
 
static int insert_rec (struct kdnode **node, const double *pos, void *data, int dir, int dim)
 
static int rlist_insert (struct res_node *list, struct kdnode *item, double dist_sq)
 
static void clear_results (struct kdres *set)
 
static struct kdhyperrecthyperrect_create (int dim, const double *min, const double *max)
 
static void hyperrect_free (struct kdhyperrect *rect)
 
static struct kdhyperrecthyperrect_duplicate (const struct kdhyperrect *rect)
 
static void hyperrect_extend (struct kdhyperrect *rect, const double *pos)
 
static double hyperrect_dist_sq (struct kdhyperrect *rect, const double *pos)
 
static struct res_nodealloc_resnode (void)
 
static void free_resnode (struct res_node *)
 
int init_kdtree ()
 
struct kdtreekd_create (int k)
 
void kd_free (struct kdtree *tree)
 
void kd_clear (struct kdtree *tree)
 
void kd_data_destructor (struct kdtree *tree, void(*destr)(void *))
 
int kd_insert (struct kdtree *tree, const double *pos, void *data)
 
int kd_insertf (struct kdtree *tree, const float *pos, void *data)
 
int kd_insert3 (struct kdtree *tree, double x, double y, double z, void *data)
 
int kd_insert3f (struct kdtree *tree, float x, float y, float z, void *data)
 
static int find_nearest (struct kdnode *node, const double *pos, double range, struct res_node *list, int ordered, int dim)
 
static int find_nearest_n (struct kdnode *node, const double *pos, double range, int num, struct rheap *heap, int dim)
 
static void kd_nearest_i (struct kdnode *node, const double *pos, struct kdnode **result, double *result_dist_sq, struct kdhyperrect *rect)
 
struct kdreskd_nearest (struct kdtree *kd, const double *pos)
 
struct kdreskd_nearestf (struct kdtree *tree, const float *pos)
 
struct kdreskd_nearest3 (struct kdtree *tree, double x, double y, double z)
 
struct kdreskd_nearest3f (struct kdtree *tree, float x, float y, float z)
 
struct kdreskd_nearest_range (struct kdtree *kd, const double *pos, double range)
 
struct kdreskd_nearest_rangef (struct kdtree *kd, const float *pos, float range)
 
struct kdreskd_nearest_range3 (struct kdtree *tree, double x, double y, double z, double range)
 
struct kdreskd_nearest_range3f (struct kdtree *tree, float x, float y, float z, float range)
 
void kd_res_free (struct kdres *rset)
 
int kd_res_size (struct kdres *set)
 
void kd_res_rewind (struct kdres *rset)
 
int kd_res_end (struct kdres *rset)
 
int kd_res_next (struct kdres *rset)
 
void * kd_res_item (struct kdres *rset, double *pos)
 
void * kd_res_itemf (struct kdres *rset, float *pos)
 
void * kd_res_item3 (struct kdres *rset, double *x, double *y, double *z)
 
void * kd_res_item3f (struct kdres *rset, float *x, float *y, float *z)
 
void * kd_res_item_data (struct kdres *set)
 

Variables

static struct res_nodefree_nodes
 
static pthread_mutex_t alloc_mutex = PTHREAD_MUTEX_INITIALIZER
 

Function Documentation

static struct res_node * alloc_resnode ( void  )
static
static void clear_rec ( struct kdnode node,
void(*)(void *)  destr 
)
static
static void clear_results ( struct kdres set)
static
static int find_nearest ( struct kdnode node,
const double *  pos,
double  range,
struct res_node list,
int  ordered,
int  dim 
)
static
static int find_nearest_n ( struct kdnode node,
const double *  pos,
double  range,
int  num,
struct rheap *  heap,
int  dim 
)
static
static void free_resnode ( struct res_node node)
static
static struct kdhyperrect * hyperrect_create ( int  dim,
const double *  min,
const double *  max 
)
static
static double hyperrect_dist_sq ( struct kdhyperrect rect,
const double *  pos 
)
static
static struct kdhyperrect * hyperrect_duplicate ( const struct kdhyperrect rect)
static
static void hyperrect_extend ( struct kdhyperrect rect,
const double *  pos 
)
static
static void hyperrect_free ( struct kdhyperrect rect)
static
int init_kdtree ( )
static int insert_rec ( struct kdnode **  node,
const double *  pos,
void *  data,
int  dir,
int  dim 
)
static
void kd_clear ( struct kdtree tree)
struct kdtree* kd_create ( int  k)
void kd_data_destructor ( struct kdtree tree,
void(*)(void *)  destr 
)
void kd_free ( struct kdtree tree)
int kd_insert ( struct kdtree tree,
const double *  pos,
void *  data 
)
int kd_insert3 ( struct kdtree tree,
double  x,
double  y,
double  z,
void *  data 
)
int kd_insert3f ( struct kdtree tree,
float  x,
float  y,
float  z,
void *  data 
)
int kd_insertf ( struct kdtree tree,
const float *  pos,
void *  data 
)
struct kdres* kd_nearest ( struct kdtree kd,
const double *  pos 
)
struct kdres* kd_nearest3 ( struct kdtree tree,
double  x,
double  y,
double  z 
)
struct kdres* kd_nearest3f ( struct kdtree tree,
float  x,
float  y,
float  z 
)
static void kd_nearest_i ( struct kdnode node,
const double *  pos,
struct kdnode **  result,
double *  result_dist_sq,
struct kdhyperrect rect 
)
static
struct kdres* kd_nearest_range ( struct kdtree kd,
const double *  pos,
double  range 
)
struct kdres* kd_nearest_range3 ( struct kdtree tree,
double  x,
double  y,
double  z,
double  range 
)
struct kdres* kd_nearest_range3f ( struct kdtree tree,
float  x,
float  y,
float  z,
float  range 
)
struct kdres* kd_nearest_rangef ( struct kdtree kd,
const float *  pos,
float  range 
)
struct kdres* kd_nearestf ( struct kdtree tree,
const float *  pos 
)
int kd_res_end ( struct kdres rset)
void kd_res_free ( struct kdres rset)
void* kd_res_item ( struct kdres rset,
double *  pos 
)
void* kd_res_item3 ( struct kdres rset,
double *  x,
double *  y,
double *  z 
)
void* kd_res_item3f ( struct kdres rset,
float *  x,
float *  y,
float *  z 
)
void* kd_res_item_data ( struct kdres set)
void* kd_res_itemf ( struct kdres rset,
float *  pos 
)
int kd_res_next ( struct kdres rset)
void kd_res_rewind ( struct kdres rset)
int kd_res_size ( struct kdres set)
static int rlist_insert ( struct res_node list,
struct kdnode item,
double  dist_sq 
)
static

Variable Documentation

pthread_mutex_t alloc_mutex = PTHREAD_MUTEX_INITIALIZER
static
struct res_node* free_nodes
static