#include "vector.h" inline Vector& Vector::operator+=(Vector v2) { float x,y; float a,m; x = ma * cos(an) + v2.ma * cos(v2.an); y = ma * sin(an) + v2.ma * sin(v2.an); ma = sqrt(x*x+y*y); an = atan2(y,x); return *this; } inline Vector& Vector::operator-=(Vector v2) { *this += -v2; return *this; } inline Vector& Vector::operator+=(float m) { ma += m; return *this; } inline Vector& Vector::operator-=(float m) { ma -= m; return *this; } inline Vector& Vector::operator*=(float m) { ma *= m; return *this; } inline Vector& Vector::operator/=(float m) { ma /= m; return *this; } Vector Vector::absY() { float x,y; float a; x = ma * cos(an); y = abs(ma * sin(an)); a = atan2(y,x); return Vector(a,ma); } Vector Vector::absX() { float x,y; float a; x = abs(ma * cos(an)); y = ma * sin(an); a = atan2(y,x); return Vector(a,ma); } Vector Vector::invertX() { float x,y; float a; x = -ma * cos(an); y = ma * sin(an); a = atan2(y,x); return Vector(a,ma); } Vector Vector::invertY() { float x,y; float a; x = ma * cos(an); y = -ma * sin(an); a = atan2(y,x); return Vector(a,ma); } Vector Vector::nabsY() { float x,y; float a; x = ma * cos(an); y = -abs(ma * sin(an)); a = atan2(y,x); return Vector(a,ma); } Vector Vector::nabsX() { float x,y; float a; x = -abs(ma * cos(an)); y = ma * sin(an); a = atan2(y,x); return Vector(a,ma); } Vector Vector::Xvector() { float x; float a; x = ma*cos(an); a = x<0 ? PI : 0; return Vector(a,abs(x)); } Vector Vector::Yvector() { float y; float a; y = ma*sin(an); a = y<0 ? 3*PI/2 : PI/2; return Vector(a,abs(y)); } Vector operator+(Vector a, Vector b) { Vector r = a; return r += b; } Vector operator-(Vector a) { float an = a.angle() + PI; while (an > 2*PI) { an -= 2*PI; } return Vector(an, a.magnitude()); } Vector operator-(Vector a, Vector b) { Vector r = a; return r -= b; } Vector operator+(Vector a,float m) { Vector r = a; return r += m; } Vector operator-(Vector a,float m) { Vector r = a; return r -= m; } Vector operator*(Vector a,float m) { Vector r = a; return r *= m; } Vector operator/(Vector a,float m) { Vector r = a; return r /= m; } ostream& operator<<(ostream& s, Vector v) { return s << v.magnitude() << '@' << v.degrees(); }