Eigen  3.3.3
Eigen::Quaternion< _Scalar, _Options > Class Template Reference

Detailed Description

template<typename _Scalar, int _Options>
class Eigen::Quaternion< _Scalar, _Options >

The quaternion class used to represent 3D orientations and rotations.

This is defined in the Geometry module.

 #include <Eigen/Geometry> 
Template Parameters:
_Scalarthe scalar type, i.e., the type of the coefficients
_Optionscontrols the memory alignment of the coefficients. Can be # AutoAlign or # DontAlign. Default is AutoAlign.

This class represents a quaternion $ w+xi+yj+zk $ that is a convenient representation of orientations and rotations of objects in three dimensions. Compared to other representations like Euler angles or 3x3 matrices, quaternions offer the following advantages:

  • compact storage (4 scalars)
  • efficient to compose (28 flops),
  • stable spherical interpolation

The following two typedefs are provided for convenience:

  • Quaternionf for float
  • Quaterniond for double
Warning:
Operations interpreting the quaternion as rotation have undefined behavior if the quaternion is not normalized.
See also:
class AngleAxis, class Transform
+ Inheritance diagram for Eigen::Quaternion< _Scalar, _Options >:

List of all members.

Public Types

typedef Base::AngleAxisType AngleAxisType
typedef _Scalar Scalar

Public Member Functions

Coefficients & coeffs ()
const Coefficients & coeffs () const
 Quaternion ()
 Quaternion (const Scalar &w, const Scalar &x, const Scalar &y, const Scalar &z)
 Quaternion (const Scalar *data)
template<class Derived >
 Quaternion (const QuaternionBase< Derived > &other)
 Quaternion (const AngleAxisType &aa)
template<typename Derived >
 Quaternion (const MatrixBase< Derived > &other)
template<typename OtherScalar , int OtherOptions>
 Quaternion (const Quaternion< OtherScalar, OtherOptions > &other)

Static Public Member Functions

template<typename Derived1 , typename Derived2 >
static Quaternion FromTwoVectors (const MatrixBase< Derived1 > &a, const MatrixBase< Derived2 > &b)
static Quaternion UnitRandom ()

Member Typedef Documentation

template<typename _Scalar, int _Options>
typedef Base::AngleAxisType Eigen::Quaternion< _Scalar, _Options >::AngleAxisType

the equivalent angle-axis type

Reimplemented from Eigen::QuaternionBase< Quaternion< _Scalar, _Options > >.

template<typename _Scalar, int _Options>
typedef _Scalar Eigen::Quaternion< _Scalar, _Options >::Scalar

the scalar type of the coefficients

Reimplemented from Eigen::QuaternionBase< Quaternion< _Scalar, _Options > >.


Constructor & Destructor Documentation

template<typename _Scalar, int _Options>
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( ) [inline]

Default constructor leaving the quaternion uninitialized.

template<typename _Scalar, int _Options>
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( const Scalar w,
const Scalar x,
const Scalar y,
const Scalar z 
) [inline]

Constructs and initializes the quaternion $ w+xi+yj+zk $ from its four coefficients w, x, y and z.

Warning:
Note the order of the arguments: the real w coefficient first, while internally the coefficients are stored in the following order: [x, y, z, w]
template<typename _Scalar, int _Options>
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( const Scalar data) [inline, explicit]

Constructs and initialize a quaternion from the array data

template<typename _Scalar, int _Options>
template<class Derived >
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( const QuaternionBase< Derived > &  other) [inline]

Copy constructor

template<typename _Scalar, int _Options>
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( const AngleAxisType aa) [inline, explicit]

Constructs and initializes a quaternion from the angle-axis aa

template<typename _Scalar, int _Options>
template<typename Derived >
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( const MatrixBase< Derived > &  other) [inline, explicit]

Constructs and initializes a quaternion from either:

  • a rotation matrix expression,
  • a 4D vector expression representing quaternion coefficients.
template<typename _Scalar, int _Options>
template<typename OtherScalar , int OtherOptions>
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( const Quaternion< OtherScalar, OtherOptions > &  other) [inline, explicit]

Explicit copy constructor with scalar conversion


Member Function Documentation

template<typename _Scalar, int _Options>
Coefficients& Eigen::Quaternion< _Scalar, _Options >::coeffs ( ) [inline]
Returns:
a vector expression of the coefficients (x,y,z,w)

Reimplemented from Eigen::QuaternionBase< Quaternion< _Scalar, _Options > >.

template<typename _Scalar, int _Options>
const Coefficients& Eigen::Quaternion< _Scalar, _Options >::coeffs ( ) const [inline]
Returns:
a read-only vector expression of the coefficients (x,y,z,w)

Reimplemented from Eigen::QuaternionBase< Quaternion< _Scalar, _Options > >.

template<typename Scalar , int Options>
template<typename Derived1 , typename Derived2 >
Quaternion< Scalar, Options > Eigen::Quaternion< Scalar, Options >::FromTwoVectors ( const MatrixBase< Derived1 > &  a,
const MatrixBase< Derived2 > &  b 
) [static]

Returns a quaternion representing a rotation between the two arbitrary vectors a and b. In other words, the built rotation represent a rotation sending the line of direction a to the line of direction b, both lines passing through the origin.

Returns:
resulting quaternion

Note that the two input vectors do not have to be normalized, and do not need to have the same norm.

template<typename Scalar , int Options>
Quaternion< Scalar, Options > Eigen::Quaternion< Scalar, Options >::UnitRandom ( ) [static]
Returns:
a random unit quaternion following a uniform distribution law on SO(3)
Note:
The implementation is based on http://planning.cs.uiuc.edu/node198.html

The documentation for this class was generated from the following file:
 All Classes Functions Variables Typedefs Enumerations Enumerator Friends