geostat/maps.h

32 wiersze
1.1 KiB
C++

#pragma once
class Map {
public:
const int size_x;
const int size_y;
const float lat_max;
const float lat_min;
const float lon_max;
const float lon_min;
const std::string map_file;
Map(int sx, int sy, float lat_mi, float lat_ma, float lon_mi, float lon_ma, std::string file) : size_x(sx), size_y(sy), lat_max(lat_ma), lat_min(lat_mi), lon_max(lon_ma), lon_min(lon_mi), map_file(file){};
bool contains(Position pos) const {
return (pos.lon >= lon_min && pos.lon <= lon_max && pos.lat >= lat_min && pos.lat <= lat_max);
}
int coordinate_x(Position pos) const {
return (pos.lon - lon_min) / (lon_max - lon_min) * size_x;
}
int coordinate_y(Position pos) const {
return size_y - static_cast<int>((pos.lat - lat_min) / (lat_max - lat_min) * size_y);
}
};
const Map Poland(1000, 972, 48.7, 55.2, 13.8, 24.5, "Poland.png");
const Map Poland_relief(1000, 972, 48.7, 55.2, 13.8, 24.5, "Poland_relief.png");
const Map Europe(1249, 1024, 28, 82, -25, 54, "Europe.png");
const Map Podlaskie(727, 1024, 52.17, 54.5, 21.45, 24.1, "Podlaskie.png");
const Map Pomorskie(1000, 785, 53.40, 54.92, 16.65, 19.75, "Pomorskie.png");