35struct ClusteringContext;
98#define RootOf(T) ((T)->Root.Left->Data)
103KDTREE *
MakeKDTree(int16_t KeySize,
const PARAM_DESC KeyDesc[]);
105void KDStore(KDTREE *Tree,
float *Key, CLUSTER *Data);
107void KDDelete(KDTREE *Tree,
float Key[],
void *Data);
110 int *NumberOfResults,
void **NBuffer,
float DBuffer[]);
void(*)(ClusteringContext *context, CLUSTER *Cluster, int32_t Level) kdwalk_proc
void KDDelete(KDTREE *Tree, float Key[], void *Data)
void KDWalk(KDTREE *Tree, kdwalk_proc action, ClusteringContext *context)
float ComputeDistance(int k, PARAM_DESC *dim, float p1[], float p2[])
void Walk(KDTREE *tree, kdwalk_proc action, ClusteringContext *context, KDNODE *sub_tree, int32_t level)
float DistanceSquared(int k, PARAM_DESC *dim, float p1[], float p2[])
void InsertNodes(KDTREE *tree, KDNODE *nodes)
KDTREE * MakeKDTree(int16_t KeySize, const PARAM_DESC KeyDesc[])
int QueryInSearch(KDTREE *tree)
void KDNearestNeighborSearch(KDTREE *Tree, float Query[], int QuerySize, float MaxDistance, int *NumberOfResults, void **NBuffer, float DBuffer[])
void KDStore(KDTREE *Tree, float *Key, CLUSTER *Data)
std::vector< PARAM_DESC > KeyDesc