MrSID Decode SDK for LiDAR Reference Manual  1.1.3.4427
PointIterator.h
Go to the documentation of this file.
1 /* //////////////////////////////////////////////////////////////////////////
2 // //
3 // This code is Copyright (c) 2008-2010 LizardTech, Inc, 1008 Western //
4 // Avenue, Suite 200, Seattle, WA 98104. Unauthorized use or distribution //
5 // prohibited. Access to and use of this code is permitted only under //
6 // license from LizardTech, Inc. Portions of the code are protected by //
7 // US and foreign patents and other filings. All Rights Reserved. //
8 // //
10 /* PUBLIC */
11 
12 #ifndef __LIDAR_POINT_ITERATOR_H__
13 #define __LIDAR_POINT_ITERATOR_H__
14 
15 #include "lidar/Types.h"
16 #include "lidar/Object.h"
17 #include "lidar/PointData.h"
18 #include "lidar/ProgressDelegate.h"
19 
20 LT_BEGIN_LIDAR_NAMESPACE
21 
31 class PointIterator : public Object
32 {
33  ABSTRACT_OBJECT(PointIterator);
34 public:
43  virtual size_t getNextPoints(PointData &points) = 0;
44 
45 protected:
60  void init(const Bounds &bounds,
61  double fraction,
62  const PointInfo &pointInfo,
63  ProgressDelegate *delegate);
64 
68  inline bool useSample(double x, double y, double z)
69  {
70  if(!m_bounds.contains(x, y, z))
71  return false;
72  else
73  {
76  {
77  m_accumulator -= 1;
78  return true;
79  }
80  else
81  return false;
82  }
83  }
84 
86  double m_fraction;
87  double m_accumulator;
88  double m_cutoff;
90 };
91 
92 
93 #define CONCRETE_ITERATOR(classname) \
94  DISABLE_COPY(classname); \
95  public: \
96  static classname *create(void) \
97  { \
98  return new classname(); \
99  }
100 
101 LT_END_LIDAR_NAMESPACE
102 #endif // __LIDAR_POINT_ITERATOR_H__

LizardTech