Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef NAV_GRID_ITERATORS_CIRCLE_FILL_H
00036 #define NAV_GRID_ITERATORS_CIRCLE_FILL_H
00037
00038 #include <nav_grid_iterators/base_iterator.h>
00039 #include <nav_grid_iterators/sub_grid.h>
00040 #include <memory>
00041
00042 namespace nav_grid_iterators
00043 {
00048 class CircleFill : public BaseIterator<CircleFill>
00049 {
00050 public:
00058 CircleFill(const nav_grid::NavGridInfo* info, double center_x, double center_y, double radius);
00059
00064 CircleFill(const CircleFill& other);
00065
00070 CircleFill& operator=(const CircleFill& other);
00071
00074 CircleFill begin() const override;
00075 CircleFill end() const override;
00076 void increment() override;
00077 bool fieldsEqual(const CircleFill& other) override;
00080 protected:
00094 CircleFill(const nav_grid::NavGridInfo* info, const nav_grid::Index& index, double center_x, double center_y,
00095 double radius_sq, unsigned int min_x, unsigned int min_y, unsigned int width, unsigned int height,
00096 const nav_grid::Index& start_index);
00097
00098
00103 bool isInside(unsigned int x, unsigned int y) const;
00104
00105 double center_x_, center_y_, radius_sq_;
00106 unsigned int min_x_, min_y_, width_, height_;
00107 nav_grid::Index start_index_;
00108 std::unique_ptr<SubGrid> internal_iterator_;
00109 };
00110 }
00111
00112
00113 #endif // NAV_GRID_ITERATORS_CIRCLE_FILL_H