Iterates over all of the valid indexes that lie within a circle from the center out. More...
#include <spiral.h>
Public Member Functions | |
Spiral & | operator= (const Spiral &other) |
Assignment Operator Required to ensure unique_ptr is set properly. More... | |
Spiral (const nav_grid::NavGridInfo *info, double center_x, double center_y, double radius) | |
Public Constructor. More... | |
Spiral (const Spiral &other) | |
Copy Constructor Required to ensure unique_ptr is set properly. More... | |
Standard BaseIterator Interface | |
Spiral | begin () const override |
Helper function for range-style iteration Equivalent to the above constructor. More... | |
Spiral | end () const override |
Helper function for range-style iteration. More... | |
void | increment () override |
Increase the iterator to the next element. More... | |
bool | fieldsEqual (const Spiral &other) override |
Additional check for whether fields of derived iterators are equal. More... | |
Public Member Functions inherited from nav_grid_iterators::BaseIterator< Spiral > | |
BaseIterator (const nav_grid::NavGridInfo *info) | |
Public Constructor. Takes in a pointer to the info and starts at the minimum index. More... | |
BaseIterator (const nav_grid::NavGridInfo &info) | |
Public Constructor. Takes in a reference to the info and starts at the minimum index. More... | |
bool | operator!= (const Spiral &other) |
Test if two iterators are not equivalent - required for testing if iterator is at the end. More... | |
const nav_grid::Index & | operator* () const |
Dereference the iterator. More... | |
Spiral & | operator++ () |
Increase the iterator to the next element. More... | |
bool | operator== (const Spiral &other) |
Test if two iterators are equivalent. More... | |
virtual | ~BaseIterator ()=default |
Destructor. More... | |
Protected Member Functions | |
bool | isInside (unsigned int x, unsigned int y) const |
Check if the center of the given index is within the circle. More... | |
void | loadRing () |
Given a new distance value, loads the internal iterator. If there are no valid values in the internal iterator, increases the distance. More... | |
Spiral (const nav_grid::NavGridInfo *info, const nav_grid::Index &index, double center_x, double center_y, double radius_sq, unsigned int distance, unsigned int max_distance, const nav_grid::Index &start_index) | |
Protected constructor that takes in an arbitrary index and other internal parameters. More... | |
Protected Member Functions inherited from nav_grid_iterators::BaseIterator< Spiral > | |
BaseIterator (const nav_grid::NavGridInfo *info, const nav_grid::Index &index) | |
Protected constructor that takes in an arbitrary index. More... | |
Protected Attributes | |
double | center_x_ |
double | center_y_ |
unsigned int | distance_ |
std::unique_ptr< CircleOutline > | internal_iterator_ |
unsigned int | max_distance_ |
double | radius_sq_ |
nav_grid::Index | start_index_ |
Protected Attributes inherited from nav_grid_iterators::BaseIterator< Spiral > | |
nav_grid::Index | index_ |
const nav_grid::NavGridInfo * | info_ |
Additional Inherited Members | |
Public Types inherited from nav_grid_iterators::BaseIterator< Spiral > | |
using | difference_type = int |
using | iterator_category = std::input_iterator_tag |
using | pointer = nav_grid::Index * |
using | reference = nav_grid::Index & |
using | self_type = Spiral |
using | value_type = nav_grid::Index |
Iterates over all of the valid indexes that lie within a circle from the center out.
nav_grid_iterators::Spiral::Spiral | ( | const nav_grid::NavGridInfo * | info, |
double | center_x, | ||
double | center_y, | ||
double | radius | ||
) |
Public Constructor.
info | NavGridInfo for the grid to iterate over |
center_x | Center of the circle (x coordinate) |
center_y | Center of the circle (y coordinate) |
radius | Size of the circle |
Definition at line 40 of file spiral.cpp.
nav_grid_iterators::Spiral::Spiral | ( | const Spiral & | other | ) |
Copy Constructor Required to ensure unique_ptr is set properly.
Definition at line 50 of file spiral.cpp.
|
protected |
Protected constructor that takes in an arbitrary index and other internal parameters.
info | NavGridInfo for the grid to iterate over |
index | Initial index |
center_x | Center of the circle (x coordinate) |
center_y | Center of the circle (y coordinate) |
radius_sq | Square of the size of the circle |
distance | Which ring of the spiral to start on |
max_distance | The maximum valid ring |
start_index | The first valid index in the spiral |
Definition at line 56 of file spiral.cpp.
|
overridevirtual |
Helper function for range-style iteration Equivalent to the above constructor.
Implements nav_grid_iterators::BaseIterator< Spiral >.
Definition at line 89 of file spiral.cpp.
|
overridevirtual |
Helper function for range-style iteration.
Implements nav_grid_iterators::BaseIterator< Spiral >.
Definition at line 94 of file spiral.cpp.
|
overridevirtual |
Additional check for whether fields of derived iterators are equal.
Helps make overriding the == operator easy.
Reimplemented from nav_grid_iterators::BaseIterator< Spiral >.
Definition at line 127 of file spiral.cpp.
|
overridevirtual |
Increase the iterator to the next element.
Implements nav_grid_iterators::BaseIterator< Spiral >.
Definition at line 100 of file spiral.cpp.
|
protected |
Check if the center of the given index is within the circle.
Definition at line 145 of file spiral.cpp.
|
protected |
Given a new distance value, loads the internal iterator. If there are no valid values in the internal iterator, increases the distance.
Definition at line 133 of file spiral.cpp.
Assignment Operator Required to ensure unique_ptr is set properly.
Definition at line 70 of file spiral.cpp.
|
protected |
|
protected |
|
protected |
|
protected |