massspec/kdtree.h
00001 #ifndef _KD_TREE_H_
00002 #define _KD_TREE_H_
00003 
00004 enum {KDREE_LOWER, KDTREE_UPPER};
00005 
00006 typedef int ElementType;
00007 
00008 typedef ElementType ItemType[3];
00009 
00010 struct KdNode;
00011 typedef struct KdNode* Position;
00012 typedef struct KdNode* KdTree;
00013 
00014 struct KdNode
00015 {
00016         ItemType Data;
00017         KdTree   Left;
00018         KdTree   Right;
00019 };
00020 
00021 KdTree  Insert( ItemType Item, KdTree T );
00022 void    PrintRange(ItemType* array_to_be_filled, int max_size, int* size_of_array, ItemType Low, ItemType High, KdTree T );
00023 
00024 struct KdItem2f
00025 {
00026         float x[2];
00027         void* pointer;
00028 };
00029 
00030 typedef struct KdItem2f KdItem2f;
00031 
00032 struct KdNode2f
00033 {
00034         struct KdItem2f   data;
00035         struct KdNode2f*    left;
00036         struct KdNode2f*    right;
00037 };
00038 
00039 
00040 typedef struct KdNode2f KdNode2f;
00041 
00042 typedef struct KdNode2f* KdTree2f;
00043 
00044 void (*KdTree2f_setElement) (const void* array, int index, const void* data);
00045 
00046 static KdTree2f KdTree2f_recursiveInsert(KdTree2f T,  KdItem2f* item, int level);
00047 KdTree2f                KdTree2f_insert                 (KdTree2f T,  KdItem2f* item);
00048 
00049 void KdTree2f_getArrayInRange(KdTree2f T, void* array_to_be_filled, int max_size, 
00050                                                                          int* size_of_array, KdItem2f* low, KdItem2f* high);
00051 
00052 void KdTree2f_countElementsInRange(KdTree2f T, int* size_of_array, 
00053                                                                    KdItem2f* low, KdItem2f* high);
00054 #endif
00055 
Generated on Sun Feb 13 01:05:58 2005 for MapQuant by
 1.3.7