GAMS  1.2.2
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:
86  Position (
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 
179  bool approximately_equal (
180  const Position & rhs, const double & epsilon) const;
181 
188  bool approximately_equal_2d (
189  const Position & rhs, const double & epsilon) const;
190 
197  void direction_to (
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_
std::vector< Position > Positions
Definition: Position.h:320
auto operator*(const BasicVector< Derived, Units > &vec, Scalar scalar) -> typename std::enable_if< std::is_arithmetic< Scalar >::value &&BasicVector< Derived, Units >::free(), typename BasicVector< Derived, Units >::derived_type >::type
Definition: Coordinate.h:821
Position(const pose::Position &pos)
Definition: Position.h:95
double y
the y coordinate (e.g. longitude)
Definition: Position.h:291
pose::Position to_pos(const pose::ReferenceFrame &frame) const
Definition: Position.h:98
double z
the z coordinate (e.g. altitude)
Definition: Position.h:294
Contains all GAMS-related tools, classes and code.
#define GAMS_EXPORT
Definition: GamsExport.h:20
bool operator<(const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
Definition: Coordinate.h:957
bool operator!=(const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
Definition: Coordinate.h:956
auto operator-(const BasicVector< LDerived, LUnits > &lhs, const BasicVector< RDerived, RUnits > &rhs) -> typename std::enable_if< LDerived::free()&&RDerived::free(), LDerived >::type
Pass through to Eigen operator- on vectors, for free types.
Definition: Coordinate.h:892
double x
the x coordinate (e.g. latitude)
Definition: Position.h:288
auto operator+(const BasicVector< LDerived, LUnits > &lhs, const BasicVector< RDerived, RUnits > &rhs) -> typename std::enable_if< RDerived::free(), LDerived >::type
Pass through to Eigen operator- on vectors, if RHS is free.
Definition: Coordinate.h:866
Provides Reference Frame (i.e., coordinate systemm) transforms.
A position in an x, y, z coordinate system.
Definition: Position.h:77
bool operator==(const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
Definition: Coordinate.h:955