00001 /* 00002 * polygon_merger.h 00003 * 00004 * Created on: 04.07.2012 00005 * Author: josh 00006 */ 00007 00008 #ifndef POLYGON_MERGER_H_ 00009 #define POLYGON_MERGER_H_ 00010 00011 #include <vector> 00012 00013 namespace Slam_CurvedPolygon 00014 { 00015 00016 class PolygonData { 00017 std::vector<float> data_; 00018 public: 00019 00020 void add(const float x, const float y) {data_.push_back(x); data_.push_back(y);} 00021 00022 bool get(float &x, float &y) { 00023 if(data_.size()<2) return false; 00024 y = data_.back();data_.pop_back(); 00025 x = data_.back();data_.pop_back(); 00026 return true; 00027 } 00028 00029 std::vector<float> &get() {return data_;} 00030 const std::vector<float> &get() const {return data_;} 00031 00032 void clear() {data_.clear();} 00033 }; 00034 00035 void mergePolygons(const PolygonData &a, const PolygonData &b, PolygonData &out); 00036 float unionPolygons(const PolygonData &a, const PolygonData &b, PolygonData &out, bool *sw); 00037 float area(const PolygonData &a); 00038 } 00039 00040 00041 #endif /* POLYGON_MERGER_H_ */