Added Angle comparison

This commit is contained in:
Pascal Serrarens 2024-09-06 12:36:22 +02:00
parent 6b3bcfc391
commit 6a1d0434cf
3 changed files with 57 additions and 4 deletions

View File

@ -96,9 +96,29 @@ float AngleOf<float>::ToFloat() const {
// template <>
// AngleOf<float> AngleOf<float>::Deg2Rad = (pi * 2) / 360.0f;
template <>
bool AngleOf<float>::operator==(AngleOf<float> a) {
return this->ToFloat() == a.ToFloat();
template <typename T>
bool AngleOf<T>::operator==(AngleOf<T> a) {
return this->value == a.value;
}
template <typename T>
bool AngleOf<T>::operator>(AngleOf<T> a) {
return this->value > a.value;
}
template <typename T>
bool AngleOf<T>::operator>=(AngleOf<T> a) {
return this->value >= a.value;
}
template <typename T>
bool AngleOf<T>::operator<(AngleOf<T> a) {
return this->value < a.value;
}
template <typename T>
bool AngleOf<T>::operator<=(AngleOf<T> a) {
return this->value <= a.value;
}
template <>

View File

@ -28,6 +28,10 @@ class AngleOf {
static AngleOf<T> pi;
bool operator==(AngleOf<T> a);
bool operator>(AngleOf<T> a);
bool operator>=(AngleOf<T> a);
bool operator<(AngleOf<T> a);
bool operator<=(AngleOf<T> a);
AngleOf<T> operator-() const;
AngleOf<T> operator-(const AngleOf<T>& a) const;
@ -61,7 +65,8 @@ class AngleOf {
};
using Angle = AngleOf<float>;
// using Angle = AngleOf<signed short>;
using AngleSingle = AngleOf<float>;
using Angle16 = AngleOf<signed short>;
} // namespace LinearAlgebra
} // namespace Passer

View File

@ -8,6 +8,34 @@
#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
TEST(Angle16, Compare) {
Angle16 a = Angle16(45);
bool r = false;
r = a > Angle16(0);
EXPECT_TRUE(r) << "45 > 0";
r = a > Angle16(90);
EXPECT_FALSE(r) << "45 > 90";
r = a > Angle16(-90);
EXPECT_TRUE(r) << "45 > -90";
}
TEST(AngleSingle, Compare) {
AngleSingle a = AngleSingle(45);
bool r = false;
r = a > AngleSingle(0);
EXPECT_TRUE(r) << "45 > 0";
r = a > AngleSingle(90);
EXPECT_FALSE(r) << "45 > 90";
r = a > AngleSingle(-90);
EXPECT_TRUE(r) << "45 > -90";
}
TEST(Angle, Normalize) {
Angle r = 0;