MapDimensionProperties.h
Go to the documentation of this file.
00001 //=================================================================================================
00002 // Copyright (c) 2011, Stefan Kohlbrecher, TU Darmstadt
00003 // All rights reserved.
00004 
00005 // Redistribution and use in source and binary forms, with or without
00006 // modification, are permitted provided that the following conditions are met:
00007 //     * Redistributions of source code must retain the above copyright
00008 //       notice, this list of conditions and the following disclaimer.
00009 //     * Redistributions in binary form must reproduce the above copyright
00010 //       notice, this list of conditions and the following disclaimer in the
00011 //       documentation and/or other materials provided with the distribution.
00012 //     * Neither the name of the Simulation, Systems Optimization and Robotics
00013 //       group, TU Darmstadt nor the names of its contributors may be used to
00014 //       endorse or promote products derived from this software without
00015 //       specific prior written permission.
00016 
00017 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00018 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00019 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00020 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
00021 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00022 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00023 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00024 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00025 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00026 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00027 //=================================================================================================
00028 
00029 #ifndef __MapDimensionProperties_h_
00030 #define __MapDimensionProperties_h_
00031 
00032 class MapDimensionProperties
00033 {
00034 public:
00035   MapDimensionProperties()
00036     : topLeftOffset(-1.0f,-1.0f)
00037     , mapDimensions(-1,-1)
00038     , cellLength(-1.0f)
00039   {}
00040 
00041 
00042   MapDimensionProperties(const Eigen::Vector2f& topLeftOffsetIn, const Eigen::Vector2i& mapDimensionsIn, float cellLengthIn)
00043     : topLeftOffset(topLeftOffsetIn)
00044     , mapDimensions(mapDimensionsIn)
00045     , cellLength(cellLengthIn)
00046   {
00047     mapLimitsf = (mapDimensionsIn.cast<float>()).array() - 1.0f;
00048   }
00049 
00050   bool operator==(const MapDimensionProperties& other) const
00051   {
00052     return (topLeftOffset == other.topLeftOffset) && (mapDimensions == other.mapDimensions) && (cellLength == other.cellLength);
00053   }
00054 
00055   bool hasEqualDimensionProperties(const MapDimensionProperties& other) const
00056   {
00057     return (mapDimensions == other.mapDimensions);
00058   }
00059 
00060   bool hasEqualTransformationProperties(const MapDimensionProperties& other) const
00061   {
00062      return  (topLeftOffset == other.topLeftOffset) && (cellLength == other.cellLength);
00063   }
00064 
00065   bool pointOutOfMapBounds(const Eigen::Vector2f& coords) const
00066   {
00067     return ((coords[0] < 0.0f) || (coords[0] > mapLimitsf[0]) || (coords[1] < 0.0f) || (coords[1] > mapLimitsf[1]));
00068   }
00069 
00070   void setMapCellDims(const Eigen::Vector2i& newDims)
00071   {
00072     mapDimensions = newDims;
00073     mapLimitsf = (newDims.cast<float>()).array() - 2.0f;
00074   }
00075 
00076   void setTopLeftOffset(const Eigen::Vector2f& topLeftOffsetIn)
00077   {
00078     topLeftOffset = topLeftOffsetIn;
00079   }
00080 
00081   void setSizeX(int sX) { mapDimensions[0] = sX; };
00082   void setSizeY(int sY) { mapDimensions[1] = sY; };
00083   void setCellLength(float cl) { cellLength = cl; };
00084 
00085   const Eigen::Vector2f& getTopLeftOffset() const { return topLeftOffset; };
00086   const Eigen::Vector2i& getMapDimensions() const { return mapDimensions; };
00087   int getSizeX() const { return mapDimensions[0]; };
00088   int getSizeY() const { return mapDimensions[1]; };
00089   float getCellLength() const { return cellLength; };
00090 
00091 protected:
00092   Eigen::Vector2f topLeftOffset;
00093   Eigen::Vector2i mapDimensions;
00094   Eigen::Vector2f mapLimitsf;
00095   float cellLength;
00096 };
00097 
00098 #endif
00099 
00100 


hector_mapping
Author(s): Stefan Kohlbrecher
autogenerated on Wed Aug 26 2015 11:45:03