41 template <
class KE,
class VTYPE>
class KDTree;
43 template <
class VTYPE>
64 template <
class KE,
class TYPE>
84 template <
class KE,
class VTYPE>
102 template <
class KE,
class VTYPE>
110 typedef typename std::set<BestMatch<KE>, std::greater<BestMatch<KE> > >
BestMatchSet_t;
128 double calcSqDist(
const KE* i1,
const KE* i2);
137 int& ioRemainingUnqueues);
bool split(HyperRectangle &oLeft, HyperRectangle &oRight, int iSplitDim, TYPE iSplitVal)
double calcSqDist(const KE *i1, const KE *i2)
bool hasHyperSphereIntersect(const KE &iTarget, double iSqDistance)
std::vector< TYPE > _leftTop
QueueEntry(HyperRectangle< KE, VTYPE > &iHR, KDTree< KE, VTYPE > *iKDTree, double iDistance)
KDTree< KE, VTYPE > * _rightKD
BestMatchSet_t getNearestNeighboursBBF(const KE &iTarget, int iNbBestMatches, int iNbSearchSteps)
double calcSqDistance(const KE &iTarget)
BestMatch(const KE *iMatch, double iDistance)
std::vector< KE > ItemVector_t
KDTree< KE, VTYPE > * _kdTree
std::list< QueueEntry< KE, VTYPE > > QueueEntryList_t
std::vector< const KE * >::const_iterator ItemPtrVectorIt_t
void init(const ItemPtrVector_t &iElemsPtrList)
bool isTargetIn(const KE &iTarget)
void recurseNearestNeighboursBBF(const KE &iTarget, HyperRectangle< KE, VTYPE > &iHR, BestMatchLimitedSet_t &ioBestMatches, QueueEntryList_t &ioSearchQueue, int &ioRemainingUnqueues)
HyperRectangle< KE, VTYPE > & _HR
lfeat::bounded_set< BestMatch< KE >, std::greater< BestMatch< KE > > > BestMatchLimitedSet_t
virtual VTYPE & getVectorElem(int iPos) const =0
std::vector< const KE * > ItemPtrVector_t
ItemPtrVectorIt_t choosePivot(const ItemPtrVector_t &iElemsPtrList)
std::vector< TYPE > _rightBottom
std::vector< KE >::const_iterator ItemVectorIt_t
KDTree(const ItemVector_t &iElemsList, int iDimensions)
std::set< BestMatch< KE >, std::greater< BestMatch< KE > > > BestMatchSet_t
KDTree< KE, VTYPE > * _leftKD