diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index 31ea6daeb..26bccdb36 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -47,10 +47,12 @@ namespace Nz Angle& Set(const Angle& ang); template Angle& Set(const Angle& ang); - Angle ToDegrees() const; + T ToDegrees() const; + Angle ToDegreeAngle() const; EulerAngles ToEulerAngles() const; Quaternion ToQuaternion() const; - Angle ToRadians() const; + T ToRadians() const; + Angle ToRadianAngle() const; String ToString() const; Angle& operator=(const Angle&) = default; diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index b0c52c5a6..78b1d845d 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -164,7 +164,7 @@ namespace Nz template T Angle::GetCos() const { - return std::cos(ToRadians().angle); + return std::cos(ToRadianAngle().angle); } /*! @@ -176,7 +176,7 @@ namespace Nz template T Angle::GetSin() const { - return std::sin(ToRadians().angle); + return std::sin(ToRadianAngle().angle); } /*! @@ -191,7 +191,7 @@ namespace Nz std::pair Angle::GetSinCos() const { T sin, cos; - Detail::SinCos(ToRadians().angle, &sin, &cos); + Detail::SinCos(ToRadianAngle().angle, &sin, &cos); return std::make_pair(sin, cos); } @@ -205,7 +205,7 @@ namespace Nz template T Angle::GetTan() const { - return std::tan(ToRadians().angle); + return std::tan(ToRadianAngle().angle); } /*! @@ -289,14 +289,24 @@ namespace Nz return *this; } + /*! + * \brief Returns the degree angle that is equivalent to this one + * \return Equivalent degree angle value + */ + template + T Angle::ToDegrees() const + { + return Detail::AngleUtils::ToDegrees(angle); + } + /*! * \brief Returns the degree angle that is equivalent to this one * \return Equivalent degree angle */ template - Angle Angle::ToDegrees() const + Angle Angle::ToDegreeAngle() const { - return DegreeAngle(Detail::AngleUtils::ToDegrees(angle)); + return DegreeAngle(ToDegrees()); } /*! @@ -308,7 +318,7 @@ namespace Nz template EulerAngles Angle::ToEulerAngles() const { - return EulerAngles(0, 0, ToDegrees().angle); + return EulerAngles(0, 0, ToDegreeAngle().angle); } /*! @@ -327,14 +337,24 @@ namespace Nz return Quaternion(sincos.second, 0, 0, sincos.first); } + /*! + * \brief Returns the radian angle that is equivalent to this angle + * \return Equivalent radian angle value + */ + template + T Angle::ToRadians() const + { + return Detail::AngleUtils::ToRadians(angle); + } + /*! * \brief Returns the radian angle that is equivalent to this angle * \return Equivalent radian angle */ template - Angle Angle::ToRadians() const + Angle Angle::ToRadianAngle() const { - return RadianAngle(Detail::AngleUtils::ToRadians(angle)); + return RadianAngle(ToRadians()); } /*! diff --git a/tests/Engine/Math/Angle.cpp b/tests/Engine/Math/Angle.cpp index 3b5346c06..7eddb3d3e 100644 --- a/tests/Engine/Math/Angle.cpp +++ b/tests/Engine/Math/Angle.cpp @@ -11,7 +11,7 @@ SCENARIO("Angle", "[MATH][ANGLE]") WHEN("We convert it to degrees") { - Nz::DegreeAnglef copyAngle = angle.ToDegrees(); + Nz::DegreeAnglef copyAngle = angle.ToDegreeAngle(); THEN("It should compare to itself") { @@ -28,7 +28,7 @@ SCENARIO("Angle", "[MATH][ANGLE]") Nz::RadianAnglef expectedResult(float(M_PI_2)); CHECK(radAngle == expectedResult); - CHECK(angle.ToRadians() == expectedResult); + CHECK(angle.ToRadianAngle() == expectedResult); } } @@ -110,7 +110,7 @@ SCENARIO("Angle", "[MATH][ANGLE]") WHEN("We convert it to radians") { - Nz::RadianAnglef copyAngle = angle.ToRadians(); + Nz::RadianAnglef copyAngle = angle.ToRadianAngle(); THEN("It should compare to itself") { @@ -127,7 +127,7 @@ SCENARIO("Angle", "[MATH][ANGLE]") Nz::DegreeAnglef expectedResult(-180.f); CHECK(degAngle == expectedResult); - CHECK(angle.ToDegrees() == expectedResult); + CHECK(angle.ToDegreeAngle() == expectedResult); } }