From be261a2dd4c4c38ce03e1079f1c266917f736938 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 31 Jul 2019 19:17:51 +0200 Subject: [PATCH] Ref T709, normalize degrees to +/i180degs --- src/xswiftbus/traffic.cpp | 20 ++++++++++++++++++-- src/xswiftbus/traffic.h | 5 +++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/xswiftbus/traffic.cpp b/src/xswiftbus/traffic.cpp index fb87dd284..440c33cc5 100644 --- a/src/xswiftbus/traffic.cpp +++ b/src/xswiftbus/traffic.cpp @@ -952,8 +952,10 @@ namespace XSwiftBus cameraPosition->x = static_cast(lx + traffic->m_deltaCameraPosition.dx); cameraPosition->y = static_cast(ly + traffic->m_deltaCameraPosition.dy); cameraPosition->z = static_cast(lz + traffic->m_deltaCameraPosition.dz); - cameraPosition->pitch = static_cast(traffic->m_deltaCameraPosition.pitch); - cameraPosition->heading = static_cast(traffic->m_deltaCameraPosition.heading); + // cameraPosition->pitch = static_cast(traffic->m_deltaCameraPosition.pitch); + // cameraPosition->heading = static_cast(traffic->m_deltaCameraPosition.heading); + cameraPosition->pitch = CTraffic::normalizeToPlusMinus180DegF(static_cast(traffic->m_deltaCameraPosition.pitch)); + cameraPosition->heading = CTraffic::normalizeToPlusMinus180DegF(static_cast(traffic->m_deltaCameraPosition.heading)); cameraPosition->roll = 0.0; cameraPosition->zoom = 1.0; @@ -1032,6 +1034,20 @@ namespace XSwiftBus return true; } + float CTraffic::normalizeToPlusMinus180DegF(float v) + { + if (v > 180.0f) { return v - 360.0f;} + if (v <= -180.0f) { return v + 360.0f;} + return v; + } + + double CTraffic::normalizeToPlusMinus180DegD(double v) + { + if (v > 180.0) { return v - 360.0;} + if (v <= -180.0) { return v + 360.0;} + return v; + } + bool CTraffic::isValidPosition(const XPMPPlanePosition_t &position) { if (!isPlusMinus180(position.lat)) { return false; } diff --git a/src/xswiftbus/traffic.h b/src/xswiftbus/traffic.h index df45435a7..681638bd9 100644 --- a/src/xswiftbus/traffic.h +++ b/src/xswiftbus/traffic.h @@ -193,6 +193,11 @@ namespace XSwiftBus static bool isPlusMinus180(double v); //! @} + //! Normalize to (-180, 180] degress @{ + static float normalizeToPlusMinus180DegF(float v); + static double normalizeToPlusMinus180DegD(double v); + //! @} + //! Check the position if values are valid @{ static bool isValidPosition(const XPMPPlanePosition_t &position); static bool isValidPosition(const XPLMCameraPosition_t *camPos);