From 800eb75e28eb68a306f6b6857026f81653735efc Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Sat, 14 Dec 2024 12:40:25 +0100 Subject: [PATCH] improved rounding of discrete angles --- Angle.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Angle.cpp b/Angle.cpp index 7bf8bc2..3c02710 100644 --- a/Angle.cpp +++ b/Angle.cpp @@ -67,7 +67,7 @@ template <> float AngleOf::InRadians() const { template <> AngleOf AngleOf::Degrees(float angle) { // map float [-180..180) to integer [-32768..32767] - signed short value = (signed short)(angle / 360.0F * 65536.0F); + signed short value = (signed short)roundf(angle / 360.0F * 65536.0F); return AngleOf(value); } @@ -76,7 +76,7 @@ template <> AngleOf AngleOf::Radians(float angle) { return AngleOf(0); // map float [-PI..PI) to integer [-32768..32767] - signed short value = (signed short)(angle / pi * 32768.0F); + signed short value = (signed short)roundf(angle / pi * 32768.0F); return AngleOf(value); } @@ -94,7 +94,7 @@ template <> float AngleOf::InRadians() const { template <> AngleOf AngleOf::Degrees(float angle) { // map float [-180..180) to integer [-128..127) - signed char value = (signed char)(angle / 360.0F * 256.0F); + signed char value = (signed char)roundf(angle / 360.0F * 256.0F); return AngleOf(value); } @@ -103,7 +103,7 @@ template <> AngleOf AngleOf::Radians(float angle) { return AngleOf(0); // map float [-pi..pi) to integer [-128..127) - signed char value = (signed char)(angle / pi * 128.0f); + signed char value = (signed char)roundf(angle / pi * 128.0f); return AngleOf(value); }