From 8056765be0a6e54e7a1128fe984b7f2922e67261 Mon Sep 17 00:00:00 2001 From: Nathan24zz Date: Mon, 19 Apr 2021 14:13:14 +0700 Subject: [PATCH 1/3] Add Delta Angle Equation --- include/keisan/angle.hpp | 3 +++ src/angle.cpp | 11 +++++++++++ test/angle_test.cpp | 21 +++++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/include/keisan/angle.hpp b/include/keisan/angle.hpp index 6a8b12b..6ef01d8 100644 --- a/include/keisan/angle.hpp +++ b/include/keisan/angle.hpp @@ -34,6 +34,9 @@ double wrap_deg(double value); double rad_to_deg(double value); double deg_to_rad(double value); +double delta_deg(double value1, double value2); +double delta_rad(double value1, double value2); + } // namespace keisan #endif // KEISAN__ANGLE_HPP_ diff --git a/src/angle.cpp b/src/angle.cpp index 51d19d5..36d995e 100644 --- a/src/angle.cpp +++ b/src/angle.cpp @@ -20,6 +20,7 @@ #include #include +#include namespace keisan { @@ -44,4 +45,14 @@ double deg_to_rad(double value) return wrap_rad(scale_number(value, 180.0, pi)); } +double delta_deg(double value1, double value2) +{ + return std::abs(wrap_deg(value1 - value2)); +} + +double delta_rad(double value1, double value2) +{ + return std::abs(wrap_rad(value1 - value2)); +} + } // namespace keisan diff --git a/test/angle_test.cpp b/test/angle_test.cpp index 8f49663..cc27a34 100644 --- a/test/angle_test.cpp +++ b/test/angle_test.cpp @@ -60,3 +60,24 @@ TEST(DegToRadTest, ConversionTest) { keisan::deg_to_rad(180.0 * 6.2), keisan::pi * 0.2); } + +TEST(DeltaDegTest, OverflowTest) { + ASSERT_DOUBLE_EQ( + keisan::delta_deg(100.0, -150.0), + 110.0); + + ASSERT_DOUBLE_EQ( + keisan::delta_deg(-100.0, 150.0), + 110.0); +} + +TEST(DeltaRadTest, OverflowTest) +{ + ASSERT_DOUBLE_EQ( + keisan::delta_rad(keisan::pi * 0.6, keisan::pi * -0.7), + keisan::pi * 0.7); + + ASSERT_DOUBLE_EQ( + keisan::delta_rad(keisan::pi * -0.6, keisan::pi * 0.7), + keisan::pi * 0.7); +} From 84829ded3bf827196b8a126b308d736dcc54b55d Mon Sep 17 00:00:00 2001 From: Nathan24zz Date: Mon, 19 Apr 2021 17:05:02 +0700 Subject: [PATCH 2/3] Minor Changes --- src/angle.cpp | 23 ++++++++++++++++++++--- test/angle_test.cpp | 20 ++++++++++++++++++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/angle.cpp b/src/angle.cpp index 36d995e..62cb006 100644 --- a/src/angle.cpp +++ b/src/angle.cpp @@ -20,7 +20,6 @@ #include #include -#include namespace keisan { @@ -47,12 +46,30 @@ double deg_to_rad(double value) double delta_deg(double value1, double value2) { - return std::abs(wrap_deg(value1 - value2)); + double result; + double temp = value1 - value2; + + if (abs(temp) > 180) { + result = -1 * temp; + } else { + result = temp; + } + + return wrap_deg(result); } double delta_rad(double value1, double value2) { - return std::abs(wrap_rad(value1 - value2)); + double result; + double temp = value1 - value2; + + if (abs(temp) > keisan::pi) { + result = -1 * temp; + } else { + result = temp; + } + + return wrap_rad(result); } } // namespace keisan diff --git a/test/angle_test.cpp b/test/angle_test.cpp index cc27a34..68c8507 100644 --- a/test/angle_test.cpp +++ b/test/angle_test.cpp @@ -62,22 +62,38 @@ TEST(DegToRadTest, ConversionTest) { } TEST(DeltaDegTest, OverflowTest) { + ASSERT_DOUBLE_EQ( + keisan::delta_deg(30.0, -40.0), + 70.0); + + ASSERT_DOUBLE_EQ( + keisan::delta_deg(-30.0, 40.0), + -70.0); + ASSERT_DOUBLE_EQ( keisan::delta_deg(100.0, -150.0), 110.0); ASSERT_DOUBLE_EQ( keisan::delta_deg(-100.0, 150.0), - 110.0); + -110.0); } TEST(DeltaRadTest, OverflowTest) { + ASSERT_DOUBLE_EQ( + keisan::delta_rad(keisan::pi * 0.1, keisan::pi * -0.3), + keisan::pi * 0.4); + + ASSERT_DOUBLE_EQ( + keisan::delta_rad(keisan::pi * -0.1, keisan::pi * 0.3), + keisan::pi * -0.4); + ASSERT_DOUBLE_EQ( keisan::delta_rad(keisan::pi * 0.6, keisan::pi * -0.7), keisan::pi * 0.7); ASSERT_DOUBLE_EQ( keisan::delta_rad(keisan::pi * -0.6, keisan::pi * 0.7), - keisan::pi * 0.7); + keisan::pi * -0.7); } From 020489564a8363a78300cd5999a4e8a147022b48 Mon Sep 17 00:00:00 2001 From: Nathan24zz Date: Mon, 19 Apr 2021 22:00:27 +0700 Subject: [PATCH 3/3] Another minor changes --- src/angle.cpp | 22 ++-------------------- test/angle_test.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/src/angle.cpp b/src/angle.cpp index 62cb006..adc8b8c 100644 --- a/src/angle.cpp +++ b/src/angle.cpp @@ -46,30 +46,12 @@ double deg_to_rad(double value) double delta_deg(double value1, double value2) { - double result; - double temp = value1 - value2; - - if (abs(temp) > 180) { - result = -1 * temp; - } else { - result = temp; - } - - return wrap_deg(result); + return wrap_deg(value2 - value1); } double delta_rad(double value1, double value2) { - double result; - double temp = value1 - value2; - - if (abs(temp) > keisan::pi) { - result = -1 * temp; - } else { - result = temp; - } - - return wrap_rad(result); + return wrap_rad(value2 - value1); } } // namespace keisan diff --git a/test/angle_test.cpp b/test/angle_test.cpp index 68c8507..31e6354 100644 --- a/test/angle_test.cpp +++ b/test/angle_test.cpp @@ -63,11 +63,11 @@ TEST(DegToRadTest, ConversionTest) { TEST(DeltaDegTest, OverflowTest) { ASSERT_DOUBLE_EQ( - keisan::delta_deg(30.0, -40.0), + keisan::delta_deg(-30.0, 40.0), 70.0); ASSERT_DOUBLE_EQ( - keisan::delta_deg(-30.0, 40.0), + keisan::delta_deg(30.0, -40.0), -70.0); ASSERT_DOUBLE_EQ( @@ -82,11 +82,11 @@ TEST(DeltaDegTest, OverflowTest) { TEST(DeltaRadTest, OverflowTest) { ASSERT_DOUBLE_EQ( - keisan::delta_rad(keisan::pi * 0.1, keisan::pi * -0.3), + keisan::delta_rad(keisan::pi * -0.1, keisan::pi * 0.3), keisan::pi * 0.4); ASSERT_DOUBLE_EQ( - keisan::delta_rad(keisan::pi * -0.1, keisan::pi * 0.3), + keisan::delta_rad(keisan::pi * 0.1, keisan::pi * -0.3), keisan::pi * -0.4); ASSERT_DOUBLE_EQ(