Please, help us to better know about our user community by answering the following short survey: https://forms.gle/wpyrxWi18ox9Z5ae9
 Eigen  3.3.9
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
 _Scalar the scalar type, i.e., the type of the coefficients _Options controls 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.
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 AngleAxisType &aa)

template<typename Derived >
Quaternion (const MatrixBase< Derived > &other)

template<typename OtherScalar , int OtherOptions>
Quaternion (const Quaternion< OtherScalar, OtherOptions > &other)

template<class Derived >
Quaternion (const QuaternionBase< Derived > &other)

Quaternion (const Scalar &w, const Scalar &x, const Scalar &y, const Scalar &z)

Quaternion (const Scalar *data)

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

internal::traits< Quaternion< _Scalar, _Options > >::Coefficients & coeffs ()

const internal::traits< Quaternion< _Scalar, _Options > >::Coefficients & coeffs () const

Quaternion< Scalar > conjugate () const

Scalar dot (const QuaternionBase< OtherDerived > &other) const

Quaternion< Scalar > inverse () const

bool isApprox (const QuaternionBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const

Scalar norm () const

void normalize ()

Quaternion< Scalar > normalized () const

Quaternion< typename internal::traits< Quaternion< _Scalar, _Options > >::Scalar > operator* (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 > >::Scalar > slerp (const Scalar &t, const QuaternionBase< OtherDerived > &other) const

Scalar squaredNorm () const

Matrix3 toRotationMatrix () const

VectorBlock< Coefficients, 3 > vec ()

const VectorBlock< const Coefficients, 3 > vec () const

NonConstCoeffReturnType w ()

CoeffReturnType w () const

NonConstCoeffReturnType x ()

CoeffReturnType x () const

NonConstCoeffReturnType y ()

CoeffReturnType y () const

NonConstCoeffReturnType z ()

CoeffReturnType z () const

Public Member Functions inherited from Eigen::RotationBase< Quaternion< _Scalar, _Options >, 3 >
Quaternion< _Scalar, _Options > inverse () const

RotationMatrixType matrix () 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

Transform< Scalar, Dim, Isometry > operator* (const Translation< Scalar, Dim > &t) const

RotationMatrixType operator* (const UniformScaling< Scalar > &s) const

RotationMatrixType toRotationMatrix () const

## Static Public Member Functions

static Quaternion UnitRandom ()

Static Public Member Functions inherited from Eigen::QuaternionBase< Quaternion< _Scalar, _Options > >
static Quaternion< Scalar > Identity ()

Public Types inherited from Eigen::QuaternionBase< Quaternion< _Scalar, _Options > >
typedef AngleAxis< Scalar > AngleAxisType

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

## ◆ Quaternion() [1/7]

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

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 )
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]

## ◆ Quaternion() [3/7]

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

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 )
inline

Copy constructor

## ◆ Quaternion() [5/7]

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

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 )
inlineexplicit

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 )
inlineexplicit

Explicit copy constructor with scalar conversion

## ◆ FromTwoVectors()

template<typename _Scalar , int _Options>
template<typename Derived1 , typename Derived2 >
 Quaternion 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.

Returns
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
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: