Program Listing for File SpiralIterator.hpp
↰ Return to documentation for file (/tmp/ws/src/grid_map/grid_map_core/include/grid_map_core/iterators/SpiralIterator.hpp
)
/*
* SpiralIterator.hpp
*
* Created on: Jul 7, 2015
* Author: Martin Wermelinger
* Institute: ETH Zurich, ANYbotics
*/
#ifndef GRID_MAP_CORE__ITERATORS__SPIRALITERATOR_HPP_
#define GRID_MAP_CORE__ITERATORS__SPIRALITERATOR_HPP_
#include <Eigen/Core>
#include <memory>
#include <vector>
#include "grid_map_core/GridMap.hpp"
namespace grid_map
{
class SpiralIterator
{
public:
SpiralIterator(
const grid_map::GridMap & gridMap, const Eigen::Vector2d & center,
const double radius);
SpiralIterator & operator=(const SpiralIterator & other);
bool operator!=(const SpiralIterator & other) const;
const Eigen::Array2i & operator*() const;
SpiralIterator & operator++();
bool isPastEnd() const;
double getCurrentRadius() const;
private:
bool isInside(const Index index) const;
void generateRing();
int signum(const int val)
{
return (0 < val) - (val < 0);
}
Position center_;
Index indexCenter_;
double radius_;
double radiusSquare_;
unsigned int nRings_;
unsigned int distance_;
std::vector<Index> pointsRing_;
Length mapLength_;
Position mapPosition_;
double resolution_;
Size bufferSize_;
public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};
} // namespace grid_map
#endif // GRID_MAP_CORE__ITERATORS__SPIRALITERATOR_HPP_