GAMS  1.4.0
Position.h
Go to the documentation of this file.
1 
56 #ifndef _GAMS_UTILITY_POSITION_H_
57 #define _GAMS_UTILITY_POSITION_H_
58 
59 #include <vector>
60 
61 #include "gams/GamsExport.h"
62 #include "madara/knowledge/containers/DoubleVector.h"
63 #include "madara/knowledge/containers/NativeDoubleVector.h"
64 
65 #include "gams/pose/Position.h"
67 
68 namespace gams
69 {
70  namespace utility
71  {
78  {
79  public:
87  double init_x = DBL_MAX, double init_y = 0.0, double init_z = 0.0);
88 
93  Position(const Position & source);
94 
95  Position(const pose::Position & pos)
96  : x(pos.x()), y(pos.y()), z(pos.z()) {}
97 
99  return pose::Position(frame, x, y, z);
100  }
101 
105  virtual ~Position();
106 
111  void operator=(const Position & rhs);
112 
118  bool operator==(const Position & rhs) const;
119 
125  bool operator==(const
126  madara::knowledge::containers::DoubleArray & rhs) const;
127 
133  bool operator==(const
134  madara::knowledge::containers::NativeDoubleArray & rhs) const;
135 
141  bool operator!=(const Position & rhs) const;
142 
148  bool operator!=(const
149  madara::knowledge::containers::DoubleArray & rhs) const;
150 
156  bool operator!=(const
157  madara::knowledge::containers::NativeDoubleArray & rhs) const;
158 
164  bool operator<(const Position& rhs) const;
165 
171  virtual double dot(const Position& p_2) const;
172 
180  const Position & rhs, const double & epsilon) const;
181 
189  const Position & rhs, const double & epsilon) const;
190 
198  const Position& rhs, double& phi, double& theta) const;
199 
205  double distance_to(const Position & rhs) const;
206 
211  virtual double distance_to_2d(const Position & rhs) const;
212 
219  virtual double distance_to_2d(
220  const Position& end, const Position& check) const;
221 
228  virtual bool slope_2d(
229  const Position & p, double & slope) const;
230 
237  virtual bool is_between_2d(const Position & end, const Position & check) const;
238 
243  std::string to_string(const std::string & delimiter = ",") const;
244 
249  static Position from_string(const std::string & delimiter = ",");
250 
256  static Position from_record(const madara::knowledge::KnowledgeRecord & record);
257 
262  virtual void to_container(
263  madara::knowledge::containers::DoubleArray & target) const;
264 
269  virtual void from_container(
270  madara::knowledge::containers::DoubleArray & source);
271 
276  virtual void to_container(
277  madara::knowledge::containers::NativeDoubleArray & target)
278  const;
279 
284  virtual void from_container(
285  madara::knowledge::containers::NativeDoubleArray & source);
286 
288  double x;
289 
291  double y;
292 
294  double z;
295 
296  protected:
302  Position operator-(const Position & rhs) const;
303 
309  Position operator+(const Position & rhs) const;
310 
316  Position operator*(const double& scale) const;
317  };
318 
319  // helpful typedef for vector of positions
320  typedef std::vector <Position> Positions;
321  }
322 }
323 
324 #endif // _GAMS_UTILITY_POSITION_H_
#define GAMS_EXPORT
Definition: GamsExport.h:20
Provides Reference Frame (i.e., coordinate systemm) transforms.
A position in an x, y, z coordinate system.
Definition: Position.h:78
virtual void from_container(madara::knowledge::containers::NativeDoubleArray &source)
Helper function for copying values to a MADARA double array.
bool approximately_equal_2d(const Position &rhs, const double &epsilon) const
Approximate equality.
bool approximately_equal(const Position &rhs, const double &epsilon) const
Approximate equality.
double distance_to(const Position &rhs) const
Get distance between two positions.
Position operator-(const Position &rhs) const
Subtraction operator performs element-wise subtraction.
virtual ~Position()
Destructor.
bool operator!=(const madara::knowledge::containers::DoubleArray &rhs) const
Inequality operator.
virtual void from_container(madara::knowledge::containers::DoubleArray &source)
Helper function for copying values to a MADARA double array.
virtual bool slope_2d(const Position &p, double &slope) const
Get slope between two points.
Position(const pose::Position &pos)
Definition: Position.h:95
std::string to_string(const std::string &delimiter=",") const
Helper function for converting the position to a string.
virtual double distance_to_2d(const Position &rhs) const
bool operator<(const Position &rhs) const
Less than used for ordering in stl containers.
virtual double dot(const Position &p_2) const
Dot product of two positions treated as vectors.
pose::Position to_pos(const pose::ReferenceFrame &frame) const
Definition: Position.h:98
Position(double init_x=DBL_MAX, double init_y=0.0, double init_z=0.0)
Constructor.
double y
the y coordinate(e.g. longitude)
Definition: Position.h:291
Position(const Position &source)
Copy constructor.
virtual double distance_to_2d(const Position &end, const Position &check) const
Get distance between a point and a line segment.
void direction_to(const Position &rhs, double &phi, double &theta) const
Get spherical direction to position.
virtual bool is_between_2d(const Position &end, const Position &check) const
Deterime if a third point is inline and between another two points.
virtual void to_container(madara::knowledge::containers::NativeDoubleArray &target) const
Helper function for copying values to a MADARA double array.
Position operator*(const double &scale) const
Scale the position.
bool operator==(const Position &rhs) const
Equality operator.
bool operator!=(const madara::knowledge::containers::NativeDoubleArray &rhs) const
Inequality operator.
static Position from_string(const std::string &delimiter=",")
Helper function for creating a Position from a string.
bool operator!=(const Position &rhs) const
Inequality operator.
double x
the x coordinate(e.g. latitude)
Definition: Position.h:288
bool operator==(const madara::knowledge::containers::DoubleArray &rhs) const
Equality operator.
double z
the z coordinate(e.g. altitude)
Definition: Position.h:294
virtual void to_container(madara::knowledge::containers::DoubleArray &target) const
Helper function for copying values to a MADARA double array.
static Position from_record(const madara::knowledge::KnowledgeRecord &record)
Helper function for creating a Position from a KnowledgeRecord.
void operator=(const Position &rhs)
Assignment operator.
bool operator==(const madara::knowledge::containers::NativeDoubleArray &rhs) const
Equality operator.
Position operator+(const Position &rhs) const
Addition operator performs element-wise addition.
std::vector< Position > Positions
Definition: Position.h:320
Contains all GAMS-related tools, classes and code.
Copyright (c) 2015-2018 Carnegie Mellon University.
Copyright (c) 2015 Carnegie Mellon University.