From 3348402c10b85725fc59a3c1eb2d9a1efaf6a818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=8B=D1=87=D0=BA=D0=BE=D0=B2=20=D0=90=D0=BD=D0=B4?= =?UTF-8?q?=D1=80=D0=B5=D0=B9?= Date: Thu, 20 Aug 2015 07:48:24 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@146 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- AUTHORS.txt | 2 +- src/geo/pigeoposition.cpp | 18 ------------------ src/geo/pigeoposition.h | 28 ++++++++++++++-------------- 3 files changed, 15 insertions(+), 33 deletions(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 53a973d7..58a270af 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,2 +1,2 @@ Pelipenko Ivan (peri4) peri4ko@yandex.ru -Bychkov Andrey () work.a.b@yandex.ru +Bychkov Andrey (andrey) work.a.b@yandex.ru diff --git a/src/geo/pigeoposition.cpp b/src/geo/pigeoposition.cpp index f658b83e..840d1424 100644 --- a/src/geo/pigeoposition.cpp +++ b/src/geo/pigeoposition.cpp @@ -455,24 +455,6 @@ void PIGeoPosition::initialize(PIMathVectorT3d v, PIGeoPosition::CoordinateSyste } -PIGeoPosition operator+(const PIGeoPosition &left, const PIGeoPosition &right) { - PIGeoPosition l(left),r(right); - l.transformTo(PIGeoPosition::Cartesian); - r.transformTo(PIGeoPosition::Cartesian); - l += r; - return l; -} - - -PIGeoPosition operator-(const PIGeoPosition &left, const PIGeoPosition &right) { - PIGeoPosition l(left),r(right); - l.transformTo(PIGeoPosition::Cartesian); - r.transformTo(PIGeoPosition::Cartesian); - l -= r; - return l; -} - - double PIGeoPosition::range(const PIGeoPosition &a, const PIGeoPosition &b) { PIGeoPosition l(a),r(b); l.transformTo(PIGeoPosition::Cartesian); diff --git a/src/geo/pigeoposition.h b/src/geo/pigeoposition.h index 388c5348..b5ab200c 100644 --- a/src/geo/pigeoposition.h +++ b/src/geo/pigeoposition.h @@ -51,10 +51,10 @@ public: PIGeoPosition(PIMathVectorT3d v, CoordinateSystem s = Cartesian, PIEllipsoidModel ell = PIEllipsoidModel::WGS84Ellipsoid()); - PIGeoPosition transformTo(CoordinateSystem sys); - PIGeoPosition asGeodetic() {transformTo(Geodetic); return *this; } /// Convert to geodetic coordinate - PIGeoPosition asGeodetic(const PIEllipsoidModel &ell) {setEllipsoidModel(ell); transformTo(Geodetic); return *this;} /// Convert to another ell, then to geodetic coordinates - PIGeoPosition asECEF() {transformTo(Cartesian); return *this; } /// Convert to cartesian coordinates + PIGeoPosition &transformTo(CoordinateSystem sys); + PIGeoPosition &asGeodetic() {transformTo(Geodetic); return *this; } /// Convert to geodetic coordinate + PIGeoPosition &asGeodetic(const PIEllipsoidModel &ell) {setEllipsoidModel(ell); transformTo(Geodetic); return *this;} /// Convert to another ell, then to geodetic coordinates + PIGeoPosition &asECEF() {transformTo(Cartesian); return *this; } /// Convert to cartesian coordinates double x() const; double y() const; @@ -70,16 +70,16 @@ public: /// Set the ellipsoid values for this PIGeoPosition given a ellipsoid. void setEllipsoidModel(const PIEllipsoidModel &ell) {el = ell;} - /// Set the \a PIGeoPosition given geodetic coordinates. \a CoordinateSystem is set to \a Geodetic. + /// Set the \a PIGeoPosition given geodetic coordinates in degrees. \a CoordinateSystem is set to \a Geodetic. PIGeoPosition &setGeodetic(double lat, double lon, double ht, PIEllipsoidModel ell = PIEllipsoidModel::WGS84Ellipsoid()); - /// Set the \a PIGeoPosition given geocentric coordinates. \a CoordinateSystem is set to \a Geocentric + /// Set the \a PIGeoPosition given geocentric coordinates in degrees. \a CoordinateSystem is set to \a Geocentric PIGeoPosition &setGeocentric(double lat, double lon, double rad); - /// Set the \a PIGeoPosition given spherical coordinates. \a CoordinateSystem is set to \a Spherical + /// Set the \a PIGeoPosition given spherical coordinates in degrees. \a CoordinateSystem is set to \a Spherical PIGeoPosition &setSpherical(double theta, double phi, double rad); - /// Set the \a PIGeoPosition given ECEF coordinates. \a CoordinateSystem is set to \a Cartesian. + /// Set the \a PIGeoPosition given ECEF coordinates in meeters. \a CoordinateSystem is set to \a Cartesian. PIGeoPosition &setECEF(double x, double y, double z); /// Fundamental conversion from spherical to cartesian coordinates. @@ -161,11 +161,11 @@ private: }; -PIGeoPosition operator-(const PIGeoPosition &left, const PIGeoPosition &right); -PIGeoPosition operator+(const PIGeoPosition &left, const PIGeoPosition &right); -PIGeoPosition operator*(const double &scale, const PIGeoPosition &right) {PIMathVectorT3d tmp(right); tmp *= scale; return PIGeoPosition(tmp);} -PIGeoPosition operator*(const PIGeoPosition &left, const double &scale) {return operator* (scale, left);} -PIGeoPosition operator*(const int &scale, const PIGeoPosition &right) {return operator* (double(scale), right);} -PIGeoPosition operator*(const PIGeoPosition &left, const int &scale) {return operator* (double(scale), left);} +inline PIGeoPosition operator-(const PIGeoPosition &left, const PIGeoPosition &right) {PIGeoPosition l(left),r(right); l.transformTo(PIGeoPosition::Cartesian); r.transformTo(PIGeoPosition::Cartesian); l -= r; return l;} +inline PIGeoPosition operator+(const PIGeoPosition &left, const PIGeoPosition &right) {PIGeoPosition l(left),r(right); l.transformTo(PIGeoPosition::Cartesian); r.transformTo(PIGeoPosition::Cartesian); l += r; return l;} +inline PIGeoPosition operator*(const double &scale, const PIGeoPosition &right) {PIMathVectorT3d tmp(right); tmp *= scale; return PIGeoPosition(tmp);} +inline PIGeoPosition operator*(const PIGeoPosition &left, const double &scale) {return operator* (scale, left);} +inline PIGeoPosition operator*(const int &scale, const PIGeoPosition &right) {return operator* (double(scale), right);} +inline PIGeoPosition operator*(const PIGeoPosition &left, const int &scale) {return operator* (double(scale), left);} #endif // PIGEOPOSITION_H