(no commit message)
[asgard.git] / Coordinate.cpp
blob3743f089db4d6d3edb39993e9858425269b24d78
1 /*****************************************************************************
2 * Copyright (c) 2006 Russ Adams, Sean Eubanks, Asgard Contributors
3 * This file is part of Asgard.
4 *
5 * Asgard is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * Asgard is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with Asgard; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 ****************************************************************************/
19 #include <cmath>
20 #include "Coordinate.h"
22 Coordinate::Coordinate()
24 //Initialize to zero
25 this->x = 0;
26 this->y = 0;
29 Coordinate::Coordinate(int x, int y)
31 this->x = x;
32 this->y = y;
35 Coordinate::Coordinate(const Coordinate & c)
37 this->x = c.x;
38 this->y = c.y;
41 void Coordinate::operator+=(const Coordinate x)
43 this->x += x.x;
44 this->y += x.y;
47 void Coordinate::operator-=(const Coordinate x)
49 this->x -= x.x;
50 this->y -= x.y;
53 bool Coordinate::operator==(const Coordinate x) const
55 if (x.x != this->x) return false;
56 if (x.y != this->y) return false;
57 return true;
60 bool Coordinate::operator!=(const Coordinate x) const
62 return !(*this == x);
65 bool Coordinate::operator>=(const Coordinate x) const
67 return (this->x >= x.x && this->y >= x.y);
70 bool Coordinate::operator<(const Coordinate x) const
72 return !(*this >= x);
75 bool Coordinate::operator<=(const Coordinate x) const
77 return (this->x <= x.x && this->y <= x.y);
80 bool Coordinate::operator>(const Coordinate x) const
82 return !(*this <= x);
85 Coordinate Coordinate::operator+ (const Coordinate x) const
87 return Coordinate(this->x+x.x, this->y+x.y);
91 Coordinate Coordinate::operator- (const Coordinate x) const
93 return Coordinate(this->x-x.x, this->y-x.y);
96 Coordinate Coordinate::operator+ (const int x) const
98 return Coordinate(this->x+x, this->y+x);
101 Coordinate Coordinate::operator- (const int x) const
103 return Coordinate(this->x-x, this->y-x);
106 Coordinate Coordinate::operator* (const int x) const
108 return Coordinate(this->x*x, this->y*x);
111 Coordinate Coordinate::operator/ (const int x) const
113 return Coordinate(this->x/x, this->y/x);
116 Coordinate operator+(const int r, const Coordinate& l)
118 return Coordinate(r+l.x,r+l.y);
121 Coordinate operator-(const int r, const Coordinate& l)
123 return Coordinate(r-l.x,r-l.y);
126 Coordinate operator*(const int r, const Coordinate& l)
128 return Coordinate(r*l.x,r*l.y);
131 Coordinate operator/(const int r, const Coordinate& l)
133 return Coordinate(r/l.x,r/l.y);
136 double distance(const Coordinate &l, const Coordinate &r)
138 return std::sqrt(std::pow(double(l.x - r.x), 2) + std::pow(double(l.y - r.y),2));