56 #ifndef _GAMS_UTILITY_POSITION_H_ 57 #define _GAMS_UTILITY_POSITION_H_ 62 #include "madara/knowledge/containers/DoubleVector.h" 63 #include "madara/knowledge/containers/NativeDoubleVector.h" 87 double init_x = DBL_MAX,
double init_y = 0.0,
double init_z = 0.0);
96 : x(pos.x()), y(pos.y()), z(pos.z()) {}
111 void operator= (
const Position & rhs);
126 madara::knowledge::containers::DoubleArray & rhs)
const;
134 madara::knowledge::containers::NativeDoubleArray & rhs)
const;
149 madara::knowledge::containers::DoubleArray & rhs)
const;
157 madara::knowledge::containers::NativeDoubleArray & rhs)
const;
171 virtual double dot (
const Position& p_2)
const;
179 bool approximately_equal (
180 const Position & rhs,
const double & epsilon)
const;
188 bool approximately_equal_2d (
189 const Position & rhs,
const double & epsilon)
const;
198 const Position& rhs,
double& phi,
double& theta)
const;
205 double distance_to (
const Position & rhs)
const;
211 virtual double distance_to_2d (
const Position & rhs)
const;
219 virtual double distance_to_2d (
228 virtual bool slope_2d (
229 const Position & p,
double & slope)
const;
237 virtual bool is_between_2d (
const Position & end,
const Position & check)
const;
243 std::string to_string (
const std::string & delimiter =
",")
const;
249 static Position from_string (
const std::string & delimiter =
",");
256 static Position from_record (
const madara::knowledge::KnowledgeRecord & record);
262 virtual void to_container (
263 madara::knowledge::containers::DoubleArray & target)
const;
269 virtual void from_container (
270 madara::knowledge::containers::DoubleArray & source);
276 virtual void to_container (
277 madara::knowledge::containers::NativeDoubleArray & target)
284 virtual void from_container (
285 madara::knowledge::containers::NativeDoubleArray & source);
324 #endif // _GAMS_UTILITY_POSITION_H_ std::vector< Position > Positions
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
Position(const pose::Position &pos)
double y
the y coordinate (e.g. longitude)
pose::Position to_pos(const pose::ReferenceFrame &frame) const
double z
the z coordinate (e.g. altitude)
Contains all GAMS-related tools, classes and code.
bool operator<(const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
bool operator!=(const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
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.
double x
the x coordinate (e.g. latitude)
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.
Provides Reference Frame (i.e., coordinate systemm) transforms.
A position in an x, y, z coordinate system.
bool operator==(const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)