From 75c481228ff91fdad3ddd9f5f90a459c19459a43 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 4 Apr 2018 19:48:58 +0200 Subject: [PATCH] Missing include, fixing missing M_PI Using the little "PI = std::acos(-1);" trick to avoid include issues --- src/blackmisc/pq/units.h | 2 +- src/xswiftbus/navdatareference.cpp | 25 +++++++++++++------------ src/xswiftbus/traffic.cpp | 7 ++++--- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/blackmisc/pq/units.h b/src/blackmisc/pq/units.h index 8017cd98e..1f9f02b67 100644 --- a/src/blackmisc/pq/units.h +++ b/src/blackmisc/pq/units.h @@ -27,6 +27,7 @@ #include #include #include +#include #include // @@ -214,7 +215,6 @@ namespace BlackMisc (void)QT_TRANSLATE_NOOP("CMeasurementUnit", "-%L1 %L2 %L3"); } - //! Sexagesimal degree (degrees, minutes, decimal minutes) static CAngleUnit sexagesimalDegMin() { diff --git a/src/xswiftbus/navdatareference.cpp b/src/xswiftbus/navdatareference.cpp index c38dcde38..29800f24f 100644 --- a/src/xswiftbus/navdatareference.cpp +++ b/src/xswiftbus/navdatareference.cpp @@ -7,33 +7,34 @@ * contained in the LICENSE file. */ +//! \cond PRIVATE + #include "navdatareference.h" #include namespace XSwiftBus { - - //! Converts degree to radian inline double degreeToRadian(double angle) { - return M_PI * angle / 180.0; + static const double PI = acos(-1); + return PI * angle / 180.0; } - //! Returns the great circle distance between to nav data references double calculateGreatCircleDistance(const CNavDataReference &a, const CNavDataReference &b) { const static double c_earthRadiusKm = 6372.8; - double latRad1 = degreeToRadian(a.latitude()); - double latRad2 = degreeToRadian(b.latitude()); - double lonRad1 = degreeToRadian(a.longitude()); - double lonRad2 = degreeToRadian(b.longitude()); + const double latRad1 = degreeToRadian(a.latitude()); + const double latRad2 = degreeToRadian(b.latitude()); + const double lonRad1 = degreeToRadian(a.longitude()); + const double lonRad2 = degreeToRadian(b.longitude()); - double diffLa = latRad2 - latRad1; - double doffLo = lonRad2 - lonRad1; + const double diffLa = latRad2 - latRad1; + const double doffLo = lonRad2 - lonRad1; - double computation = asin(sqrt(sin(diffLa / 2) * sin(diffLa / 2) + cos(latRad1) * cos(latRad2) * sin(doffLo / 2) * sin(doffLo / 2))); + const double computation = asin(sqrt(sin(diffLa / 2) * sin(diffLa / 2) + cos(latRad1) * cos(latRad2) * sin(doffLo / 2) * sin(doffLo / 2))); return 2 * c_earthRadiusKm * computation; } +} // ns -} +//! \endcond diff --git a/src/xswiftbus/traffic.cpp b/src/xswiftbus/traffic.cpp index 2bdc58e66..ba648c940 100644 --- a/src/xswiftbus/traffic.cpp +++ b/src/xswiftbus/traffic.cpp @@ -674,9 +674,10 @@ namespace XSwiftBus // Now calculate where the camera should be positioned to be 200 // meters from the plane and pointing at the plane at the pitch and // heading we wanted above. - double dx = -50.0 * sin(heading * M_PI / 180.0); - double dz = 50.0 * cos(heading * M_PI / 180.0); - double dy = -50.0 * tan(pitch * M_PI / 180.0); + static const double PI = std::acos(-1); + double dx = -50.0 * sin(heading * PI / 180.0); + double dz = 50.0 * cos(heading * PI / 180.0); + double dy = -50.0 * tan(pitch * PI / 180.0); auto planeIt = traffic->m_planesByCallsign.find(traffic->m_planeViewCallsign); if (planeIt == traffic->m_planesByCallsign.end()) { return 0; }