Browse Source

Math: add a vector + scalar fmod() overload.

pull/638/head
Stanislaw Halik 2 years ago committed by Vladimír Vondruš
parent
commit
d4caf28183
  1. 11
      src/Magnum/Math/Functions.h
  2. 3
      src/Magnum/Math/Test/FunctionsTest.cpp

11
src/Magnum/Math/Functions.h

@ -494,6 +494,17 @@ template<std::size_t size, class T> inline Vector<size, T> fmod(const Vector<siz
return out;
}
/**
@overload
@m_since_latest
*/
template<std::size_t size, class T> inline Vector<size, T> fmod(const Vector<size, T>& a, T b) {
Vector<size, T> out{Magnum::NoInit};
for(std::size_t i = 0; i != size; ++i)
out[i] = Math::fmod(a[i], b);
return out;
}
/**
@brief Linear interpolation of two values
@param a First value

3
src/Magnum/Math/Test/FunctionsTest.cpp

@ -357,7 +357,8 @@ void FunctionsTest::binomialCoefficientOverflow() {
void FunctionsTest::fmod() {
CORRADE_COMPARE(Math::fmod(5.1f, 3.0f), 2.1f);
CORRADE_COMPARE(Math::fmod(Vector3(5.1f, -5.1f, 6.8f), Vector3(3.0f, 3.0f, 1.1f)), Vector3(2.1f, -2.1f, 0.2f));
CORRADE_COMPARE(Math::fmod(Vector3(5.1f, -5.1f, 6.8f), Vector3(3.0f, -2.0f, 1.1f)), Vector3(2.1f, -1.1f, 0.2f));
CORRADE_COMPARE(Math::fmod(Vector3(5.1f, -5.1f, 6.8f), 3.0f), Vector3(2.1f, -2.1f, 0.8f));
/* Wrapped types */
CORRADE_COMPARE(Math::fmod(2.7_degf, 1.3_degf), 0.1_degf);

Loading…
Cancel
Save