Changeset 207:9910d5a5be7f in lemon0.x for src/work/athos/xy/xy.h
 Timestamp:
 03/19/04 15:47:36 (20 years ago)
 Branch:
 default
 Phase:
 public
 Convert:
 svn:c9d7d8f590d60310b91f818b3a526b0e/lemon/trunk@299
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

src/work/athos/xy/xy.h
r201 r207 1 // * c++ * 1 2 /** 2 3 2 dimensional vector (plainvector) implementation … … 8 9 #include <iostream> 9 10 10 using namespace std; 11 template<typename T> 12 class xy { 13 T _x,_y; 11 namespace hugo { 14 12 15 public: 13 template<typename T> 14 class xy { 15 T _x,_y; 16 16 17 ///Default constructor: both coordinates become 0 18 xy() { _x=_y=0; } 17 public: 18 19 ///Default constructor: both coordinates become 0 20 xy() { _x=_y=0; } 19 21 20 ///Constructing from coordinates21 xy(T a, T b) { _x=a; _y=b; }22 ///Constructing from coordinates 23 xy(T a, T b) { _x=a; _y=b; } 22 24 23 ///Gives back the x coordinate24 T x(){25 26 };25 ///Gives back the x coordinate 26 T x(){ 27 return _x; 28 }; 27 29 28 ///Gives back the y coordinate29 T y(){30 31 };30 ///Gives back the y coordinate 31 T y(){ 32 return _y; 33 }; 32 34 33 ///Gives back the square of the norm of the vector34 T normSquare(){35 36 };35 ///Gives back the square of the norm of the vector 36 T normSquare(){ 37 return _x*_x+_y*_y; 38 }; 37 39 38 ///Increments the left hand side by u39 xy<T>& operator +=(const xy<T>& u){40 41 42 43 };40 ///Increments the left hand side by u 41 xy<T>& operator +=(const xy<T>& u){ 42 _x += u._x; 43 _y += u._y; 44 return *this; 45 }; 44 46 45 ///Decrements the left hand side by u46 xy<T>& operator =(const xy<T>& u){47 48 49 50 };47 ///Decrements the left hand side by u 48 xy<T>& operator =(const xy<T>& u){ 49 _x = u._x; 50 _y = u._y; 51 return *this; 52 }; 51 53 52 ///Multiplying the left hand side with a scalar 53 xy<T>& operator *=(const T &u){ 54 _x *= u; 55 _y *= u; 56 return *this; 57 }; 54 ///Multiplying the left hand side with a scalar 55 xy<T>& operator *=(const T &u){ 56 _x *= u; 57 _y *= u; 58 return *this; 59 }; 60 61 ///Dividing the left hand side by a scalar 62 xy<T>& operator /=(const T &u){ 63 _x /= u; 64 _y /= u; 65 return *this; 66 }; 58 67 59 ///Returns the scalar product of two vectors60 T operator *(const xy<T>& u){61 62 };68 ///Returns the scalar product of two vectors 69 T operator *(const xy<T>& u){ 70 return _x*u._x+_y*u._y; 71 }; 63 72 64 ///Returns the sum of two vectors65 xy<T> operator+(const xy<T> &u) const {66 67 68 };73 ///Returns the sum of two vectors 74 xy<T> operator+(const xy<T> &u) const { 75 xy<T> b=*this; 76 return b+=u; 77 }; 69 78 70 ///Returns the difference of two vectors71 xy<T> operator(const xy<T> &u) const {72 73 74 };79 ///Returns the difference of two vectors 80 xy<T> operator(const xy<T> &u) const { 81 xy<T> b=*this; 82 return b=u; 83 }; 75 84 76 ///Returns a vector multiplied by a scalar77 xy<T> operator*(const T &u) const {78 79 80 };85 ///Returns a vector multiplied by a scalar 86 xy<T> operator*(const T &u) const { 87 xy<T> b=*this; 88 return b*=u; 89 }; 81 90 82 ///Testing equality 83 bool operator==(const xy<T> &u){ 84 return (_x==u._x) && (_y==u._y); 85 }; 91 ///Returns a vector divided by a scalar 92 xy<T> operator/(const T &u) const { 93 xy<T> b=*this; 94 return b/=u; 95 }; 86 96 87 ///Testing inequality88 bool operator!=(xyu){89 return (_x!=u._x)  (_y!=u._y);90 };97 ///Testing equality 98 bool operator==(const xy<T> &u){ 99 return (_x==u._x) && (_y==u._y); 100 }; 91 101 92 }; 93 ///Reading a plainvector from a stream 94 template<typename T> 95 inline 96 istream& operator>>(istream &is, xy<T> &z) 97 { 98 ///This is not the best solution here: I didn't know how to solve this with friend functions 99 T a,b; 100 is >> a >> b; 101 xy<T> buf(a,b); 102 z=buf; 103 return is; 104 } 102 ///Testing inequality 103 bool operator!=(xy u){ 104 return (_x!=u._x)  (_y!=u._y); 105 }; 105 106 106 ///Outputting a plainvector to a stream 107 template<typename T> 108 inline 109 ostream& operator<<(ostream &os, xy<T> z) 110 { 111 os << "(" << z.x() << ", " << z.y() << ")"; 112 return os; 113 } 107 }; 114 108 109 ///Reading a plainvector from a stream 110 template<typename T> 111 inline 112 std::istream& operator>>(std::istream &is, xy<T> &z) 113 { 114 ///This is not the best solution here: I didn't know how to solve this with friend functions 115 T a,b; 116 is >> a >> b; 117 xy<T> buf(a,b); 118 z=buf; 119 return is; 120 } 115 121 122 ///Outputting a plainvector to a stream 123 template<typename T> 124 inline 125 std::ostream& operator<<(std::ostream &os, xy<T> z) 126 { 127 os << "(" << z.x() << ", " << z.y() << ")"; 128 return os; 129 } 130 131 } //namespace hugo 116 132 117 133 #endif //HUGO_XY_H
Note: See TracChangeset
for help on using the changeset viewer.