diff --git a/include/SFML/System/Angle.hpp b/include/SFML/System/Angle.hpp index 2af146632..12aa32ed2 100644 --- a/include/SFML/System/Angle.hpp +++ b/include/SFML/System/Angle.hpp @@ -144,20 +144,20 @@ private: friend constexpr Angle radians(float angle); //////////////////////////////////////////////////////////// - /// \brief Construct from a number of degrees + /// \brief Construct from a number of radians /// /// This function is internal. To construct angle values, /// use sf::radians or sf::degrees instead. /// - /// \param degrees Angle in degrees + /// \param radians Angle in radians /// //////////////////////////////////////////////////////////// - constexpr explicit Angle(float degrees); + constexpr explicit Angle(float radians); //////////////////////////////////////////////////////////// // Member data //////////////////////////////////////////////////////////// - float m_degrees{}; //!< Angle value stored as degrees + float m_radians{}; //!< Angle value stored as radians }; //////////////////////////////////////////////////////////// @@ -187,6 +187,7 @@ private: //////////////////////////////////////////////////////////// /// \relates Angle /// \brief Overload of == operator to compare two angle values +/// \note Does not automatically wrap the angle value /// /// \param left Left operand (an angle) /// \param right Right operand (an angle) @@ -199,6 +200,7 @@ private: //////////////////////////////////////////////////////////// /// \relates Angle /// \brief Overload of != operator to compare two angle values +/// \note Does not automatically wrap the angle value /// /// \param left Left operand (an angle) /// \param right Right operand (an angle) @@ -211,6 +213,7 @@ private: //////////////////////////////////////////////////////////// /// \relates Angle /// \brief Overload of < operator to compare two angle values +/// \note Does not automatically wrap the angle value /// /// \param left Left operand (an angle) /// \param right Right operand (an angle) @@ -223,6 +226,7 @@ private: //////////////////////////////////////////////////////////// /// \relates Angle /// \brief Overload of > operator to compare two angle values +/// \note Does not automatically wrap the angle value /// /// \param left Left operand (an angle) /// \param right Right operand (an angle) @@ -235,6 +239,7 @@ private: //////////////////////////////////////////////////////////// /// \relates Angle /// \brief Overload of <= operator to compare two angle values +/// \note Does not automatically wrap the angle value /// /// \param left Left operand (an angle) /// \param right Right operand (an angle) @@ -247,6 +252,7 @@ private: //////////////////////////////////////////////////////////// /// \relates Angle /// \brief Overload of >= operator to compare two angle values +/// \note Does not automatically wrap the angle value /// /// \param left Left operand (an angle) /// \param right Right operand (an angle) diff --git a/include/SFML/System/Angle.inl b/include/SFML/System/Angle.inl index 53b41d526..0a6abbc64 100644 --- a/include/SFML/System/Angle.inl +++ b/include/SFML/System/Angle.inl @@ -34,16 +34,14 @@ namespace sf { namespace priv { -constexpr float pi = 3.141592654f; +constexpr float pi = 3.141592654f; +constexpr float tau = pi * 2.f; constexpr float positiveRemainder(float a, float b) { - assert(b > 0.0f && "Cannot calculate remainder with non-positive divisor"); + assert(b > 0.f && "Cannot calculate remainder with non-positive divisor"); const float val = a - static_cast(static_cast(a / b)) * b; - if (val >= 0.f) - return val; - else - return val + b; + return val >= 0.f ? val : val + b; } } // namespace priv @@ -55,33 +53,33 @@ constexpr Angle::Angle() = default; //////////////////////////////////////////////////////////// constexpr float Angle::asDegrees() const { - return m_degrees; + return m_radians * (180.f / priv::pi); } //////////////////////////////////////////////////////////// constexpr float Angle::asRadians() const { - return m_degrees * (priv::pi / 180); + return m_radians; } //////////////////////////////////////////////////////////// constexpr Angle Angle::wrapSigned() const { - return degrees(priv::positiveRemainder(m_degrees + 180, 360) - 180); + return radians(priv::positiveRemainder(m_radians + priv::pi, priv::tau) - priv::pi); } //////////////////////////////////////////////////////////// constexpr Angle Angle::wrapUnsigned() const { - return degrees(priv::positiveRemainder(m_degrees, 360)); + return radians(priv::positiveRemainder(m_radians, priv::tau)); } //////////////////////////////////////////////////////////// -constexpr Angle::Angle(float degrees) : m_degrees(degrees) +constexpr Angle::Angle(float radians) : m_radians(radians) { } @@ -89,70 +87,70 @@ constexpr Angle::Angle(float degrees) : m_degrees(degrees) //////////////////////////////////////////////////////////// constexpr Angle degrees(float angle) { - return Angle(angle); + return Angle(angle * (priv::pi / 180.f)); } //////////////////////////////////////////////////////////// constexpr Angle radians(float angle) { - return Angle(angle * (180 / priv::pi)); + return Angle(angle); } //////////////////////////////////////////////////////////// constexpr bool operator==(Angle left, Angle right) { - return left.asDegrees() == right.asDegrees(); + return left.asRadians() == right.asRadians(); } //////////////////////////////////////////////////////////// constexpr bool operator!=(Angle left, Angle right) { - return left.asDegrees() != right.asDegrees(); + return left.asRadians() != right.asRadians(); } //////////////////////////////////////////////////////////// constexpr bool operator<(Angle left, Angle right) { - return left.asDegrees() < right.asDegrees(); + return left.asRadians() < right.asRadians(); } //////////////////////////////////////////////////////////// constexpr bool operator>(Angle left, Angle right) { - return left.asDegrees() > right.asDegrees(); + return left.asRadians() > right.asRadians(); } //////////////////////////////////////////////////////////// constexpr bool operator<=(Angle left, Angle right) { - return left.asDegrees() <= right.asDegrees(); + return left.asRadians() <= right.asRadians(); } //////////////////////////////////////////////////////////// constexpr bool operator>=(Angle left, Angle right) { - return left.asDegrees() >= right.asDegrees(); + return left.asRadians() >= right.asRadians(); } //////////////////////////////////////////////////////////// constexpr Angle operator-(Angle right) { - return degrees(-right.asDegrees()); + return radians(-right.asRadians()); } //////////////////////////////////////////////////////////// constexpr Angle operator+(Angle left, Angle right) { - return degrees(left.asDegrees() + right.asDegrees()); + return radians(left.asRadians() + right.asRadians()); } @@ -166,7 +164,7 @@ constexpr Angle& operator+=(Angle& left, Angle right) //////////////////////////////////////////////////////////// constexpr Angle operator-(Angle left, Angle right) { - return degrees(left.asDegrees() - right.asDegrees()); + return radians(left.asRadians() - right.asRadians()); } @@ -180,7 +178,7 @@ constexpr Angle& operator-=(Angle& left, Angle right) //////////////////////////////////////////////////////////// constexpr Angle operator*(Angle left, float right) { - return degrees(left.asDegrees() * right); + return radians(left.asRadians() * right); } @@ -201,15 +199,15 @@ constexpr Angle& operator*=(Angle& left, float right) //////////////////////////////////////////////////////////// constexpr Angle operator/(Angle left, float right) { - assert(right != 0 && "Angle::operator/ cannot divide by 0"); - return degrees(left.asDegrees() / right); + assert(right != 0.f && "Angle::operator/ cannot divide by 0"); + return radians(left.asRadians() / right); } //////////////////////////////////////////////////////////// constexpr Angle& operator/=(Angle& left, float right) { - assert(right != 0 && "Angle::operator/= cannot divide by 0"); + assert(right != 0.f && "Angle::operator/= cannot divide by 0"); return left = left / right; } @@ -217,23 +215,23 @@ constexpr Angle& operator/=(Angle& left, float right) //////////////////////////////////////////////////////////// constexpr float operator/(Angle left, Angle right) { - assert(right.asDegrees() != 0 && "Angle::operator/ cannot divide by 0"); - return left.asDegrees() / right.asDegrees(); + assert(right.asRadians() != 0.f && "Angle::operator/ cannot divide by 0"); + return left.asRadians() / right.asRadians(); } //////////////////////////////////////////////////////////// constexpr Angle operator%(Angle left, Angle right) { - assert(right.asDegrees() != 0 && "Angle::operator% cannot modulus by 0"); - return degrees(priv::positiveRemainder(left.asDegrees(), right.asDegrees())); + assert(right.asRadians() != 0.f && "Angle::operator% cannot modulus by 0"); + return radians(priv::positiveRemainder(left.asRadians(), right.asRadians())); } //////////////////////////////////////////////////////////// constexpr Angle& operator%=(Angle& left, Angle right) { - assert(right.asDegrees() != 0 && "Angle::operator%= cannot modulus by 0"); + assert(right.asRadians() != 0.f && "Angle::operator%= cannot modulus by 0"); return left = left % right; } diff --git a/include/SFML/Window/Sensor.hpp b/include/SFML/Window/Sensor.hpp index 7662b4650..123ef358c 100644 --- a/include/SFML/Window/Sensor.hpp +++ b/include/SFML/Window/Sensor.hpp @@ -44,11 +44,11 @@ namespace sf::Sensor enum class Type { Accelerometer, //!< Measures the raw acceleration (m/s^2) - Gyroscope, //!< Measures the raw rotation rates (degrees/s) + Gyroscope, //!< Measures the raw rotation rates (radians/s) Magnetometer, //!< Measures the ambient magnetic field (micro-teslas) Gravity, //!< Measures the direction and intensity of gravity, independent of device acceleration (m/s^2) UserAcceleration, //!< Measures the direction and intensity of device acceleration, independent of the gravity (m/s^2) - Orientation //!< Measures the absolute 3D orientation (degrees) + Orientation //!< Measures the absolute 3D orientation (radians) }; // NOLINTNEXTLINE(readability-identifier-naming) diff --git a/src/SFML/Audio/AudioDevice.cpp b/src/SFML/Audio/AudioDevice.cpp index 700bae11b..dc8e45494 100644 --- a/src/SFML/Audio/AudioDevice.cpp +++ b/src/SFML/Audio/AudioDevice.cpp @@ -324,8 +324,8 @@ void AudioDevice::setCone(const Listener::Cone& cone) ma_engine_listener_set_cone(&*instance->m_engine, 0, - std::clamp(cone.innerAngle.asRadians(), 0.f, degrees(360).asRadians()), - std::clamp(cone.outerAngle.asRadians(), 0.f, degrees(360).asRadians()), + std::clamp(cone.innerAngle, Angle::Zero, degrees(360.f)).asRadians(), + std::clamp(cone.outerAngle, Angle::Zero, degrees(360.f)).asRadians(), cone.outerGain); } diff --git a/src/SFML/Audio/AudioDevice.hpp b/src/SFML/Audio/AudioDevice.hpp index 04981eaed..c2396ec62 100644 --- a/src/SFML/Audio/AudioDevice.hpp +++ b/src/SFML/Audio/AudioDevice.hpp @@ -231,7 +231,7 @@ private: Vector3f position{0, 0, 0}; Vector3f direction{0, 0, -1}; Vector3f velocity{0, 0, 0}; - Listener::Cone cone{degrees(360), degrees(360), 1}; + Listener::Cone cone{degrees(360.f), degrees(360.f), 1}; Vector3f upVector{0, 1, 0}; }; diff --git a/src/SFML/Audio/MiniaudioUtils.cpp b/src/SFML/Audio/MiniaudioUtils.cpp index d1c6383f7..8ea706494 100644 --- a/src/SFML/Audio/MiniaudioUtils.cpp +++ b/src/SFML/Audio/MiniaudioUtils.cpp @@ -63,8 +63,8 @@ struct SavedSettings float minGain{0.f}; float maxGain{1.f}; float rollOff{1.f}; - float innerAngle{degrees(360).asRadians()}; - float outerAngle{degrees(360).asRadians()}; + float innerAngle{degrees(360.f).asRadians()}; + float outerAngle{degrees(360.f).asRadians()}; float outerGain{0.f}; }; diff --git a/src/SFML/Audio/SoundSource.cpp b/src/SFML/Audio/SoundSource.cpp index 8f1b3dbdd..1b210d2ac 100644 --- a/src/SFML/Audio/SoundSource.cpp +++ b/src/SFML/Audio/SoundSource.cpp @@ -88,8 +88,8 @@ void SoundSource::setCone(const Cone& cone) { if (auto* sound = static_cast(getSound())) ma_sound_set_cone(sound, - std::clamp(cone.innerAngle, degrees(0), degrees(360)).asRadians(), - std::clamp(cone.outerAngle, degrees(0), degrees(360)).asRadians(), + std::clamp(cone.innerAngle, Angle::Zero, degrees(360.f)).asRadians(), + std::clamp(cone.outerAngle, Angle::Zero, degrees(360.f)).asRadians(), cone.outerGain); } diff --git a/src/SFML/Graphics/CircleShape.cpp b/src/SFML/Graphics/CircleShape.cpp index 4df41e516..7edb3eadb 100644 --- a/src/SFML/Graphics/CircleShape.cpp +++ b/src/SFML/Graphics/CircleShape.cpp @@ -71,7 +71,7 @@ std::size_t CircleShape::getPointCount() const //////////////////////////////////////////////////////////// Vector2f CircleShape::getPoint(std::size_t index) const { - const Angle angle = static_cast(index) / static_cast(m_pointCount) * degrees(360) - degrees(90); + const Angle angle = static_cast(index) / static_cast(m_pointCount) * degrees(360.f) - degrees(90.f); return Vector2f(m_radius, m_radius) + Vector2f(m_radius, angle); } diff --git a/src/SFML/Window/iOS/SensorImpl.mm b/src/SFML/Window/iOS/SensorImpl.mm index b6ef45944..1c86983b7 100644 --- a/src/SFML/Window/iOS/SensorImpl.mm +++ b/src/SFML/Window/iOS/SensorImpl.mm @@ -34,11 +34,6 @@ namespace { unsigned int deviceMotionEnabledCount = 0; - -float toDegrees(float radians) -{ - return sf::radians(radians).asDegrees(); -} } @@ -145,10 +140,10 @@ Vector3f SensorImpl::update() break; case Sensor::Type::Gyroscope: - // Rotation rates are given in rad/s, convert to deg/s - value.x = toDegrees(static_cast(manager.gyroData.rotationRate.x)); - value.y = toDegrees(static_cast(manager.gyroData.rotationRate.y)); - value.z = toDegrees(static_cast(manager.gyroData.rotationRate.z)); + // Rotation rates are given in rad/s + value.x = static_cast(manager.gyroData.rotationRate.x); + value.y = static_cast(manager.gyroData.rotationRate.y); + value.z = static_cast(manager.gyroData.rotationRate.z); break; case Sensor::Type::Magnetometer: @@ -166,10 +161,10 @@ Vector3f SensorImpl::update() break; case Sensor::Type::Orientation: - // Absolute rotation (Euler) angles are given in radians, convert to degrees - value.x = toDegrees(static_cast(manager.deviceMotion.attitude.yaw)); - value.y = toDegrees(static_cast(manager.deviceMotion.attitude.pitch)); - value.z = toDegrees(static_cast(manager.deviceMotion.attitude.roll)); + // Absolute rotation (Euler) angles are given in radians + value.x = static_cast(manager.deviceMotion.attitude.yaw); + value.y = static_cast(manager.deviceMotion.attitude.pitch); + value.z = static_cast(manager.deviceMotion.attitude.roll); break; default: diff --git a/test/Graphics/Transformable.test.cpp b/test/Graphics/Transformable.test.cpp index 9ed5e890e..b980fb282 100644 --- a/test/Graphics/Transformable.test.cpp +++ b/test/Graphics/Transformable.test.cpp @@ -34,11 +34,11 @@ TEST_CASE("[Graphics] sf::Transformable") CHECK(transformable.getPosition() == sf::Vector2f(3, 4)); transformable.setRotation(sf::degrees(3.14f)); - CHECK(transformable.getRotation() == sf::degrees(3.14f)); + CHECK(transformable.getRotation() == Approx(sf::degrees(3.14f))); transformable.setRotation(sf::degrees(540)); - CHECK(transformable.getRotation() == sf::degrees(180)); + CHECK(transformable.getRotation() == Approx(sf::degrees(180))); transformable.setRotation(sf::degrees(-72)); - CHECK(transformable.getRotation() == sf::degrees(288)); + CHECK(transformable.getRotation() == Approx(sf::degrees(288))); transformable.setScale({5, 6}); CHECK(transformable.getScale() == sf::Vector2f(5, 6)); @@ -102,15 +102,15 @@ TEST_CASE("[Graphics] sf::Transformable") sf::Transformable transformable; CHECK(transformable.getRotation() == sf::Angle::Zero); transformable.rotate(sf::degrees(15)); - CHECK(transformable.getRotation() == sf::degrees(15)); + CHECK(transformable.getRotation() == Approx(sf::degrees(15))); transformable.rotate(sf::degrees(360)); - CHECK(transformable.getRotation() == sf::degrees(15)); + CHECK(transformable.getRotation() == Approx(sf::degrees(15))); transformable.rotate(sf::degrees(-25)); - CHECK(transformable.getRotation() == sf::degrees(350)); + CHECK(transformable.getRotation() == Approx(sf::degrees(350))); transformable.rotate(sf::degrees(-720)); - CHECK(transformable.getRotation() == sf::degrees(350)); + CHECK(transformable.getRotation() == Approx(sf::degrees(350))); transformable.rotate(sf::degrees(-370)); - CHECK(transformable.getRotation() == sf::degrees(340)); + CHECK(transformable.getRotation() == Approx(sf::degrees(340))); } SECTION("scale()") diff --git a/test/Graphics/View.test.cpp b/test/Graphics/View.test.cpp index f9b3497d9..3cb829311 100644 --- a/test/Graphics/View.test.cpp +++ b/test/Graphics/View.test.cpp @@ -76,13 +76,13 @@ TEST_CASE("[Graphics] sf::View") { sf::View view; view.setRotation(sf::degrees(-345)); - CHECK(view.getRotation() == sf::degrees(15)); + CHECK(view.getRotation() == Approx(sf::degrees(15))); CHECK(view.getTransform() == Approx(sf::Transform(0.00193185f, 0.000517638f, -1.22474f, 0.000517638f, -0.00193185f, 0.707107f, 0, 0, 1))); CHECK(view.getInverseTransform() == Approx(sf::Transform(482.963f, 129.41f, 500, 129.41f, -482.963f, 500, 0, 0, 1))); view.setRotation(sf::degrees(400)); - CHECK(view.getRotation() == sf::degrees(40)); + CHECK(view.getRotation() == Approx(sf::degrees(40))); CHECK(view.getTransform() == Approx(sf::Transform(0.00153209f, 0.00128558f, -1.40883f, 0.00128558f, -0.00153209f, 0.123257f, 0, 0, 1))); CHECK(view.getInverseTransform() == @@ -140,7 +140,7 @@ TEST_CASE("[Graphics] sf::View") sf::View view; view.setRotation(sf::degrees(45)); view.rotate(sf::degrees(-15)); - CHECK(view.getRotation() == sf::degrees(30)); + CHECK(view.getRotation() == Approx(sf::degrees(30))); CHECK(view.getTransform() == Approx(sf::Transform(0.00173205f, 0.001f, -1.36603f, 0.001f, -0.00173205f, 0.366025f, 0, 0, 1))); CHECK(view.getInverseTransform() == Approx(sf::Transform(433.013f, 250, 500, 250, -433.013f, 500, 0, 0, 1))); diff --git a/test/System/Angle.test.cpp b/test/System/Angle.test.cpp index 4934a27f8..a438ea5f9 100644 --- a/test/System/Angle.test.cpp +++ b/test/System/Angle.test.cpp @@ -25,33 +25,33 @@ TEST_CASE("[System] sf::Angle") SECTION("wrapSigned()") { STATIC_CHECK(sf::Angle::Zero.wrapSigned() == sf::Angle::Zero); - STATIC_CHECK(sf::degrees(0).wrapSigned() == sf::degrees(0)); - STATIC_CHECK(sf::degrees(1).wrapSigned() == sf::degrees(1)); - STATIC_CHECK(sf::degrees(-1).wrapSigned() == sf::degrees(-1)); - STATIC_CHECK(sf::degrees(90).wrapSigned() == sf::degrees(90)); - STATIC_CHECK(sf::degrees(-90).wrapSigned() == sf::degrees(-90)); - STATIC_CHECK(sf::degrees(180).wrapSigned() == sf::degrees(-180)); - STATIC_CHECK(sf::degrees(-180).wrapSigned() == sf::degrees(-180)); - STATIC_CHECK(sf::degrees(360).wrapSigned() == sf::degrees(0)); - STATIC_CHECK(sf::degrees(-360).wrapSigned() == sf::degrees(0)); - STATIC_CHECK(sf::degrees(720).wrapSigned() == sf::degrees(0)); - STATIC_CHECK(sf::degrees(-720).wrapSigned() == sf::degrees(0)); + CHECK(sf::degrees(0).wrapSigned() == Approx(sf::degrees(0))); + CHECK(sf::degrees(1).wrapSigned() == Approx(sf::degrees(1))); + CHECK(sf::degrees(-1).wrapSigned() == Approx(sf::degrees(-1))); + CHECK(sf::degrees(90).wrapSigned() == Approx(sf::degrees(90))); + CHECK(sf::degrees(-90).wrapSigned() == Approx(sf::degrees(-90))); + CHECK(sf::degrees(180).wrapSigned() == Approx(sf::degrees(-180))); + CHECK(sf::degrees(-180).wrapSigned() == Approx(sf::degrees(-180))); + CHECK(sf::degrees(360).wrapSigned() == Approx(sf::degrees(0))); + CHECK(sf::degrees(-360).wrapSigned() == Approx(sf::degrees(0))); + CHECK(sf::degrees(720).wrapSigned() == Approx(sf::degrees(0))); + CHECK(sf::degrees(-720).wrapSigned() == Approx(sf::degrees(0))); } SECTION("wrapUnsigned()") { STATIC_CHECK(sf::Angle::Zero.wrapUnsigned() == sf::Angle::Zero); - STATIC_CHECK(sf::degrees(0).wrapUnsigned() == sf::degrees(0)); - STATIC_CHECK(sf::degrees(1).wrapUnsigned() == sf::degrees(1)); - STATIC_CHECK(sf::degrees(-1).wrapUnsigned() == sf::degrees(359)); - STATIC_CHECK(sf::degrees(90).wrapUnsigned() == sf::degrees(90)); - STATIC_CHECK(sf::degrees(-90).wrapUnsigned() == sf::degrees(270)); - STATIC_CHECK(sf::degrees(180).wrapUnsigned() == sf::degrees(180)); - STATIC_CHECK(sf::degrees(-180).wrapUnsigned() == sf::degrees(180)); - STATIC_CHECK(sf::degrees(360).wrapUnsigned() == sf::degrees(0)); - STATIC_CHECK(sf::degrees(-360).wrapUnsigned() == sf::degrees(0)); - STATIC_CHECK(sf::degrees(720).wrapUnsigned() == sf::degrees(0)); - STATIC_CHECK(sf::degrees(-720).wrapUnsigned() == sf::degrees(0)); + CHECK(sf::degrees(0).wrapUnsigned() == Approx(sf::degrees(0))); + CHECK(sf::degrees(1).wrapUnsigned() == Approx(sf::degrees(1))); + CHECK(sf::degrees(-1).wrapUnsigned() == Approx(sf::degrees(359))); + CHECK(sf::degrees(90).wrapUnsigned() == Approx(sf::degrees(90))); + CHECK(sf::degrees(-90).wrapUnsigned() == Approx(sf::degrees(270))); + CHECK(sf::degrees(180).wrapUnsigned() == Approx(sf::degrees(180))); + CHECK(sf::degrees(-180).wrapUnsigned() == Approx(sf::degrees(180))); + CHECK(sf::degrees(360).wrapUnsigned() == Approx(sf::degrees(0))); + CHECK(sf::degrees(-360).wrapUnsigned() == Approx(sf::degrees(0))); + CHECK(sf::degrees(720).wrapUnsigned() == Approx(sf::degrees(0))); + CHECK(sf::degrees(-720).wrapUnsigned() == Approx(sf::degrees(0))); } SECTION("degrees()") @@ -185,7 +185,7 @@ TEST_CASE("[System] sf::Angle") { sf::Angle angle = sf::degrees(-15); angle += sf::degrees(15); - CHECK(angle == sf::degrees(0)); + CHECK(angle == Approx(sf::degrees(0))); angle += sf::radians(10); CHECK(angle == sf::radians(10)); } @@ -202,7 +202,7 @@ TEST_CASE("[System] sf::Angle") { sf::Angle angle = sf::degrees(15); angle -= sf::degrees(15); - CHECK(angle == sf::degrees(0)); + CHECK(angle == Approx(sf::degrees(0))); angle -= sf::radians(10); CHECK(angle == sf::radians(-10)); } @@ -210,19 +210,19 @@ TEST_CASE("[System] sf::Angle") SECTION("operator*") { STATIC_CHECK(sf::radians(0) * 10 == sf::Angle::Zero); - STATIC_CHECK(sf::degrees(10) * 2.5f == sf::degrees(25)); - STATIC_CHECK(sf::degrees(100) * 10.0f == sf::degrees(1000)); + CHECK(sf::degrees(10) * 2.5f == Approx(sf::degrees(25))); + CHECK(sf::degrees(100) * 10.0f == Approx(sf::degrees(1000))); STATIC_CHECK(10 * sf::radians(0) == sf::Angle::Zero); - STATIC_CHECK(2.5f * sf::degrees(10) == sf::degrees(25)); - STATIC_CHECK(10.0f * sf::degrees(100) == sf::degrees(1000)); + CHECK(2.5f * sf::degrees(10) == Approx(sf::degrees(25))); + CHECK(10.0f * sf::degrees(100) == Approx(sf::degrees(1000))); } SECTION("operator*=") { sf::Angle angle = sf::degrees(1); angle *= 10; - CHECK(angle == sf::degrees(10)); + CHECK(angle == Approx(sf::degrees(10))); } SECTION("operator/") @@ -240,24 +240,24 @@ TEST_CASE("[System] sf::Angle") { sf::Angle angle = sf::degrees(60); angle /= 5; - CHECK(angle == sf::degrees(12)); + CHECK(angle == Approx(sf::degrees(12))); } SECTION("operator%") { STATIC_CHECK(sf::Angle::Zero % sf::radians(0.5f) == sf::Angle::Zero); STATIC_CHECK(sf::radians(10) % sf::radians(1) == sf::radians(0)); - STATIC_CHECK(sf::degrees(90) % sf::degrees(30) == sf::degrees(0)); - STATIC_CHECK(sf::degrees(90) % sf::degrees(40) == sf::degrees(10)); - STATIC_CHECK(sf::degrees(-90) % sf::degrees(30) == sf::degrees(0)); - STATIC_CHECK(sf::degrees(-90) % sf::degrees(40) == sf::degrees(30)); + CHECK(sf::degrees(90) % sf::degrees(30) == Approx(sf::degrees(0))); + CHECK(sf::degrees(90) % sf::degrees(40) == Approx(sf::degrees(10))); + CHECK(sf::degrees(-90) % sf::degrees(30) == Approx(sf::degrees(0))); + CHECK(sf::degrees(-90) % sf::degrees(40) == Approx(sf::degrees(30))); } SECTION("operator%=") { sf::Angle angle = sf::degrees(59); angle %= sf::degrees(10); - CHECK(angle == sf::degrees(9)); + CHECK(angle == Approx(sf::degrees(9))); } SECTION("operator _deg") diff --git a/test/TestUtilities/SystemUtil.cpp b/test/TestUtilities/SystemUtil.cpp index 95f5a78c8..c731012ea 100644 --- a/test/TestUtilities/SystemUtil.cpp +++ b/test/TestUtilities/SystemUtil.cpp @@ -77,7 +77,7 @@ bool operator==(const sf::Vector3f& lhs, const Approx& rhs) bool operator==(const sf::Angle& lhs, const Approx& rhs) { - return lhs.asDegrees() == Approx(rhs.value.asDegrees()); + return lhs.asRadians() == Approx(rhs.value.asRadians()); } std::vector loadIntoMemory(const std::filesystem::path& path)