EllipseIterator.hpp
Go to the documentation of this file.
00001 /*
00002  * EllipseIterator.hpp
00003  *
00004  *  Created on: Dec 2, 2015
00005  *      Author: Péter Fankhauser
00006  *   Institute: ETH Zurich, Autonomous Systems Lab
00007  */
00008 
00009 #pragma once
00010 
00011 #include "grid_map_core/GridMap.hpp"
00012 #include "grid_map_core/iterators/SubmapIterator.hpp"
00013 
00014 #include <Eigen/Core>
00015 
00016 #include <memory>
00017 
00018 namespace grid_map {
00019 
00024 class EllipseIterator
00025 {
00026 public:
00027 
00035   EllipseIterator(const GridMap& gridMap, const Position& center, const Length& length, const double rotation = 0.0);
00036 
00042   EllipseIterator& operator =(const EllipseIterator& other);
00043 
00048   bool operator !=(const EllipseIterator& other) const;
00049 
00054   const Index& operator *() const;
00055 
00060   EllipseIterator& operator ++();
00061 
00066   bool isPastEnd() const;
00067 
00072   const Size& getSubmapSize() const;
00073 
00074 private:
00075 
00080   bool isInside() const;
00081 
00090   void findSubmapParameters(const Position& center, const Length& length, const double rotation,
00091                             Index& startIndex, Size& bufferSize) const;
00092 
00094   Position center_;
00095 
00097   Eigen::Array2d semiAxisSquare_;
00098 
00100   Eigen::Matrix2d transformMatrix_;
00101 
00103   std::shared_ptr<SubmapIterator> internalIterator_;
00104 
00106   Length mapLength_;
00107   Position mapPosition_;
00108   double resolution_;
00109   Size bufferSize_;
00110   Index bufferStartIndex_;
00111 
00112  public:
00113   EIGEN_MAKE_ALIGNED_OPERATOR_NEW
00114 };
00115 
00116 } /* namespace */


grid_map_core
Author(s): Péter Fankhauser
autogenerated on Mon Oct 9 2017 03:09:16