IQueryKnn.hpp
1 #pragma once
2 
3 
4 #include "DM/config.hpp"
5 #include "DM/Handle.hpp"
6 #include "DM/IQueryBase.hpp"
7 
8 #include <assert.h>
9 
10 DM_NAMESPACE_BEGIN
11 
12 enum struct KnnMode
13 {
14  standard,
15  omnidirectional = standard,
16  quadrant,
17  octant
18 };
19 
20 
21 /// \brief Base class of all query objects
22 class DM_API IQueryKnn : public IQueryBase
23 {
24 public:
25  static IQueryKnn* New(const RangeType &k, int dim, KnnMode m = KnnMode::standard);
26  static IQueryKnn* New(unsigned k, int dim, KnnMode m = KnnMode::standard);
27 
28 protected:
29  virtual ~IQueryKnn() {}
30 
31 public:
32  virtual const RangeType &k() const = 0;
33  virtual KnnMode mode() const = 0;
35 
36  virtual void k(const RangeType &r) = 0;
37  virtual void mode(KnnMode m) = 0;
38  virtual void dimension(int dim) = 0;
39 };
40 
42 
43 
44 DM_NAMESPACE_END
@ quadrant
quadrant-wise nn selection, ie. nn per quadrant, then 2nd nn per quadrant, ...
range class for query geometry objects
Definition: IQueryBase.hpp:14
Base class of all query objects.
Definition: IQueryBase.hpp:55
Base class of all query objects.
Definition: IQueryKnn.hpp:22
@ octant
octant-wise nn selection, ie. nn per octant, then 2nd nn per octant, ...
virtual int dimension() const =0
returns dimension of query (2 or 3)
Smart pointer class using reference counting with support for DM objects (see ObjectBase)
Definition: Handle.hpp:75