Add basic 2 dimensional point classes

This commit is contained in:
Danny Robson 2011-06-23 22:04:51 +10:00
parent dd51f6b180
commit f45c5faf76
3 changed files with 80 additions and 0 deletions

View File

@ -18,6 +18,7 @@ UTIL_INCLUDE = \
maths.hpp \
matrix.hpp \
nocopy.hpp \
point.hpp \
range.hpp \
region.hpp \
stream.hpp \
@ -35,6 +36,7 @@ UTIL_FILES = \
json.cpp \
maths.cpp \
matrix.cpp \
point.cpp \
range.cpp \
region.cpp \
stream.cpp \

44
point.cpp Normal file
View File

@ -0,0 +1,44 @@
/*
* This file is part of libgim.
*
* libgim is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* libgim is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with libgim. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright 2011 Danny Robson <danny@nerdcruft.net>
*/
#include "point.hpp"
#include <cmath>
using namespace std;
point::point (double _x, double _y):
x (_x),
y (_y)
{ ; }
double
point::distance (const point &other) const {
return sqrt ((x - other.x) * (x - other.x) +
(y - other.y) * (y - other.y));
}
double
point::manhattan (const point &other) const {
return fabs (x - other.x) +
fabs (y - other.y);
}

34
point.hpp Normal file
View File

@ -0,0 +1,34 @@
/*
* This file is part of libgim.
*
* libgim is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* libgim is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with libgim. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright 2011 Danny Robson <danny@nerdcruft.net>
*/
#ifndef __UTIL_POINT_HPP
#define __UTIL_POINT_HPP
/// A two dimensional position in space
struct point {
double x, y;
point (double x, double y);
double distance (const point &) const;
double manhattan (const point &) const;
};
#endif // __UTIL_POINT_HPP