From 1d26118e32bfec757be1753b30b59bdcffba0257 Mon Sep 17 00:00:00 2001 From: josh Date: Fri, 16 Jan 2009 18:14:01 +0000 Subject: [PATCH] added cross- and dot-products to util/Vector git-svn-id: svn://anubis/gvsu@358 45c1a28c-8058-47b2-ae61-ca45b979098e --- cs658/final/util/Vector.cc | 16 ++++++++++++++++ cs658/final/util/Vector.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/cs658/final/util/Vector.cc b/cs658/final/util/Vector.cc index 91787ff..b81c283 100644 --- a/cs658/final/util/Vector.cc +++ b/cs658/final/util/Vector.cc @@ -14,3 +14,19 @@ std::ostream & operator<<(std::ostream & out, const Vector & v) out << "[" << v[0] << ", " << v[1] << ", " << v[2] << "]"; return out; } + +/* Compute the dot-product of two vectors */ +double operator%(const Vector & v1, const Vector & v2) +{ + return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2]; +} + +/* Compute the cross-product of two vectors */ +Vector operator*(const Vector & v1, const Vector & v2) +{ + Vector result; + result[0] = v1[1] * v2[2] - v1[2] * v2[1]; + result[1] = v1[2] * v2[0] - v1[0] * v2[2]; + result[2] = v1[0] * v2[1] - v1[1] * v2[0]; + return result; +} diff --git a/cs658/final/util/Vector.h b/cs658/final/util/Vector.h index 8726e92..8128f2c 100644 --- a/cs658/final/util/Vector.h +++ b/cs658/final/util/Vector.h @@ -12,6 +12,8 @@ class Vector double & operator[](int idx) { return m_array[idx]; } double operator[](int idx) const { return m_array[idx]; } friend std::ostream & operator<<(std::ostream & out, const Vector & v); + friend double operator%(const Vector & v1, const Vector & v2); + friend Vector operator*(const Vector & v1, const Vector & v2); private: double m_array[3];