00001 00011 #ifndef SPATIAL_TEMPORAL_LEARNING_WORLDLIB_WORLD_ROOM_H_ 00012 #define SPATIAL_TEMPORAL_LEARNING_WORLDLIB_WORLD_ROOM_H_ 00013 00014 // worldlib 00015 #include "Object.h" 00016 #include "Surface.h" 00017 #include "../geometry/Position.h" 00018 00019 // C++ Standard Library 00020 #include <vector> 00021 00022 namespace rail 00023 { 00024 namespace spatial_temporal_learning 00025 { 00026 namespace worldlib 00027 { 00028 namespace world 00029 { 00030 00037 class Room : public Object 00038 { 00039 public: 00052 Room(const std::string &name = "", const std::string &frame_id = "", const geometry::Pose &pose = geometry::Pose(), 00053 const double width = 0, const double depth = 0, const double height = 0); 00054 00062 const std::vector<Surface> &getSurfaces() const; 00063 00071 std::vector<Surface> &getSurfaces(); 00072 00080 size_t getNumSurfaces() const; 00081 00091 const Surface &getSurface(const size_t index) const; 00092 00102 Surface &getSurface(const size_t index); 00103 00111 void addSurface(const Surface &surface); 00112 00121 void removeSurface(const size_t index); 00122 00131 bool surfaceExists(const std::string &name) const; 00132 00142 const Surface &findSurface(const std::string &name) const; 00143 00153 Surface &findSurface(const std::string &name); 00154 00164 const Surface &findClosestSurface(const geometry::Position &position) const; 00165 00175 Surface &findClosestSurface(const geometry::Position &position); 00176 00186 size_t findClosestSurfaceIndex(const geometry::Position &position) const; 00187 00188 private: 00190 std::vector<Surface> surfaces_; 00191 }; 00192 00193 } 00194 } 00195 } 00196 } 00197 00198 #endif