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