version 5.8.0

very important performance fix for normalizeAngleDeg...() methods, now fixed-speed (no "while")
MQTT client release
This commit is contained in:
2026-05-29 17:40:09 +03:00
parent afb4ae8126
commit 1689f560d5
2 changed files with 14 additions and 9 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ if (POLICY CMP0177)
endif() endif()
project(PIP) project(PIP)
set(PIP_MAJOR 5) set(PIP_MAJOR 5)
set(PIP_MINOR 7) set(PIP_MINOR 8)
set(PIP_REVISION 0) set(PIP_REVISION 0)
set(PIP_SUFFIX _beta) set(PIP_SUFFIX _beta)
set(PIP_COMPANY SHS) set(PIP_COMPANY SHS)
+13 -8
View File
@@ -308,10 +308,12 @@ inline PIVector<T> piAbs(const PIVector<T> & v) {
//! \~russian Нормализует угол к диапазону `[0; 360]` градусов на месте. //! \~russian Нормализует угол к диапазону `[0; 360]` градусов на месте.
template<typename T> template<typename T>
void normalizeAngleDeg360(T & a) { void normalizeAngleDeg360(T & a) {
while (a < 0.) if (std::isnan(a) || std::isinf(a)) {
a += 360.; a = 0.;
while (a > 360.) return;
a -= 360.; }
a -= std::floor(a / 360.) * 360.;
if (a < 0) a += 360;
} }
//! \~english Returns an angle normalized to the `[0; 360]` degree range. //! \~english Returns an angle normalized to the `[0; 360]` degree range.
@@ -327,10 +329,13 @@ double normalizedAngleDeg360(T a) {
//! \~russian Нормализует угол к диапазону `[-180; 180]` градусов на месте. //! \~russian Нормализует угол к диапазону `[-180; 180]` градусов на месте.
template<typename T> template<typename T>
void normalizeAngleDeg180(T & a) { void normalizeAngleDeg180(T & a) {
while (a < -180.) if (std::isnan(a) || std::isinf(a)) {
a += 360.; a = 0.;
while (a > 180.) return;
a -= 360.; }
a -= std::floor(a / 360.) * 360.;
if (a < -180) a += 360;
if (a >= 180) a -= 360;
} }
//! \~english Returns an angle normalized to the `[-180; 180]` degree range. //! \~english Returns an angle normalized to the `[-180; 180]` degree range.