#pragma once #include #include #include #include "snake_geometry.h" #define clipper_scale 10000.0 using namespace std; using namespace snake_geometry; namespace snake { enum AreaType {MeasurementArea, ServiceArea, Corridor}; struct Area { vector geoPolygon; double altitude; size_t layers; AreaType type; }; class Scenario{ public: Scenario(); bool setArea(Area &area); Area getMeasurementArea() {return _measurementArea;} Area getServiceArea() {return _serviceArea;} Area getCorridor() {return _corridor;} bool defined(double tileWidth, double tileHeight, double minTileArea); string error_str; private: bool _areas2enu(); bool _setMeasurementArea(Area &area); bool _setServiceArea(Area &area); bool _setCorridor(Area &area); bool _calculateBoundingBox(); bool _calculateTiles(double tileWidth, double tileHeight, double minTileArea); bool _calculateJoinedArea(); Area _measurementArea; Area _serviceArea; Area _corridor; Point2DList _measurementAreaENU; Point2DList _serviceAreaENU; Point2DList _corridorENU; Point2DList _joinedAreaENU; min_bbox_rt _mAreaBoundingBox; vector _tilesENU; vector _tilesCenterPointsENU; GeoPoint3D _geoOrigin; Point2D _homePositionENU; bool _defined_bool; }; }