1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-07 07:13:21 +02:00
GPXSee/src/ellipsoid.cpp
2017-04-09 10:26:09 +02:00

43 lines
1.2 KiB
C++

#include <cmath>
#include <QString>
#include "wgs84.h"
#include "ellipsoid.h"
#define INTERNATIONAL_RADIUS 6378388.0
#define INTERNATIONAL_FLATTENING (1.0/297.0)
#define KRASSOVSKY_RADIUS 6378245.0
#define KRASSOVSKY_FLATTENING (1.0/298.3)
#define CLARKE1866_RADIUS 6378206.4
#define CLARKE1866_FLATTENING (1.0/294.9786982)
#define GRS80_RADIUS 6378137.0
#define GRS80_FLATTENING (1.0/298.257222101)
#define WGS72_RADIUS 6378135.0
#define WGS72_FLATTENING (1.0/298.26)
#define GRS67_RADIUS 6378160.0
#define GRS67_FLATTENING (1.0/298.25)
// Must be in Ellipsoid::Name order!
struct {double radius; double flattening;} static ellipsoids[] = {
{CLARKE1866_RADIUS, CLARKE1866_FLATTENING},
{GRS80_RADIUS, GRS80_FLATTENING},
{INTERNATIONAL_RADIUS, INTERNATIONAL_FLATTENING},
{KRASSOVSKY_RADIUS, KRASSOVSKY_FLATTENING},
{WGS84_RADIUS, WGS84_FLATTENING},
{WGS72_RADIUS, WGS72_FLATTENING},
{GRS67_RADIUS, GRS67_FLATTENING}
};
Ellipsoid::Ellipsoid()
{
_radius = WGS84_RADIUS;
_flattening = WGS84_FLATTENING;
}
Ellipsoid::Ellipsoid(Name name)
{
_radius = ellipsoids[name].radius;
_flattening = ellipsoids[name].flattening;
}