Browse Source

Math: added vector/scalar abs() function.

pull/7/head
Vladimír Vondruš 13 years ago
parent
commit
8a63939134
  1. 15
      src/Math/Functions.h
  2. 8
      src/Math/Test/FunctionsTest.cpp

15
src/Math/Functions.h

@ -117,6 +117,21 @@ template<std::size_t size, class T> Vector<size, T> max(const Vector<size, T>& a
}
#endif
/** @brief Absolute value */
#ifdef DOXYGEN_GENERATING_OUTPUT
template<class T> inline T abs(const T& a);
#else
template<class T> inline typename std::enable_if<std::is_arithmetic<T>::value, T>::type abs(T a) {
return std::abs(a);
}
template<std::size_t size, class T> Vector<size, T> abs(const Vector<size, T>& a) {
Vector<size, T> out;
for(std::size_t i = 0; i != size; ++i)
out[i] = std::abs(a[i]);
return out;
}
#endif
/**
@brief Clamp value

8
src/Math/Test/FunctionsTest.cpp

@ -26,6 +26,7 @@ class FunctionsTest: public Corrade::TestSuite::Tester {
void min();
void max();
void abs();
void clamp();
void normalizeUnsigned();
void normalizeSigned();
@ -47,6 +48,7 @@ typedef Math::Vector3<std::int32_t> Vector3i;
FunctionsTest::FunctionsTest() {
addTests(&FunctionsTest::min,
&FunctionsTest::max,
&FunctionsTest::abs,
&FunctionsTest::clamp,
&FunctionsTest::normalizeUnsigned,
&FunctionsTest::normalizeSigned,
@ -69,6 +71,12 @@ void FunctionsTest::max() {
CORRADE_COMPARE(Math::max(Vector3i(5, -3, 2), Vector3i(9, -5, 18)), Vector3i(9, -3, 18));
}
void FunctionsTest::abs() {
CORRADE_COMPARE(Math::abs(-5), 5);
CORRADE_COMPARE(Math::abs(5), 5);
CORRADE_COMPARE(Math::abs(Vector3i(5, -3, 2)), Vector3i(5, 3, 2));
}
void FunctionsTest::clamp() {
CORRADE_COMPARE(Math::clamp(0.5f, -1.0f, 5.0f), 0.5f);
CORRADE_COMPARE(Math::clamp(-1.6f, -1.0f, 5.0f), -1.0f);

Loading…
Cancel
Save