From cfc955debe9e8b2ff41942923335cd7454b6554f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 6 Aug 2012 16:06:23 +0200 Subject: [PATCH] Added Vector::sum(), so product() has a friend. --- src/Math/Test/VectorTest.cpp | 5 +++++ src/Math/Test/VectorTest.h | 1 + src/Math/Vector.h | 12 +++++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Math/Test/VectorTest.cpp b/src/Math/Test/VectorTest.cpp index 965a4c871..2d409ceed 100644 --- a/src/Math/Test/VectorTest.cpp +++ b/src/Math/Test/VectorTest.cpp @@ -40,6 +40,7 @@ VectorTest::VectorTest() { &VectorTest::length, &VectorTest::lengthSquared, &VectorTest::normalized, + &VectorTest::sum, &VectorTest::product, &VectorTest::angle, &VectorTest::negative, @@ -121,6 +122,10 @@ void VectorTest::normalized() { CORRADE_COMPARE(Vector4(1.0f, 1.0f, 1.0f, 1.0f).normalized(), Vector4(0.5f, 0.5f, 0.5f, 0.5f)); } +void VectorTest::sum() { + CORRADE_COMPARE(Vector3(1.0f, 2.0f, 4.0f).sum(), 7.0f); +} + void VectorTest::product() { CORRADE_COMPARE(Vector3(1.0f, 2.0f, 3.0f).product(), 6.0f); } diff --git a/src/Math/Test/VectorTest.h b/src/Math/Test/VectorTest.h index c9b475e1c..a3795d551 100644 --- a/src/Math/Test/VectorTest.h +++ b/src/Math/Test/VectorTest.h @@ -32,6 +32,7 @@ class VectorTest: public Corrade::TestSuite::Tester { void length(); void lengthSquared(); void normalized(); + void sum(); void product(); void angle(); void negative(); diff --git a/src/Math/Vector.h b/src/Math/Vector.h index 1d075e241..fb3232947 100644 --- a/src/Math/Vector.h +++ b/src/Math/Vector.h @@ -268,9 +268,19 @@ template class Vector { return *this/length(); } + /** @brief Sum of values in the vector */ + T sum() const { + T out(0); + + for(size_t i = 0; i != size; ++i) + out += (*this)[i]; + + return out; + } + /** @brief Product of values in the vector */ T product() const { - T out = 1; + T out(1); for(size_t i = 0; i != size; ++i) out *= (*this)[i];