ECRobot C++ API for LEGO MINDSTORMS NXT  1.0.10
util/Vector.h
00001 //
00002 // Vector.h
00003 //
00004 // Simple templated vector implementation
00005 //
00006 // 09.28.2008 Jon C. Martin
00007 
00008 #ifndef _VECTOR_H
00009 #define _VECTOR_H
00010 
00011 namespace ecrobot // 03/13/2009 added by takashic
00012 {
00013 template <class T>
00017 struct VectorT
00018 {
00019 public:
00020 
00025         VectorT()
00026         :       mX(T(0))
00027         ,       mY(T(0))
00028         {}
00029         
00035         VectorT(T x, T y)
00036         :       mX(x)
00037         ,       mY(y)
00038         {}
00039 
00041         friend VectorT& operator+=(VectorT<T>& left, const VectorT<T>& right)
00042         {
00043                 left.mX += right.mX;
00044                 left.mY += right.mY;
00045 
00046                 return left;
00047         }
00049         friend VectorT& operator-=(VectorT<T>& left, const VectorT<T>& right)
00050         {
00051                 left.mX -= right.mX;
00052                 left.mY -= right.mY;
00053 
00054                 return left;
00055         }
00057         friend VectorT& operator*=(VectorT<T>& left, const VectorT<T>& right)
00058         {
00059                 left.mX *= right.mX;
00060                 left.mY *= right.mY;
00061 
00062                 return left;
00063         }
00065         friend VectorT& operator/=(VectorT<T>& left, const VectorT<T>& right)
00066         {
00067                 left.mX /= right.mX;
00068                 left.mY /= right.mY;
00069 
00070                 return left;
00071         }
00073         friend VectorT operator+(const VectorT<T>& left, const VectorT<T>& right)
00074         {
00075                 left += right;
00076 
00077                 return left;
00078         }
00080         friend VectorT operator- (const VectorT<T>& left, const VectorT<T>& right)
00081         {
00082                 left -= right;
00083 
00084                 return left;
00085         }
00087         friend VectorT operator*(const VectorT<T>& left, const VectorT<T>& right)
00088         {
00089                 left *= right;
00090 
00091                 return left;
00092         }
00094         friend VectorT operator/ (const VectorT<T>& left, const VectorT<T>& right)
00095         {
00096                 left /= right;
00097 
00098                 return left;
00099         }
00100 
00102         T mX;
00104         T mY;
00105 };
00106 }
00107 
00108 #endif
00109 
00110 
 All Classes Files Functions Variables Enumerations Enumerator Friends Defines