Preliminary Implementation of Hardpoint and Coordinate.
[asgard.git] / Coordinate.cpp
blobec35e26127dea9d180a04c04c654b537c01698ea
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 Coordinate Coordinate::operator+ (const Coordinate x) const
67 return Coordinate(this->x+x.x, this->y+x.y);
71 Coordinate Coordinate::operator- (const Coordinate x) const
73 return Coordinate(this->x-x.x, this->y-x.y);
76 Coordinate Coordinate::operator+ (const int x) const
78 return Coordinate(this->x+x, this->y+x);
81 Coordinate Coordinate::operator- (const int x) const
83 return Coordinate(this->x-x, this->y-x);
86 Coordinate Coordinate::operator* (const int x) const
88 return Coordinate(this->x*x, this->y*x);
91 Coordinate Coordinate::operator/ (const int x) const
93 return Coordinate(this->x/x, this->y/x);
96 Coordinate operator+(const int r, const Coordinate& l)
98 return Coordinate(r+l.x,r+l.y);
101 double distance(const Coordinate &l, const Coordinate &r)
103 return std::sqrt(std::pow(double(l.x - r.x), 2) + std::pow(double(l.y - r.y),2));