diff --git a/src/Math/Functions.h b/src/Math/Functions.h index 9d25668f6..cec7db9e5 100644 --- a/src/Math/Functions.h +++ b/src/Math/Functions.h @@ -80,20 +80,30 @@ UnsignedInt MAGNUM_EXPORT log2(UnsignedInt number); */ UnsignedInt MAGNUM_EXPORT log(UnsignedInt base, UnsignedInt number); +/** @todo Can't trigonometric functions be done with only one overload? */ + /** @brief Sine */ +#ifdef DOXYGEN_GENERATING_OUTPUT template inline T sin(Rad angle) { return std::sin(T(angle)); } +#else +template inline T sin(Unit angle) { return std::sin(T(angle)); } +template inline T sin(Unit angle) { return sin(Rad(angle)); } +#endif /** @brief Cosine */ +#ifdef DOXYGEN_GENERATING_OUTPUT template inline T cos(Rad angle) { return std::cos(T(angle)); } +#else +template inline T cos(Unit angle) { return std::cos(T(angle)); } +template inline T cos(Unit angle) { return cos(Rad(angle)); } +#endif /** @brief Tangent */ +#ifdef DOXYGEN_GENERATING_OUTPUT template inline T tan(Rad angle) { return std::tan(T(angle)); } - -/** @todo Can't trigonometric functions be done with only one overload? */ -#ifndef DOXYGEN_GENERATING_OUTPUT -template inline T sin(Deg angle) { return sin(Rad(angle)); } -template inline T cos(Deg angle) { return cos(Rad(angle)); } -template inline T tan(Deg angle) { return tan(Rad(angle)); } +#else +template inline T tan(Unit angle) { return std::tan(T(angle)); } +template inline T tan(Unit angle) { return tan(Rad(angle)); } #endif /** @brief Arc sine */