Line data Source code
1 : #pragma once 2 : 3 : #include <AH/Settings/Warnings.hpp> 4 : AH_DIAGNOSTIC_WERROR() // Enable errors on warnings 5 : 6 : #include <AH/STL/cmath> // M_PI 7 : 8 : BEGIN_AH_NAMESPACE 9 : 10 : /// @addtogroup AH_Math 11 : /// @{ 12 : 13 : /** 14 : * @file 15 : * @brief Conversions between radians and degrees. 16 : */ 17 : 18 : /// Convert radians to degrees. 19 : template <class T> 20 4 : constexpr inline double rad2deg(T r) { 21 4 : return r * M_1_PI * 180; 22 : } 23 : /// Convert degrees to radians. 24 : template <class T> 25 8 : constexpr inline double deg2rad(T d) { 26 8 : return d * M_PI / 180; 27 : } 28 : 29 : /// Convert degrees to radians, e.g. 10_deg. 30 1 : constexpr long double operator"" _deg(long double deg) { return deg2rad(deg); } 31 : /// Convert degrees to radians, e.g. 10_deg. 32 4 : constexpr long double operator"" _deg(unsigned long long deg) { 33 4 : return deg2rad<long double>(deg); 34 : } 35 : 36 : /// @} 37 : 38 : END_AH_NAMESPACE 39 : 40 : AH_DIAGNOSTIC_POP()