18 #ifndef _GAZEBO_MATH_QUATERNION_HH_
19 #define _GAZEBO_MATH_QUATERNION_HH_
51 public:
Quaternion(
const double &_w,
const double &_x,
const double &_y,
58 public:
Quaternion(
const double &_roll,
const double &_pitch,
82 public:
void Invert();
89 Quaternion q(this->w, this->x, this->y, this->z);
92 s = q.
w * q.
w + q.
x * q.
x + q.
y * q.
y + q.
z * q.
z;
114 public:
void SetToIdentity();
125 public:
void Normalize();
132 public:
void SetFromAxis(
double _x,
double _y,
double _z,
double _a);
137 public:
void SetFromAxis(
const Vector3 &_axis,
double _a);
144 public:
void Set(
double _u,
double _x,
double _y,
double _z);
151 public:
void SetFromEuler(
const Vector3 &_vec);
157 public:
void SetFromEuler(
double _roll,
double _pitch,
double _yaw);
161 public:
Vector3 GetAsEuler()
const;
173 public:
static Quaternion EulerToQuaternion(
double _x,
179 public:
double GetRoll();
183 public:
double GetPitch();
187 public:
double GetYaw();
192 public:
void GetAsAxis(
Vector3 &_axis,
double &_angle)
const;
196 public:
void Scale(
double _scale);
224 this->w*_q.
w - this->x*_q.
x - this->y*_q.
y - this->z*_q.
z,
225 this->w*_q.
x + this->x*_q.
w + this->y*_q.
z - this->z*_q.
y,
226 this->w*_q.
y - this->x*_q.
z + this->y*_q.
w + this->z*_q.
x,
227 this->w*_q.
z + this->x*_q.
y - this->y*_q.
x + this->z*_q.
w);
233 public:
Quaternion operator*(
const double &_f)
const;
248 public:
bool operator ==(
const Quaternion &_qt)
const;
253 public:
bool operator!=(
const Quaternion &_qt)
const;
265 tmp = (*this) * (tmp * this->GetInverse());
276 public:
bool IsFinite()
const;
281 if (!std::isfinite(this->x))
283 if (!std::isfinite(this->y))
285 if (!std::isfinite(this->z))
287 if (!std::isfinite(this->w))
301 public:
Matrix3 GetAsMatrix3()
const;
305 public:
Matrix4 GetAsMatrix4()
const;
309 public:
Vector3 GetXAxis()
const;
313 public:
Vector3 GetYAxis()
const;
317 public:
Vector3 GetZAxis()
const;
321 public:
void Round(
int _precision);
326 public:
double Dot(
const Quaternion &_q)
const;
340 const Quaternion &_rkQ,
bool _shortestPath =
false);
351 const Quaternion &_rkQ,
bool _shortestPath =
false);
360 const double _deltaT)
const;
394 Angle roll, pitch, yaw;
397 _in.setf(std::ios_base::skipws);
398 _in >> roll >> pitch >> yaw;
double z
z value of the quaternion
Definition: Quaternion.hh:372
Forward declarations for the common classes.
Definition: Animation.hh:24
The Vector3 class represents the generic vector containing 3 elements.
Definition: Vector3.hh:43
A 3x3 matrix class.
Definition: Matrix4.hh:39
double x
X location.
Definition: Vector3.hh:302
Vector3 RotateVector(const Vector3 &_vec) const
Rotate a vector using the quaternion.
Definition: Quaternion.hh:262
void SetFromEuler(const Vector3 &_vec)
Set the quaternion from Euler angles.
double z
Z location.
Definition: Vector3.hh:308
Quaternion operator*(const Quaternion &_q) const
Multiplication operator.
Definition: Quaternion.hh:221
bool equal(const T &_a, const T &_b, const T &_epsilon=1e-6)
check if two values are equal, within a tolerance
Definition: Helpers.hh:168
A 3x3 matrix class.
Definition: Matrix3.hh:34
void Correct()
Correct any nan values in this quaternion.
Definition: Quaternion.hh:279
double w
w value of the quaternion
Definition: Quaternion.hh:363
A quaternion class.
Definition: Quaternion.hh:41
friend std::istream & operator>>(std::istream &_in, gazebo::math::Quaternion &_q)
Stream extraction operator.
Definition: Quaternion.hh:391
GAZEBO_VISIBLE void Set(common::Image &_img, const msgs::Image &_msg)
Convert a msgs::Image to a common::Image.
double y
y value of the quaternion
Definition: Quaternion.hh:369
Quaternion GetInverse() const
Get the inverse of this quaternion.
Definition: Quaternion.hh:86
double x
x value of the quaternion
Definition: Quaternion.hh:366
T precision(const T &_a, const unsigned int &_precision)
get value at a specified precision
Definition: Helpers.hh:179
An angle and related functions.
Definition: Angle.hh:52
#define GAZEBO_VISIBLE
Use to represent "symbol visible" if supported.
Definition: system.hh:48
double y
Y location.
Definition: Vector3.hh:305
friend std::ostream & operator<<(std::ostream &_out, const gazebo::math::Quaternion &_q)
Stream insertion operator.
Definition: Quaternion.hh:378
Vector3 GetAsEuler() const
Return the rotation in Euler angles.