1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-28 05:34:47 +01:00

Remaining WGS84 deduplication

This commit is contained in:
Martin Tůma 2018-07-26 23:51:11 +02:00
parent 06c9fbd849
commit 121a262ea1
3 changed files with 13 additions and 9 deletions

View File

@ -7,9 +7,6 @@
#define ds2scale(x) (1.0 + (x) * 1e-6)
#define scale2ds(x) (((x) - 1.0) / 1e-6)
static Ellipsoid WGS84e = Ellipsoid(WGS84_RADIUS, WGS84_FLATTENING);
static Datum WGS84 = Datum(&WGS84e, 0.0, 0.0, 0.0);
static Coordinates molodensky(const Coordinates &c, const Datum &from,
const Datum &to)
{
@ -46,6 +43,12 @@ static Coordinates molodensky(const Coordinates &c, const Datum &from,
return Coordinates(c.lon() + rad2deg(dlon), c.lat() + rad2deg(dlat));
}
const Datum &Datum::WGS84()
{
static Datum d(&Ellipsoid::WGS84(), 0.0, 0.0, 0.0);
return d;
}
Point3D Datum::helmert(const Point3D &p) const
{
return Point3D(_scale * (p.x() + _rz * p.y() -_ry * p.z()) + _dx,
@ -92,9 +95,9 @@ Coordinates Datum::toWGS84(const Coordinates &c) const
switch (_transformation) {
case Helmert:
return Geocentric::toGeodetic(helmert(Geocentric::fromGeodetic(c,
ellipsoid())), WGS84.ellipsoid());
ellipsoid())), WGS84().ellipsoid());
case Molodensky:
return molodensky(c, *this, WGS84);
return molodensky(c, *this, WGS84());
default:
return c;
}
@ -105,9 +108,9 @@ Coordinates Datum::fromWGS84(const Coordinates &c) const
switch (_transformation) {
case Helmert:
return Geocentric::toGeodetic(helmertr(Geocentric::fromGeodetic(c,
WGS84.ellipsoid())), ellipsoid());
WGS84().ellipsoid())), ellipsoid());
case Molodensky:
return molodensky(c, WGS84, *this);
return molodensky(c, WGS84(), *this);
default:
return c;
}

View File

@ -35,6 +35,8 @@ public:
Coordinates toWGS84(const Coordinates &c) const;
Coordinates fromWGS84(const Coordinates &c) const;
static const Datum &WGS84();
private:
enum TransformationType {
None,

View File

@ -46,8 +46,7 @@ QList<GCS::Entry> GCS::_gcss = defaults();
const GCS &GCS::WGS84()
{
static Datum d(&Ellipsoid::WGS84(), 0.0, 0.0, 0.0);
static GCS g(d, 8901, 9122);
static GCS g(Datum::WGS84(), 8901, 9122);
return g;
}