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 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));