Compare commits
1 Commits
Experiment
...
main
Author | SHA1 | Date | |
---|---|---|---|
![]() |
54634f0582 |
10
Direction.h
10
Direction.h
@ -24,11 +24,6 @@ struct Vector3;
|
|||||||
/// ranges.
|
/// ranges.
|
||||||
template <typename T> class DirectionOf {
|
template <typename T> class DirectionOf {
|
||||||
public:
|
public:
|
||||||
/// @brief horizontal angle, range= (-180..180]
|
|
||||||
AngleOf<T> horizontal;
|
|
||||||
/// @brief vertical angle, range in degrees = (-90..90]
|
|
||||||
AngleOf<T> vertical;
|
|
||||||
|
|
||||||
/// @brief Create a new direction with zero angles
|
/// @brief Create a new direction with zero angles
|
||||||
DirectionOf<T>();
|
DirectionOf<T>();
|
||||||
/// @brief Create a new direction
|
/// @brief Create a new direction
|
||||||
@ -36,6 +31,11 @@ public:
|
|||||||
/// @param vertical The vertical angle.
|
/// @param vertical The vertical angle.
|
||||||
DirectionOf<T>(AngleOf<T> horizontal, AngleOf<T> vertical);
|
DirectionOf<T>(AngleOf<T> horizontal, AngleOf<T> vertical);
|
||||||
|
|
||||||
|
/// @brief horizontal angle, range= (-180..180]
|
||||||
|
AngleOf<T> horizontal;
|
||||||
|
/// @brief vertical angle, range in degrees = (-90..90]
|
||||||
|
AngleOf<T> vertical;
|
||||||
|
|
||||||
/// @brief Convert the direction into a carthesian vector
|
/// @brief Convert the direction into a carthesian vector
|
||||||
/// @return The carthesian vector corresponding to this direction.
|
/// @return The carthesian vector corresponding to this direction.
|
||||||
Vector3 ToVector3() const;
|
Vector3 ToVector3() const;
|
||||||
|
@ -34,32 +34,26 @@ TEST(Vector2, FromPolar) {
|
|||||||
EXPECT_FLOAT_EQ(r.y, 0.0F) << "FromPolar(0 0)";
|
EXPECT_FLOAT_EQ(r.y, 0.0F) << "FromPolar(0 0)";
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Vector2, Magnitude) {
|
TEST(Vector2, Equality) {
|
||||||
Vector2 v = Vector2(1, 2);
|
Vector2 v1 = Vector2(4, 5);
|
||||||
float m = 0;
|
Vector2 v2 = Vector2(1, 2);
|
||||||
|
bool r = false;
|
||||||
|
|
||||||
m = v.magnitude();
|
r = v1 == v2;
|
||||||
EXPECT_FLOAT_EQ(m, 2.236068F) << "v.magnitude 1 2";
|
EXPECT_FALSE(r) << "4 5 == 1 2";
|
||||||
|
|
||||||
m = Vector2::Magnitude(v);
|
v2 = Vector2(4, 5);
|
||||||
EXPECT_FLOAT_EQ(m, 2.236068F) << "Vector2::Magnitude 1 2";
|
r = v1 == v2;
|
||||||
|
EXPECT_TRUE(r) << "4 5 == 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<float>::is_iec559) {
|
if (std::numeric_limits<float>::is_iec559) {
|
||||||
v = Vector2(FLOAT_INFINITY, FLOAT_INFINITY);
|
v2 = Vector2(FLOAT_INFINITY, FLOAT_INFINITY);
|
||||||
m = v.magnitude();
|
r = v1 == v2;
|
||||||
EXPECT_FLOAT_EQ(m, FLOAT_INFINITY) << "v.magnitude INFINITY INFINITY ";
|
EXPECT_FALSE(r) << "4 5 == INFINITY INFINITY";
|
||||||
|
|
||||||
v = Vector2(-FLOAT_INFINITY, -FLOAT_INFINITY);
|
v1 = Vector2(-FLOAT_INFINITY, -FLOAT_INFINITY);
|
||||||
m = v.magnitude();
|
r = v1 == v2;
|
||||||
EXPECT_FLOAT_EQ(m, FLOAT_INFINITY) << "v.magnitude -INFINITY -INFINITY ";
|
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<float>::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) {
|
TEST(Vector2, Normalize) {
|
||||||
bool r = false;
|
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<float>::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<float>::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) {
|
TEST(Vector2, Distance) {
|
||||||
Vector2 v1 = Vector2(4, 5);
|
Vector2 v1 = Vector2(4, 5);
|
||||||
Vector2 v2 = Vector2(1, 2);
|
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<float>::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) {
|
TEST(Vector2, Angle) {
|
||||||
Vector2 v1 = Vector2(4, 5);
|
Vector2 v1 = Vector2(4, 5);
|
||||||
Vector2 v2 = Vector2(1, 2);
|
Vector2 v2 = Vector2(1, 2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user