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_LINE_H
00036 #define NAV_GRID_ITERATORS_LINE_H
00037
00038 #include <nav_grid_iterators/base_iterator.h>
00039 #include <nav_grid_iterators/line/abstract_line_iterator.h>
00040 #include <memory>
00041
00042 namespace nav_grid_iterators
00043 {
00048 class Line : public BaseIterator<Line>
00049 {
00050 public:
00060 Line(const nav_grid::NavGridInfo* info, double x0, double y0, double x1, double y1,
00061 bool include_last_index = true, bool bresenham = true);
00062
00067 Line(const Line& other);
00068
00073 Line& operator=(const Line& other);
00074
00077 Line begin() const override;
00078 Line end() const override;
00079 void increment() override;
00080 bool fieldsEqual(const Line& other) override;
00083 protected:
00096 Line(const nav_grid::NavGridInfo* info, const nav_grid::Index& index, double x0, double y0, double x1, double y1,
00097 bool include_last_index, bool bresenham, nav_grid::Index start_index, nav_grid::Index end_index);
00098
00099 void constructIterator();
00100
00104 bool inBounds(const nav_grid::SignedIndex& sindex);
00105
00106 std::unique_ptr<AbstractLineIterator> internal_iterator_;
00107 double x0_, y0_, x1_, y1_;
00108 bool include_last_index_;
00109 bool bresenham_;
00110 int signed_width_, signed_height_;
00111 nav_grid::Index start_index_, end_index_;
00112 };
00113 }
00114
00115 #endif // NAV_GRID_ITERATORS_LINE_H