#pragma once #include #include #include #include "snake_geometry.h" using namespace std; using namespace snake_geometrie; 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(); bool _calculateJoinedArea(); bool _calculateMAreaLocal(); bool _calculateSAreaLocal(); bool _calculateCorridorLocal(); Area _measurementArea; Area _serviceArea; Area _corridor; Point2DList _measurementAreaENU; Point2DList _serviceAreaENU; Point2DList _corridorENU; Point2DList _joinedAreaENU; vector _tilesENU; vector _tilesCenterPointsENU; GeoPoint3D _geoOrigin; Point2D _homePositionENU; bool _defined_bool; }; }