17 #ifndef _GAZEBO_SPHERICALCOORDINATES_HH_
18 #define _GAZEBO_SPHERICALCOORDINATES_HH_
22 #include <ignition/math/Angle.hh>
23 #include <ignition/math/Vector3.hh>
32 class SphericalCoordinatesPrivate;
81 const ignition::math::Angle &_latitude,
82 const ignition::math::Angle &_longitude,
84 const ignition::math::Angle &_heading);
93 public: ignition::math::Vector3d SphericalFromLocal(
94 const ignition::math::Vector3d &_xyz)
const;
100 public: ignition::math::Vector3d GlobalFromLocal(
101 const ignition::math::Vector3d &_xyz)
const;
106 public:
static SurfaceType
Convert(
const std::string &_str);
117 public:
static double Distance(
const ignition::math::Angle &_latA,
118 const ignition::math::Angle &_lonA,
119 const ignition::math::Angle &_latB,
120 const ignition::math::Angle &_lonB);
124 public: SurfaceType GetSurfaceType()
const;
128 public: ignition::math::Angle LatitudeReference()
const;
132 public: ignition::math::Angle LongitudeReference()
const;
136 public:
double GetElevationReference()
const;
142 public: ignition::math::Angle HeadingOffset()
const;
146 public:
void SetSurfaceType(
const SurfaceType &_type);
150 public:
void SetLatitudeReference(
const ignition::math::Angle &_angle);
154 public:
void SetLongitudeReference(
const ignition::math::Angle &_angle);
158 public:
void SetElevationReference(
double _elevation);
162 public:
void SetHeadingOffset(
const ignition::math::Angle &_angle);
167 public: ignition::math::Vector3d LocalFromSpherical(
168 const ignition::math::Vector3d &_xyz)
const;
174 public: ignition::math::Vector3d LocalFromGlobal(
175 const ignition::math::Vector3d &_xyz)
const;
178 public:
void UpdateTransformationMatrix();
185 public: ignition::math::Vector3d
186 PositionTransform(
const ignition::math::Vector3d &_pos,
187 const CoordinateType &_in,
const CoordinateType &_out)
const;
194 public: ignition::math::Vector3d VelocityTransform(
195 const ignition::math::Vector3d &_vel,
196 const CoordinateType &_in,
const CoordinateType &_out)
const;
200 private: SphericalCoordinatesPrivate *dataPtr;
Convert spherical coordinates for planetary surfaces.
Definition: SphericalCoordinates.hh:39
CoordinateType
Unique identifiers for coordinate types.
Definition: SphericalCoordinates.hh:52
SurfaceType
Unique identifiers for planetary surface models.
Definition: SphericalCoordinates.hh:43
GAZEBO_VISIBLE msgs::Vector3d Convert(const ignition::math::Vector3d &_v)
Convert a ignition::math::Vector3 to a msgs::Vector3d.