110 CKdTree(
int nMaximumNumberOfNodes = 10000);
124 void Build(
float **ppfValues,
int nLow,
int nHigh,
int nBucketSize,
int nDimensions,
int nUserDataSize);
127 void NearestNeighbor(
const float *pQuery,
float &fError,
float*& pfNN,
int nMaximumLeavesToVisit = -1);
128 void NearestNeighborBBF(
const float *pfQuery,
float &fError,
float *&pfNN,
int nMaximumLeavesToVisit = -1);
131 void NearestNeighbor(
const float *pQuery,
float &fError,
CKdPriorityQueue *&pNNList,
int nMaximumLeavesToVisit = -1);
132 void NearestNeighborBBF(
const float *pQuery,
float &fError,
CKdPriorityQueue *&pNNList,
int nMaximumLeavesToVisit = -1);
138 CKdTreeNode* BuildRecursive(
float** ppfValues,
int nLow,
int nHigh,
KdBoundingBox* pCurrentBoundingBox,
int nCurrentDepth);
140 void NearestNeighborRecursive(
CKdTreeNode* pNode,
const float *pQuery);
141 void NearestNeighborRecursiveBBF(
CKdTreeNode* pNode,
const float *pQuery,
float fDistanceBB);
173 #endif // _KD_TREE_H_
int m_nMaximumLeavesToVisit
CKdTreeNode * m_pRightChild
CKdPriorityQueue * m_pNodeListBBF
CKdPriorityQueue * m_pNearestNeighborList_
CKdPriorityQueue * m_pNearestNeighborList
CKdTreeNode * m_pLeftChild
float * m_pNearestNeighbor
KdBoundingBox m_EnclosingBox
float m_fCurrentMinDistance