Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __INET_COORD_H
00022 #define __INET_COORD_H
00023
00024 #include <omnetpp.h>
00025 #include "INETDefs.h"
00026 #include "FWMath.h"
00027
00038 class INET_API Coord : public cPolymorphic
00039 {
00040 public:
00042 double x,y;
00043
00045 Coord(double _x=0, double _y=0) : x(_x), y(_y) {};
00046
00047
00049 Coord(const Coord& pos) {
00050 x=pos.x;
00051 y=pos.y;
00052 }
00053
00055 Coord(const Coord* pos) {
00056 x=pos->x;
00057 y=pos->y;
00058 }
00059
00060 std::string info() const {
00061 std::stringstream os;
00062 os << "(" << x << "," << y << ")";
00063 return os.str();
00064 }
00065
00067 friend Coord operator+(const Coord& a, const Coord& b) {
00068 return Coord(a.x+b.x, a.y+b.y);
00069 }
00070
00072 friend Coord operator-(const Coord& a, const Coord& b) {
00073 return Coord(a.x-b.x, a.y-b.y);
00074 }
00075
00077 friend Coord operator*(const Coord& a, double f) {
00078 return Coord(a.x*f, a.y*f);
00079 }
00080
00082 friend Coord operator/(const Coord& a, double f) {
00083 return Coord(a.x/f, a.y/f);
00084 }
00085
00087 const Coord& operator+=(const Coord& a) {
00088 x+=a.x;
00089 y+=a.y;
00090 return *this;
00091 }
00092
00094 const Coord& operator=(const Coord& a) {
00095 x=a.x;
00096 y=a.y;
00097 return *this;
00098 }
00099
00101 const Coord& operator-=(const Coord& a) {
00102 x-=a.x;
00103 y-=a.y;
00104 return *this;
00105 }
00106
00112 friend bool operator==(const Coord& a, const Coord& b) {
00113 return FWMath::close(a.x,b.x) && FWMath::close(a.y,b.y);
00114 }
00115
00120 friend bool operator!=(const Coord& a, const Coord& b) {
00121 return !(a==b);
00122 }
00123
00127 double distance(const Coord& a) const {
00128 return sqrt(sqrdist(a));
00129 }
00130
00134 double sqrdist(const Coord& a) const {
00135 double dx=x-a.x;
00136 double dy=y-a.y;
00137 return dx*dx + dy*dy;
00138 }
00139
00140 };
00141
00142 inline std::ostream& operator<<(std::ostream& os, const Coord& coord)
00143 {
00144 return os << "(" << coord.x << "," << coord.y << ")";
00145 }
00146
00147 #endif
00148