Browse Source

Math: make trignometric functions working with Unit base class.

The test now passes again.
pull/278/head
Vladimír Vondruš 13 years ago
parent
commit
2d71c86942
  1. 22
      src/Math/Functions.h

22
src/Math/Functions.h

@ -80,20 +80,30 @@ UnsignedInt MAGNUM_EXPORT log2(UnsignedInt number);
*/ */
UnsignedInt MAGNUM_EXPORT log(UnsignedInt base, UnsignedInt number); UnsignedInt MAGNUM_EXPORT log(UnsignedInt base, UnsignedInt number);
/** @todo Can't trigonometric functions be done with only one overload? */
/** @brief Sine */ /** @brief Sine */
#ifdef DOXYGEN_GENERATING_OUTPUT
template<class T> inline T sin(Rad<T> angle) { return std::sin(T(angle)); } template<class T> inline T sin(Rad<T> angle) { return std::sin(T(angle)); }
#else
template<class T> inline T sin(Unit<Rad, T> angle) { return std::sin(T(angle)); }
template<class T> inline T sin(Unit<Deg, T> angle) { return sin(Rad<T>(angle)); }
#endif
/** @brief Cosine */ /** @brief Cosine */
#ifdef DOXYGEN_GENERATING_OUTPUT
template<class T> inline T cos(Rad<T> angle) { return std::cos(T(angle)); } template<class T> inline T cos(Rad<T> angle) { return std::cos(T(angle)); }
#else
template<class T> inline T cos(Unit<Rad, T> angle) { return std::cos(T(angle)); }
template<class T> inline T cos(Unit<Deg, T> angle) { return cos(Rad<T>(angle)); }
#endif
/** @brief Tangent */ /** @brief Tangent */
#ifdef DOXYGEN_GENERATING_OUTPUT
template<class T> inline T tan(Rad<T> angle) { return std::tan(T(angle)); } template<class T> inline T tan(Rad<T> angle) { return std::tan(T(angle)); }
#else
/** @todo Can't trigonometric functions be done with only one overload? */ template<class T> inline T tan(Unit<Rad, T> angle) { return std::tan(T(angle)); }
#ifndef DOXYGEN_GENERATING_OUTPUT template<class T> inline T tan(Unit<Deg, T> angle) { return tan(Rad<T>(angle)); }
template<class T> inline T sin(Deg<T> angle) { return sin(Rad<T>(angle)); }
template<class T> inline T cos(Deg<T> angle) { return cos(Rad<T>(angle)); }
template<class T> inline T tan(Deg<T> angle) { return tan(Rad<T>(angle)); }
#endif #endif
/** @brief Arc sine */ /** @brief Arc sine */

Loading…
Cancel
Save