template class mrpt::containers::CDynamicGrid
Overview
A 2D grid of dynamic size which stores any kind of data at each cell.
Parameters:
T |
The type of each cell in the 2D grid. |
#include <mrpt/containers/CDynamicGrid.h> template <class T> class CDynamicGrid { public: // typedefs typedef std::vector<T> grid_data_t; typedef typename grid_data_t::iterator iterator; typedef typename grid_data_t::const_iterator const_iterator; // construction CDynamicGrid( double x_min = -10., double x_max = 10., double y_min = -10., double y_max = 10., double resolution = 0.1 ); // methods const grid_data_t& data() const; iterator begin(); iterator end(); const_iterator begin() const; const_iterator end() const; void setSize( const double x_min, const double x_max, const double y_min, const double y_max, const double resolution, const T* fill_value = nullptr ); void clear(); void fill(const T& value); virtual void resize( double new_x_min, double new_x_max, double new_y_min, double new_y_max, const T& defaultValueNewCells, double additionalMarginMeters = 2.0 ); T* cellByPos(double x, double y); const T* cellByPos(double x, double y) const; T* cellByIndex(unsigned int cx, unsigned int cy); const T* cellByIndex(unsigned int cx, unsigned int cy) const; size_t getSizeX() const; size_t getSizeY() const; double getXMin() const; double getXMax() const; double getYMin() const; double getYMax() const; double getResolution() const; int x2idx(double x) const; int y2idx(double y) const; int xy2idx( double x, double y ) const; void idx2cxcy(int idx, int& cx, int& cy) const; double idx2x(int cx) const; double idx2y(int cy) const; template <class MAT> void getAsMatrix(MAT& m) const; virtual float cell2float(const T&) const; bool saveToTextFile(const std::string& fileName) const; }; // direct descendants class CCollisionGrid; class CHeightGridMap2D; class CRandomFieldGridMap2D; class CReflectivityGridMap2D;
Construction
CDynamicGrid( double x_min = -10., double x_max = 10., double y_min = -10., double y_max = 10., double resolution = 0.1 )
Constructor.
Methods
void setSize( const double x_min, const double x_max, const double y_min, const double y_max, const double resolution, const T* fill_value = nullptr )
Changes the size of the grid, ERASING all previous contents.
If fill_value is left as nullptr, the contents of cells may be undefined (some will remain with their old values, the new ones will have the default cell value, but the location of old values may change wrt their old places). If fill_value is not nullptr, it is assured that all cells will have a copy of that value after resizing.
See also:
void clear()
Erase the contents of all the cells.
void fill(const T& value)
Fills all the cells with the same value.
virtual void resize( double new_x_min, double new_x_max, double new_y_min, double new_y_max, const T& defaultValueNewCells, double additionalMarginMeters = 2.0 )
Changes the size of the grid, maintaining previous contents.
See also:
T* cellByPos(double x, double y)
Returns a pointer to the contents of a cell given by its coordinates, or nullptr if it is out of the map extensions.
const T* cellByPos(double x, double y) const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
T* cellByIndex(unsigned int cx, unsigned int cy)
Returns a pointer to the contents of a cell given by its cell indexes, or nullptr if it is out of the map extensions.
const T* cellByIndex(unsigned int cx, unsigned int cy) const
Returns a pointer to the contents of a cell given by its cell indexes, or nullptr if it is out of the map extensions.
size_t getSizeX() const
Returns the horizontal size of grid map in cells count.
size_t getSizeY() const
Returns the vertical size of grid map in cells count.
double getXMin() const
Returns the “x” coordinate of left side of grid map.
double getXMax() const
Returns the “x” coordinate of right side of grid map.
double getYMin() const
Returns the “y” coordinate of top side of grid map.
double getYMax() const
Returns the “y” coordinate of bottom side of grid map.
double getResolution() const
Returns the resolution of the grid map.
int x2idx(double x) const
Transform a coordinate values into cell indexes.
void idx2cxcy(int idx, int& cx, int& cy) const
Transform a global (linear) cell index value into its corresponding (x,y) cell indexes.
double idx2x(int cx) const
Transform a cell index into a coordinate value of the cell central point.
template <class MAT> void getAsMatrix(MAT& m) const
Get the entire grid as a matrix.
This method will compile only for cell types that can be converted to the type of the matrix elements (e.g. double).
Parameters:
MAT |
The type of the matrix, typically a mrpt::math::CMatrixDouble. |
m |
The output matrix; will be set automatically to the correct size. Entry (cy,cx) in the matrix contains the grid cell with indices (cx,cy). |
virtual float cell2float(const T&) const
The user must implement this in order to provide “saveToTextFile” a way to convert each cell into a numeric value.
bool saveToTextFile(const std::string& fileName) const
Saves a float representation of the grid (via “cell2float()”) to a text file.
Returns:
false on error