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);
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);
153 int m_nTotalVectorSize;
160 float m_fCurrentMinDistance;
161 float *m_pNearestNeighbor;
163 int m_nMaximumLeavesToVisit;
173 #endif // _KD_TREE_H_
CKdTree(int nMaximumNumberOfNodes=10000)
void NearestNeighbor(const float *pQuery, float &fError, float *&pfNN, int nMaximumLeavesToVisit=-1)
void NearestNeighborBBF(const float *pfQuery, float &fError, float *&pfNN, int nMaximumLeavesToVisit=-1)
CKdTreeNode * m_pRightChild
void Build(float **ppfValues, int nLow, int nHigh, int nBucketSize, int nDimensions, int nUserDataSize)
CKdTreeNode * m_pLeftChild