From cee9951f826c2d95c103f04d47d6a688277183e0 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Wed, 28 Jan 2015 15:00:20 +1100 Subject: [PATCH] vector: add difference(2) methods --- vector.cpp | 20 ++++++++++++++++++++ vector.hpp | 3 +++ 2 files changed, 23 insertions(+) diff --git a/vector.cpp b/vector.cpp index 2c1c5a03..875d841a 100644 --- a/vector.cpp +++ b/vector.cpp @@ -241,6 +241,26 @@ util::vector::magnitude2 (void) const { } +//----------------------------------------------------------------------------- +template +T +util::vector::difference (const util::vector &rhs) const { + // TODO: change the signature to ensure it does not truncate + return static_cast (std::sqrt (difference2 (rhs))); +} + + +//----------------------------------------------------------------------------- +template +T +util::vector::difference2 (const util::vector &rhs) const { + T sum {0}; + for (size_t i = 0; i < S; ++i) + sum += pow2 (this->data[i] - rhs.data[i]); + return sum; +} + +//----------------------------------------------------------------------------- template util::vector& util::vector::normalise (void) { diff --git a/vector.hpp b/vector.hpp index 95b6ccb5..2b827806 100644 --- a/vector.hpp +++ b/vector.hpp @@ -67,6 +67,9 @@ namespace util { T magnitude (void) const; T magnitude2 (void) const; + T difference (const vector&) const; + T difference2 (const vector&) const; + T dot (const vector&) const; vector& normalise (void);