Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef POINT3DKDTREE_H_
00020 #define POINT3DKDTREE_H_
00021
00022
00023 #include "ANN/ANN.h"
00024 #include "rtc/rtcVec3.h"
00025
00026
00027 namespace rtc {
00028
00029
00030
00031
00032 class Point3DKdTree
00033 {
00034 public:
00035 Point3DKdTree(float* x, float* y, float* z, int num_points);
00036 virtual ~Point3DKdTree();
00037
00038 int findNearest(const Vec3f& p);
00039 int findNearest(float x, float y, float z);
00040
00041 void findNearest(float x, float y, float z, int k, int* points);
00042 void findNearest(float x, float y, float z, int k, std::vector<int>& points);
00043 void findNearest(const Vec3f& p, int k, int* points);
00044 void findNearest(const Vec3f& p, int k, std::vector<int>& points);
00045
00046
00047 int findWithinRange(float x, float y, float z, float range, std::vector<int>& points);
00048 int findWithinRange(const Vec3f& p, float range, std::vector<int>& points);
00049 protected:
00050
00051 void findNearest(float* ann_sample, ANNidx* i, ANNdist* d);
00052
00053 ANNkd_tree *ann_tree;
00054 ANNpointArray dataPts;
00055 };
00056
00057
00058 }
00059
00060 #endif // POINT2DKDTREE_H_ defined
00061