27 #ifndef PUREPROJECTION_H
28 #define PUREPROJECTION_H
30 #include "../core/size.h"
31 #include "../core/point.h"
32 #include "../internals/pointlatlng.h"
48 virtual Size TileSize()
const=0;
50 virtual double Axis()
const=0;
52 virtual double Flattening()
const=0;
54 virtual core::Point FromLatLngToPixel(
double lat,
double lng,
int const& zoom)=0;
56 virtual PointLatLng FromPixelToLatLng(
const qint64 &
x,
const qint64 &
y,
const int &zoom)=0;
58 virtual QString
Type(){
return "PureProjection";}
64 virtual Size GetTileMatrixMinXY(
const int &zoom)=0;
65 virtual Size GetTileMatrixMaxXY(
const int &zoom)=0;
66 virtual Size GetTileMatrixSizeXY(
const int &zoom);
67 int GetTileMatrixItemCount(
const int &zoom);
68 virtual Size GetTileMatrixSizePixel(
const int &zoom);
70 virtual double GetGroundResolution(
const int &zoom,
const double &latitude);
72 void FromGeodeticToCartesian(
double Lat,
double Lng,
double Height,
double &X,
double &Y,
double &Z);
73 void FromCartesianTGeodetic(
const double &X,
const double &Y,
const double &Z,
double &
Lat,
double &Lng);
75 static double DistanceBetweenLatLngAlt(
PointLatLng const& p1,
double const& alt1,
PointLatLng const& p2,
double const& alt2);
80 double bound(
double const&
n,
double const& minValue,
double const& maxValue)
const;
89 static double Sign(
const double &x);
91 static double AdjustLongitude(
double x);
92 static void SinCos(
const double &val,
double &sin,
double &cos);
93 static double e0fn(
const double &x);
94 static double e1fn(
const double &x);
95 static double e2fn(
const double &x);
96 static double e3fn(
const double &x);
97 static double mlfn(
const double &e0,
const double &e1,
const double &e2,
const double &e3,
const double &phi);
98 static qlonglong GetUTMzone(
const double &lon);
100 double myfmod(
double x,
double y);
105 #endif // PUREPROJECTION_H