00001 #include <cmath> 00002 #include "Point2D.h" 00003 00004 namespace rcrt 00005 { 00006 00007 00008 Point2D::Point2D() 00009 { 00010 values[0] = values[1] = 0; 00011 } 00012 00013 00014 Point2D::Point2D(float xc, float yc) 00015 { 00016 values[0] = xc; 00017 values[1] = yc; 00018 } 00019 00020 00021 Point2D::Point2D(const Point2D& p) 00022 { 00023 assign(p); 00024 } 00025 00026 00027 Point2D::~Point2D() 00028 { 00029 } 00030 00031 00032 void Point2D::assign(const Point2D& p) 00033 { 00034 if(&p != this){ 00035 values[0] = p.values[0]; 00036 values[1] = p.values[1]; 00037 } 00038 } 00039 00040 00041 00042 const Point2D& Point2D::operator= (const Point2D& p) 00043 { 00044 assign(p); 00045 00046 return *this; 00047 } 00048 00049 00050 Point2D Point2D::operator+ (const Vec2D& vec) const 00051 { 00052 return Point2D(values[0]+vec.x(), 00053 values[1]+vec.y()); 00054 } 00055 00056 00057 Point2D Point2D::operator- (const Vec2D& vec) const 00058 { 00059 return Point2D(values[0]-vec.x(), 00060 values[1]-vec.y()); 00061 } 00062 00063 00064 Vec2D Point2D::operator+ (const Point2D& p) const 00065 { 00066 return Vec2D(values[0]+p.values[0], 00067 values[1]+p.values[1]); 00068 } 00069 00070 00071 Vec2D Point2D::operator- (const Point2D& p) const 00072 { 00073 return Vec2D(values[0]-p.values[0], 00074 values[1]-p.values[1]); 00075 } 00076 00077 00078 Point2D Point2D::operator* (const float f) const 00079 { 00080 return Point2D(values[0]*f,values[1]*f); 00081 } 00082 00083 00084 Point2D Point2D::operator/ (const float f) const 00085 { 00086 float g = 1/f; 00087 return Point2D(values[0]*g,values[1]*g); 00088 } 00089 00090 float Point2D::operator[] (int i) const 00091 { 00092 return values[i]; 00093 } 00094 00095 float& Point2D::operator[] (int i) 00096 { 00097 return values[i]; 00098 } 00099 00100 00101 Vec2D Point2D::getPosVec2D() const 00102 { 00103 return Vec2D(values[0], values[1]); 00104 } 00105 00106 00107 Point2D Point2D::abs() const 00108 { 00109 return Point2D(fabs(values[0]),fabs(values[1])); 00110 } 00111 00112 00113 const float& Point2D::x() const 00114 { 00115 return values[0]; 00116 } 00117 00118 00119 const float& Point2D::y() const 00120 { 00121 return values[1]; 00122 } 00123 00124 }