diff --git a/Direction.h b/Direction.h index b614a04..4ea5f0f 100644 --- a/Direction.h +++ b/Direction.h @@ -24,11 +24,6 @@ struct Vector3; /// ranges. template class DirectionOf { public: - /// @brief horizontal angle, range= (-180..180] - AngleOf horizontal; - /// @brief vertical angle, range in degrees = (-90..90] - AngleOf vertical; - /// @brief Create a new direction with zero angles DirectionOf(); /// @brief Create a new direction @@ -36,6 +31,11 @@ public: /// @param vertical The vertical angle. DirectionOf(AngleOf horizontal, AngleOf vertical); + /// @brief horizontal angle, range= (-180..180] + AngleOf horizontal; + /// @brief vertical angle, range in degrees = (-90..90] + AngleOf vertical; + /// @brief Convert the direction into a carthesian vector /// @return The carthesian vector corresponding to this direction. Vector3 ToVector3() const; diff --git a/test/Vector2_test.cc b/test/Vector2_test.cc index 3afeb4b..2c9761c 100644 --- a/test/Vector2_test.cc +++ b/test/Vector2_test.cc @@ -34,32 +34,26 @@ TEST(Vector2, FromPolar) { EXPECT_FLOAT_EQ(r.y, 0.0F) << "FromPolar(0 0)"; } -TEST(Vector2, Magnitude) { - Vector2 v = Vector2(1, 2); - float m = 0; +TEST(Vector2, Equality) { + Vector2 v1 = Vector2(4, 5); + Vector2 v2 = Vector2(1, 2); + bool r = false; - m = v.magnitude(); - EXPECT_FLOAT_EQ(m, 2.236068F) << "v.magnitude 1 2"; + r = v1 == v2; + EXPECT_FALSE(r) << "4 5 == 1 2"; - m = Vector2::Magnitude(v); - EXPECT_FLOAT_EQ(m, 2.236068F) << "Vector2::Magnitude 1 2"; - - v = Vector2(-1, -2); - m = v.magnitude(); - EXPECT_FLOAT_EQ(m, 2.236068F) << "v.magnitude -1 -2"; - - v = Vector2(0, 0); - m = v.magnitude(); - EXPECT_FLOAT_EQ(m, 0) << "v.magnitude 0 0 "; + v2 = Vector2(4, 5); + r = v1 == v2; + EXPECT_TRUE(r) << "4 5 == 1 2"; if (std::numeric_limits::is_iec559) { - v = Vector2(FLOAT_INFINITY, FLOAT_INFINITY); - m = v.magnitude(); - EXPECT_FLOAT_EQ(m, FLOAT_INFINITY) << "v.magnitude INFINITY INFINITY "; + v2 = Vector2(FLOAT_INFINITY, FLOAT_INFINITY); + r = v1 == v2; + EXPECT_FALSE(r) << "4 5 == INFINITY INFINITY"; - v = Vector2(-FLOAT_INFINITY, -FLOAT_INFINITY); - m = v.magnitude(); - EXPECT_FLOAT_EQ(m, FLOAT_INFINITY) << "v.magnitude -INFINITY -INFINITY "; + v1 = Vector2(-FLOAT_INFINITY, -FLOAT_INFINITY); + r = v1 == v2; + EXPECT_FALSE(r) << "-INFINITY -INFINITY == INFINITY INFINITY"; } } @@ -92,6 +86,35 @@ TEST(Vector2, SqrMagnitude) { } } +TEST(Vector2, Magnitude) { + Vector2 v = Vector2(1, 2); + float m = 0; + + m = v.magnitude(); + EXPECT_FLOAT_EQ(m, 2.236068F) << "v.magnitude 1 2"; + + m = Vector2::Magnitude(v); + EXPECT_FLOAT_EQ(m, 2.236068F) << "Vector2::Magnitude 1 2"; + + v = Vector2(-1, -2); + m = v.magnitude(); + EXPECT_FLOAT_EQ(m, 2.236068F) << "v.magnitude -1 -2"; + + v = Vector2(0, 0); + m = v.magnitude(); + EXPECT_FLOAT_EQ(m, 0) << "v.magnitude 0 0 "; + + if (std::numeric_limits::is_iec559) { + v = Vector2(FLOAT_INFINITY, FLOAT_INFINITY); + m = v.magnitude(); + EXPECT_FLOAT_EQ(m, FLOAT_INFINITY) << "v.magnitude INFINITY INFINITY "; + + v = Vector2(-FLOAT_INFINITY, -FLOAT_INFINITY); + m = v.magnitude(); + EXPECT_FLOAT_EQ(m, FLOAT_INFINITY) << "v.magnitude -INFINITY -INFINITY "; + } +} + TEST(Vector2, Normalize) { bool r = false; @@ -311,56 +334,6 @@ TEST(Vector2, Divide) { } } -TEST(Vector2, Dot) { - Vector2 v1 = Vector2(4, 5); - Vector2 v2 = Vector2(1, 2); - float f = 0; - - f = Vector2::Dot(v1, v2); - EXPECT_FLOAT_EQ(f, 14) << "Dot(4 5, 1 2)"; - - v2 = Vector2(-1, -2); - f = Vector2::Dot(v1, v2); - EXPECT_FLOAT_EQ(f, -14) << "Dot(4 5, -1 -2)"; - - v2 = Vector2(0, 0); - f = Vector2::Dot(v1, v2); - EXPECT_FLOAT_EQ(f, 0) << "Dot(4 5, 0 0)"; - - if (std::numeric_limits::is_iec559) { - v2 = Vector2(FLOAT_INFINITY, FLOAT_INFINITY); - f = Vector2::Dot(v1, v2); - EXPECT_FLOAT_EQ(f, FLOAT_INFINITY) << "Dot(4 5, INFINITY INFINITY)"; - - v2 = Vector2(-FLOAT_INFINITY, -FLOAT_INFINITY); - f = Vector2::Dot(v1, v2); - EXPECT_FLOAT_EQ(f, -FLOAT_INFINITY) << "Dot(4 5, -INFINITY -INFINITY)"; - } -} - -TEST(Vector2, Equality) { - Vector2 v1 = Vector2(4, 5); - Vector2 v2 = Vector2(1, 2); - bool r = false; - - r = v1 == v2; - EXPECT_FALSE(r) << "4 5 == 1 2"; - - v2 = Vector2(4, 5); - r = v1 == v2; - EXPECT_TRUE(r) << "4 5 == 1 2"; - - if (std::numeric_limits::is_iec559) { - v2 = Vector2(FLOAT_INFINITY, FLOAT_INFINITY); - r = v1 == v2; - EXPECT_FALSE(r) << "4 5 == INFINITY INFINITY"; - - v1 = Vector2(-FLOAT_INFINITY, -FLOAT_INFINITY); - r = v1 == v2; - EXPECT_FALSE(r) << "-INFINITY -INFINITY == INFINITY INFINITY"; - } -} - TEST(Vector2, Distance) { Vector2 v1 = Vector2(4, 5); Vector2 v2 = Vector2(1, 2); @@ -388,6 +361,33 @@ TEST(Vector2, Distance) { } } +TEST(Vector2, Dot) { + Vector2 v1 = Vector2(4, 5); + Vector2 v2 = Vector2(1, 2); + float f = 0; + + f = Vector2::Dot(v1, v2); + EXPECT_FLOAT_EQ(f, 14) << "Dot(4 5, 1 2)"; + + v2 = Vector2(-1, -2); + f = Vector2::Dot(v1, v2); + EXPECT_FLOAT_EQ(f, -14) << "Dot(4 5, -1 -2)"; + + v2 = Vector2(0, 0); + f = Vector2::Dot(v1, v2); + EXPECT_FLOAT_EQ(f, 0) << "Dot(4 5, 0 0)"; + + if (std::numeric_limits::is_iec559) { + v2 = Vector2(FLOAT_INFINITY, FLOAT_INFINITY); + f = Vector2::Dot(v1, v2); + EXPECT_FLOAT_EQ(f, FLOAT_INFINITY) << "Dot(4 5, INFINITY INFINITY)"; + + v2 = Vector2(-FLOAT_INFINITY, -FLOAT_INFINITY); + f = Vector2::Dot(v1, v2); + EXPECT_FLOAT_EQ(f, -FLOAT_INFINITY) << "Dot(4 5, -INFINITY -INFINITY)"; + } +} + TEST(Vector2, Angle) { Vector2 v1 = Vector2(4, 5); Vector2 v2 = Vector2(1, 2);