From 2d71c86942844c913dc184076919ebe94810092f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 30 Mar 2013 19:25:28 +0100 Subject: [PATCH] Math: make trignometric functions working with Unit base class. The test now passes again. --- src/Math/Functions.h | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) 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 */