From c585c987ba6e3a545959114c85d0bbfed851ddb4 Mon Sep 17 00:00:00 2001 From: "Simon D. Levy" Date: Sun, 7 Sep 2014 20:59:13 -0400 Subject: [PATCH] Create Position.hpp --- cpp/Position.hpp | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 cpp/Position.hpp diff --git a/cpp/Position.hpp b/cpp/Position.hpp new file mode 100644 index 0000000..b088919 --- /dev/null +++ b/cpp/Position.hpp @@ -0,0 +1,90 @@ +/** +* +* Position.hpp - C++ header for Position class +* +* Copyright (C) 2014 Simon D. Levy + +* This code is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This code 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 Lesser General Public License +* along with this code. If not, see . +*/ + +#include +#include + +#include +#include +using namespace std; + + +/** +* A class representing the position of a robot. +*/class Position +{ + friend class CoreSLAM; + +public: + + /** + * Constructs a new position. + * @param x_mm X coordinate in millimeters + * @param y_mm Y coordinate in millimeters + * @param theta_degrees rotation angle in degrees + */ + + Position(double x_mm, double y_mm, double theta_degrees) + { + this->x_mm = x_mm; + this->y_mm = y_mm; + this->theta_degrees = theta_degrees; + + } + + /** + * Empty position constructor. All values are set to zero. + */ + Position(void) + { + this->x_mm = 0; + this->y_mm = 0; + this->theta_degrees = 0; + } + + + friend ostream& operator<< (ostream & out, Position & position) + { + char str[100]; + + sprintf(str, "", + position.x_mm, position.y_mm, position.theta_degrees); + + out << str; + + return out; + } + + /** + * Distance of robot from left edge of map, in millimeters. + */ + double x_mm; + + + /** + * Distance of robot from top edge of map, in millimeters. + */ + double y_mm; + + /** + * Clockwise rotation of robot with respect to three o'clock (east), in degrees. + */ + double theta_degrees; +};