diff --git a/point.cpp b/point.cpp index 104e55fc..56c56e8f 100644 --- a/point.cpp +++ b/point.cpp @@ -28,10 +28,11 @@ using namespace std; -//----------------------------------------------------------------------------- +/////////////////////////////////////////////////////////////////////////////// template util::vector -util::point::to (const point &rhs) const { +util::point::to (const point &rhs) const +{ util::vector out; for (size_t i = 0; i < S; ++i) @@ -42,6 +43,18 @@ util::point::to (const point &rhs) const { //----------------------------------------------------------------------------- template +util::vector +util::point::from (const point &rhs) const +{ + util::vector out; + for (size_t i = 0; i < S; ++i) + out.data[i] = this->data[i] - rhs.data[i]; + return out; +} + + +/////////////////////////////////////////////////////////////////////////////// +template void util::point::sanity (void) const { CHECK (std::all_of (begin (this->data), diff --git a/point.hpp b/point.hpp index 7c3b68b1..87ab14e2 100644 --- a/point.hpp +++ b/point.hpp @@ -42,6 +42,7 @@ namespace util { template typename std::common_type::type manhattan (const point &) const; vector to (const point&) const; + vector from (const point&) const; template point redim (void) const; template point redim (const util::point &fill) const;