Krotos Modules 3
Loading...
Searching...
No Matches
KDTree.h
Go to the documentation of this file.
1#pragma once
2
3#include <cassert>
4#include <cmath>
5#include <iostream>
6#include <vector>
7
8#ifndef JUCE_WINDOWS
9#pragma GCC diagnostic push
10#pragma GCC diagnostic ignored "-Weverything"
11#else
12__pragma(warning(push)) __pragma(warning(disable : 4127 4267))
13#endif
14
17
18#ifdef JUCE_MAC
19#pragma GCC diagnostic pop
20#else
21 __pragma(warning(pop))
22#endif
23
24using namespace nanoflann;
25
26namespace krotos
27{
28
29class KDTree
30{
31 using myVectors = std::vector<std::vector<float>>;
33
34 public:
35 KDTree();
36 ~KDTree();
37 void addDatasetItem(float x, float y, float z = 0.f);
38 void buildIndex();
39 std::size_t knnQuery(float x, float y, float z);
40 std::vector<std::size_t> knnQuery(float x, float y, float z, std::size_t k);
41 std::vector<std::size_t> radiusSearch(float x, float y, float z, float search_radius);
42 // void removePoint(std::size_t idx);//Requires KDTreeSingleIndexDynamicAdaptor
43
44 private:
46 std::unique_ptr<myKDTree> kdTree;
47};
48
49} // namespace krotos
__pragma(warning(pop)) using namespace nanoflann
Definition PCA.h:19
Definition KDTree.h:30
std::size_t knnQuery(float x, float y, float z)
Definition KDTree.cpp:22
std::vector< std::size_t > radiusSearch(float x, float y, float z, float search_radius)
Definition KDTree.cpp:58
std::vector< std::vector< float > > myVectors
Definition KDTree.h:31
void buildIndex()
Definition KDTree.cpp:20
void addDatasetItem(float x, float y, float z=0.f)
Definition KDTree.cpp:14
KDTree()
Definition KDTree.cpp:4
~KDTree()
Definition KDTree.cpp:9
myVectors dataset
Definition KDTree.h:45
std::unique_ptr< myKDTree > kdTree
Definition KDTree.h:46
Definition AirAbsorptionFilter.cpp:2
Definition nanoflann.hpp:77
Definition KDTreeVectorOfVectorsAdaptor.h:55