From b4228aca1e490c94f2454dfdc5e6ff3df8ca3948 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Tue, 30 Jul 2013 23:52:31 +1000 Subject: [PATCH] Add polar to cartesian operation for vectors --- vector.cpp | 6 ++++++ vector.hpp | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/vector.cpp b/vector.cpp index 79585276..0b60fa21 100644 --- a/vector.cpp +++ b/vector.cpp @@ -266,6 +266,12 @@ util::vector::normalised (void) const { return out; } +//----------------------------------------------------------------------------- +util::vector<2> +util::polar_to_cartesian (const util::vector<2> &v) { + return { v.r * std::cos (v.t), + v.r * std::sin (v.t) }; +} //----------------------------------------------------------------------------- template diff --git a/vector.hpp b/vector.hpp index b606f5bb..875faa23 100644 --- a/vector.hpp +++ b/vector.hpp @@ -78,16 +78,15 @@ namespace util { void sanity (void) const; }; - vector<3> cross (const vector<3>&, const vector<3>&); + vector<2> polar_to_cartesian (const vector<2>&); + vector<3> cross (const vector<3>&, const vector<3>&); vector<3> spherical_to_cartesian (const util::vector <3>&); vector<3> cartesian_to_spherical (const util::vector <3>&); - typedef vector<2> vector2; typedef vector<3> vector3; - template util::vector operator* (double, const util::vector&); template util::vector operator+ (double, const util::vector&); template util::vector operator- (double, const util::vector&);