// TwoVector class, polar coord. version // Glen Cowan, RHUL Physics Dept., October 2004 #ifndef TWOVECTOR_H #define TWOVECTOR_H class TwoVector { public: TwoVector(); TwoVector(double x, double y); double x() const; double y() const; double r() const; double cosTheta() const; double sinTheta() const; double theta() const; void set(double x, double y); void setX(double); void setY(double); void setR(double); // keeps theta constant void setTheta(double); // keeps r constant void rotate(double); // also as non-member function (below) TwoVector operator+(const TwoVector&); TwoVector operator-(const TwoVector&); TwoVector& operator+=(const TwoVector&); TwoVector& operator-=(const TwoVector&); private: double m_r; double m_theta; }; // non-member operators and functions TwoVector operator*(const TwoVector&, double); // mult. by constant TwoVector operator*(double, const TwoVector&); // allow either order double dot(const TwoVector&, const TwoVector&); TwoVector rotate (const TwoVector&, double); #endif