Browse Source

Math: fix lerp() with BoolVector.

For some reason I swapped the order and took from the second parameter
when the value was 0. Probably because of the ?: operator.
pull/183/head^2
Vladimír Vondruš 10 years ago
parent
commit
9fa0d8c796
  1. 4
      src/Magnum/Math/Functions.h
  2. 4
      src/Magnum/Math/Test/FunctionsTest.cpp

4
src/Magnum/Math/Functions.h

@ -453,7 +453,7 @@ component-wise selection from either @p a or @p b based on values in @p t.
template<std::size_t size, class T> inline Vector<size, T> lerp(const Vector<size, T>& a, const Vector<size, T>& b, const BoolVector<size>& t) {
Vector<size, T> out{NoInit};
for(std::size_t i = 0; i != size; ++i)
out[i] = t[i] ? a[i] : b[i];
out[i] = t[i] ? b[i] : a[i];
return out;
}
@ -461,7 +461,7 @@ template<std::size_t size, class T> inline Vector<size, T> lerp(const Vector<siz
template<std::size_t size> inline BoolVector<size> lerp(const BoolVector<size>& a, const BoolVector<size>& b, const BoolVector<size>& t) {
BoolVector<size> out;
for(std::size_t i = 0; i != size; ++i)
out.set(i, t[i] ? a[i] : b[i]);
out.set(i, t[i] ? b[i] : a[i]);
return out;
}

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

@ -251,8 +251,8 @@ void FunctionsTest::lerp() {
}
void FunctionsTest::lerpBool() {
CORRADE_COMPARE(Math::lerp(Vector3i{1, 2, 3}, Vector3i{5, 6, 7}, BoolVector<3>(5)), (Vector3i{1, 6, 3}));
CORRADE_COMPARE(Math::lerp(BoolVector<3>{false}, BoolVector<3>{true}, BoolVector<3>(5)), BoolVector<3>{2});
CORRADE_COMPARE(Math::lerp(Vector3i{1, 2, 3}, Vector3i{5, 6, 7}, BoolVector<3>(5)), (Vector3i{5, 2, 7}));
CORRADE_COMPARE(Math::lerp(BoolVector<3>{false}, BoolVector<3>{true}, BoolVector<3>(5)), BoolVector<3>{5});
}
void FunctionsTest::lerpInverted() {

Loading…
Cancel
Save