Add first Spherical Unit test
This commit is contained in:
parent
dc601a1746
commit
0cbef79a85
@ -43,6 +43,7 @@ else()
|
||||
"test/Vector3_test.cc"
|
||||
"test/Quaternion_test.cc"
|
||||
"test/Matrix_test.cc"
|
||||
"test/Spherical_test.cc"
|
||||
)
|
||||
target_link_libraries(
|
||||
VectorAlgebraTest
|
||||
|
@ -32,9 +32,9 @@ Spherical::Spherical(float distance, Angle horizontalAngle, Angle verticalAngle)
|
||||
|
||||
Spherical::Spherical(Vector3 v) {
|
||||
float signZ = (v.z >= 0) - (v.z < 0);
|
||||
horizontalAngle =
|
||||
verticalAngle =
|
||||
atan2(v.y, signZ * sqrt(v.z * v.z + v.x * v.x)) * Angle::Rad2Deg;
|
||||
verticalAngle = -atan2(v.x, sqrt(v.z * v.z + v.y * v.y)) * Angle::Rad2Deg;
|
||||
horizontalAngle = atan2(v.x, sqrt(v.z * v.z + v.y * v.y)) * Angle::Rad2Deg;
|
||||
distance = v.magnitude();
|
||||
}
|
||||
|
||||
|
32
test/Spherical_test.cc
Normal file
32
test/Spherical_test.cc
Normal file
@ -0,0 +1,32 @@
|
||||
#if GTEST
|
||||
#include <gtest/gtest.h>
|
||||
#include <limits>
|
||||
#include <math.h>
|
||||
|
||||
#include "Spherical.h"
|
||||
|
||||
#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
|
||||
|
||||
TEST(Spherical, FromVector3) {
|
||||
Vector3 v = Vector3(0, 0, 1);
|
||||
Spherical s = Spherical::Spherical(v);
|
||||
|
||||
EXPECT_FLOAT_EQ(s.distance, 1.0F) << "s.distance 0 0 1";
|
||||
EXPECT_FLOAT_EQ(s.horizontalAngle, 0.0F) << "s.hor 0 0 1";
|
||||
EXPECT_FLOAT_EQ(s.verticalAngle, 0.0F) << "s.vert 0 0 1";
|
||||
|
||||
v = Vector3(0, 1, 0);
|
||||
s = Spherical::Spherical(v);
|
||||
|
||||
EXPECT_FLOAT_EQ(s.distance, 1.0F) << "s.distance 0 1 0";
|
||||
EXPECT_FLOAT_EQ(s.horizontalAngle, 0.0F) << "s.hor 0 1 0";
|
||||
EXPECT_FLOAT_EQ(s.verticalAngle, 90.0F) << "s.vert 0 1 0";
|
||||
|
||||
v = Vector3(1, 0, 0);
|
||||
s = Spherical::Spherical(v);
|
||||
|
||||
EXPECT_FLOAT_EQ(s.distance, 1.0F) << "s.distance 1 0 0";
|
||||
EXPECT_FLOAT_EQ(s.horizontalAngle, 90.0F) << "s.hor 1 0 0";
|
||||
EXPECT_FLOAT_EQ(s.verticalAngle, 0.0F) << "s.vert 1 0 0";
|
||||
}
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user