Eigen  3.3.4
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
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 >:

Public Member Functions

template<typename Derived1 , typename Derived2 >
Quaternion< Scalar, Options > FromTwoVectors (const MatrixBase< Derived1 > &a, const MatrixBase< Derived2 > &b)
 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)
- Public Member Functions inherited from Eigen::QuaternionBase< Quaternion< _Scalar, _Options > >
Vector3 _transformVector (const Vector3 &v) const
internal::traits< Quaternion< _Scalar, _Options > >::Scalar angularDistance (const QuaternionBase< OtherDerived > &other) const
internal::cast_return_type< Quaternion< _Scalar, _Options >, Quaternion< NewScalarType > >::type cast () const
const internal::traits< Quaternion< _Scalar, _Options > >::Coefficients & coeffs () const
internal::traits< Quaternion< _Scalar, _Options > >::Coefficients & coeffs ()
Quaternion< Scalarconjugate () const
Scalar dot (const QuaternionBase< OtherDerived > &other) const
Quaternion< Scalarinverse () const
bool isApprox (const QuaternionBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Scalar norm () const
void normalize ()
Quaternion< Scalarnormalized () const
Quaternion< typename internal::traits< Quaternion< _Scalar, _Options > >::Scalaroperator* (const QuaternionBase< OtherDerived > &other) const
Quaternion< _Scalar, _Options > & operator*= (const QuaternionBase< OtherDerived > &q)
Quaternion< _Scalar, _Options > & operator= (const AngleAxisType &aa)
Quaternion< _Scalar, _Options > & operator= (const MatrixBase< MatrixDerived > &xpr)
Quaternion< _Scalar, _Options > & setFromTwoVectors (const MatrixBase< Derived1 > &a, const MatrixBase< Derived2 > &b)
QuaternionBasesetIdentity ()
Quaternion< typename internal::traits< Quaternion< _Scalar, _Options > >::Scalarslerp (const Scalar &t, const QuaternionBase< OtherDerived > &other) const
Scalar squaredNorm () const
Matrix3 toRotationMatrix () const
const VectorBlock< const Coefficients, 3 > vec () const
VectorBlock< Coefficients, 3 > vec ()
CoeffReturnType w () const
NonConstCoeffReturnType w ()
CoeffReturnType x () const
NonConstCoeffReturnType x ()
CoeffReturnType y () const
NonConstCoeffReturnType y ()
CoeffReturnType z () const
NonConstCoeffReturnType z ()
- Public Member Functions inherited from Eigen::RotationBase< Quaternion< _Scalar, _Options >, 3 >
Quaternion< _Scalar, _Options > inverse () const
RotationMatrixType matrix () const
Transform< Scalar, Dim, Isometry > operator* (const Translation< Scalar, Dim > &t) const
RotationMatrixType operator* (const UniformScaling< Scalar > &s) const
internal::rotation_base_generic_product_selector< Quaternion< _Scalar, _Options >, OtherDerived, OtherDerived::IsVectorAtCompileTime >::ReturnType operator* (const EigenBase< OtherDerived > &e) const
Transform< Scalar, Dim, Mode > operator* (const Transform< Scalar, Dim, Mode, Options > &t) const
RotationMatrixType toRotationMatrix () const

Static Public Member Functions

static Quaternion UnitRandom ()
- Static Public Member Functions inherited from Eigen::QuaternionBase< Quaternion< _Scalar, _Options > >
static Quaternion< ScalarIdentity ()

Additional Inherited Members

- Public Types inherited from Eigen::QuaternionBase< Quaternion< _Scalar, _Options > >
typedef AngleAxis< ScalarAngleAxisType
typedef Matrix< Scalar, 3, 3 > Matrix3
typedef Matrix< Scalar, 3, 1 > Vector3
- Public Types inherited from Eigen::RotationBase< Quaternion< _Scalar, _Options >, 3 >
typedef Matrix< Scalar, Dim, Dim > RotationMatrixType
typedef internal::traits< Quaternion< _Scalar, _Options > >::Scalar Scalar

Constructor & Destructor Documentation

◆ Quaternion() [1/7]

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

Default constructor leaving the quaternion uninitialized.

◆ Quaternion() [2/7]

template<typename _Scalar, int _Options>
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( const Scalar &  w,
const Scalar &  x,
const Scalar &  y,
const Scalar &  z 

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

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]

◆ Quaternion() [3/7]

template<typename _Scalar, int _Options>
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( const Scalar *  data)

Constructs and initialize a quaternion from the array data

◆ Quaternion() [4/7]

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

Copy constructor

◆ Quaternion() [5/7]

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

Constructs and initializes a quaternion from the angle-axis aa

◆ Quaternion() [6/7]

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

Constructs and initializes a quaternion from either:

  • a rotation matrix expression,
  • a 4D vector expression representing quaternion coefficients.

◆ Quaternion() [7/7]

template<typename _Scalar, int _Options>
template<typename OtherScalar , int OtherOptions>
Eigen::Quaternion< _Scalar, _Options >::Quaternion ( const Quaternion< OtherScalar, OtherOptions > &  other)

Explicit copy constructor with scalar conversion

Member Function Documentation

◆ FromTwoVectors()

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 

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.

resulting quaternion

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

◆ UnitRandom()

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

The documentation for this class was generated from the following files: