00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __mitkKdTreePointSet_h
00012 #define __mitkKdTreePointSet_h
00013
00014 #include "mitkPointSet.h"
00015 #include "mitkKdTree.h"
00016
00024 class MITK_REGISTRATION_API mitkKdTreePointSet : public mitkPointSet
00025 {
00026 public:
00030 mitkKdTreePointSet();
00031
00035 virtual ~mitkKdTreePointSet();
00036
00041 mitkKdTreePointSet(mitkPointSet* pointSet);
00042
00046 virtual void Initialize();
00047
00048 virtual void GetNearestIndex(double* query_point, int &i);
00049
00056 virtual void GetNearestPoint(double* query_point, double* result_point, int &i);
00057
00064 virtual void GetKNearestPoints(double* query_point, unsigned int k, vector<int> &indices);
00065
00072 virtual void GetKNearestPoints(vector<double>* query_point, unsigned int k, vector<int> &indices);
00073
00079 virtual void GetNearestPoints(mitkPointSet* query_pointset, vector<int> &indices);
00080
00086 virtual void GetPointsInBoundingBox(mitkBoundingBox<double>& box, vector<int> &indices);
00087
00094 virtual void GetPointsInRadius(double* query_point, double radius, vector<int> &indices);
00095
00096 protected:
00097 mitkKdTree* m_Tree;
00098 unsigned int m_PointsPerLeaf;
00099
00100 private:
00101 mitkKdTreePointSet(const mitkKdTreePointSet&);
00102 void operator=(const mitkKdTreePointSet&);
00103 };
00104
00105
00106
00107
00108
00109
00110 #endif
00111