Browse Source

Added Vector::min() and Vector::max().

vectorfields
Vladimír Vondruš 14 years ago
parent
commit
06872c7727
  1. 10
      src/Math/Test/VectorTest.cpp
  2. 2
      src/Math/Test/VectorTest.h
  3. 20
      src/Math/Vector.h

10
src/Math/Test/VectorTest.cpp

@ -42,6 +42,8 @@ VectorTest::VectorTest() {
&VectorTest::normalized,
&VectorTest::sum,
&VectorTest::product,
&VectorTest::min,
&VectorTest::max,
&VectorTest::angle,
&VectorTest::negative,
&VectorTest::debug);
@ -130,6 +132,14 @@ void VectorTest::product() {
CORRADE_COMPARE(Vector3(1.0f, 2.0f, 3.0f).product(), 6.0f);
}
void VectorTest::min() {
CORRADE_COMPARE(Vector3(1.0f, -2.0f, 3.0f).min(), -2.0f);
}
void VectorTest::max() {
CORRADE_COMPARE(Vector3(1.0f, -2.0f, 3.0f).max(), 3.0f);
}
void VectorTest::angle() {
ostringstream o;
Error::setOutput(&o);

2
src/Math/Test/VectorTest.h

@ -34,6 +34,8 @@ class VectorTest: public Corrade::TestSuite::Tester<VectorTest> {
void normalized();
void sum();
void product();
void min();
void max();
void angle();
void negative();

20
src/Math/Vector.h

@ -294,6 +294,26 @@ template<size_t size, class T> class Vector {
return out;
}
/** @brief Minimal value in the vector */
T min() const {
T out((*this)[0]);
for(size_t i = 1; i != size; ++i)
out = std::min(out, (*this)[i]);
return out;
}
/** @brief Maximal value in the vector */
T max() const {
T out((*this)[0]);
for(size_t i = 1; i != size; ++i)
out = std::max(out, (*this)[i]);
return out;
}
private:
T _data[size];
};

Loading…
Cancel
Save