1 /*****************************************************************************
2 * Copyright (c) 2006 Russ Adams, Sean Eubanks, Asgard Contributors
3 * This file is part of Asgard.
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 ****************************************************************************/
20 #include "Coordinate.h"
22 Coordinate::Coordinate()
29 Coordinate::Coordinate(int x
, int y
)
35 Coordinate::Coordinate(const Coordinate
& c
)
41 void Coordinate::operator+=(const Coordinate x
)
47 void Coordinate::operator-=(const Coordinate x
)
53 bool Coordinate::operator==(const Coordinate x
) const
55 if (x
.x
!= this->x
) return false;
56 if (x
.y
!= this->y
) return false;
60 bool Coordinate::operator!=(const Coordinate x
) const
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
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
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));