 Eigen  3.3.7 Eigen::QuaternionBase< Derived > Class Template Reference

## Detailed Description

### template<class Derived> class Eigen::QuaternionBase< Derived >

Base class for quaternion expressions.

This is defined in the Geometry module.

#include <Eigen/Geometry>
Template Parameters
 Derived derived type (CRTP)
class Quaternion Inheritance diagram for Eigen::QuaternionBase< Derived >:

## Public Types

typedef AngleAxis< Scalar > AngleAxisType

typedef Matrix< Scalar, 3, 3 > Matrix3

typedef Matrix< Scalar, 3, 1 > Vector3 Public Types inherited from Eigen::RotationBase< Derived, 3 >
typedef Matrix< Scalar, Dim, Dim > RotationMatrixType

typedef internal::traits< Derived >::Scalar Scalar

## Public Member Functions

Vector3 _transformVector (const Vector3 &v) const

template<class OtherDerived >
internal::traits< Derived >::Scalar angularDistance (const QuaternionBase< OtherDerived > &other) const

template<typename NewScalarType >
internal::cast_return_type< Derived, Quaternion< NewScalarType > >::type cast () const

const internal::traits< Derived >::Coefficients & coeffs () const

internal::traits< Derived >::Coefficients & coeffs ()

Quaternion< Scalar > conjugate () const

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

Quaternion< Scalar > inverse () const

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

Scalar norm () const

void normalize ()

Quaternion< Scalar > normalized () const

template<class OtherDerived >
Quaternion< typename internal::traits< Derived >::Scalar > operator* (const QuaternionBase< OtherDerived > &other) const

template<class OtherDerived >
Derived & operator*= (const QuaternionBase< OtherDerived > &q)

Derived & operator= (const AngleAxisType &aa)

template<class MatrixDerived >
Derived & operator= (const MatrixBase< MatrixDerived > &xpr)

template<typename Derived1 , typename Derived2 >
Derived & setFromTwoVectors (const MatrixBase< Derived1 > &a, const MatrixBase< Derived2 > &b)

QuaternionBasesetIdentity ()

template<class OtherDerived >
Quaternion< typename internal::traits< Derived >::Scalar > slerp (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< Derived, 3 >
Derived 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< Derived, 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< Scalar > Identity ()

## ◆ AngleAxisType

template<class Derived>
 typedef AngleAxis Eigen::QuaternionBase< Derived >::AngleAxisType

the equivalent angle-axis type

## ◆ Matrix3

template<class Derived>
 typedef Matrix Eigen::QuaternionBase< Derived >::Matrix3

the equivalent rotation matrix type

## ◆ Vector3

template<class Derived>
 typedef Matrix Eigen::QuaternionBase< Derived >::Vector3

the type of a 3D vector

## ◆ _transformVector()

template<class Derived >
 QuaternionBase< Derived >::Vector3 Eigen::QuaternionBase< Derived >::_transformVector ( const Vector3 & v ) const
inline

return the result vector of v through the rotation

Rotation of a vector by a quaternion.

Remarks
If the quaternion is used to rotate several points (>1) then it is much more efficient to first convert it to a 3x3 Matrix. Comparison of the operation cost for n transformations:
• Quaternion2: 30n
• Via a Matrix3: 24 + 15n

## ◆ angularDistance()

template<class Derived>
template<class OtherDerived >
 internal::traits::Scalar Eigen::QuaternionBase< Derived >::angularDistance ( const QuaternionBase< OtherDerived > & other ) const
inline
Returns
the angle (in radian) between two rotations
dot()

## ◆ cast()

template<class Derived>
template<typename NewScalarType >
 internal::cast_return_type >::type Eigen::QuaternionBase< Derived >::cast ( ) const
inline
Returns
`*this` with scalar type casted to NewScalarType

Note that if NewScalarType is equal to the current scalar type of `*this` then this function smartly returns a const reference to `*this`.

## ◆ coeffs() [1/2]

template<class Derived>
 const internal::traits::Coefficients& Eigen::QuaternionBase< Derived >::coeffs ( ) const
inline
Returns
a read-only vector expression of the coefficients (x,y,z,w)

## ◆ coeffs() [2/2]

template<class Derived>
 internal::traits::Coefficients& Eigen::QuaternionBase< Derived >::coeffs ( )
inline
Returns
a vector expression of the coefficients (x,y,z,w)

## ◆ conjugate()

template<class Derived >
 Quaternion< typename internal::traits< Derived >::Scalar > Eigen::QuaternionBase< Derived >::conjugate ( ) const
inline
Returns
the conjugated quaternion
the conjugate of the `*this` which is equal to the multiplicative inverse if the quaternion is normalized. The conjugate of a quaternion represents the opposite rotation.
Quaternion2::inverse()

## ◆ dot()

template<class Derived>
template<class OtherDerived >
 Scalar Eigen::QuaternionBase< Derived >::dot ( const QuaternionBase< OtherDerived > & other ) const
inline
Returns
the dot product of `*this` and other Geometrically speaking, the dot product of two unit quaternions corresponds to the cosine of half the angle between the two rotations.
angularDistance()

## ◆ Identity()

template<class Derived>
 static Quaternion Eigen::QuaternionBase< Derived >::Identity ( )
inlinestatic
Returns
a quaternion representing an identity rotation
MatrixBase::Identity()

## ◆ inverse()

template<class Derived >
 Quaternion< typename internal::traits< Derived >::Scalar > Eigen::QuaternionBase< Derived >::inverse ( ) const
inline
Returns
the quaternion describing the inverse rotation
the multiplicative inverse of `*this` Note that in most cases, i.e., if you simply want the opposite rotation, and/or the quaternion is normalized, then it is enough to use the conjugate.
QuaternionBase::conjugate()

## ◆ isApprox()

template<class Derived>
template<class OtherDerived >
 bool Eigen::QuaternionBase< Derived >::isApprox ( const QuaternionBase< OtherDerived > & other, const RealScalar & prec = `NumTraits::dummy_precision()` ) const
inline
Returns
`true` if `*this` is approximately equal to other, within the precision determined by prec.
MatrixBase::isApprox()

## ◆ norm()

template<class Derived>
 Scalar Eigen::QuaternionBase< Derived >::norm ( ) const
inline
Returns
the norm of the quaternion's coefficients
QuaternionBase::squaredNorm(), MatrixBase::norm()

## ◆ normalize()

template<class Derived>
 void Eigen::QuaternionBase< Derived >::normalize ( void )
inline

Normalizes the quaternion `*this`

normalized(), MatrixBase::normalize()

## ◆ normalized()

template<class Derived>
 Quaternion Eigen::QuaternionBase< Derived >::normalized ( ) const
inline
Returns
a normalized copy of `*this`
normalize(), MatrixBase::normalized()

## ◆ operator*()

template<class Derived>
template<class OtherDerived >
 Quaternion::Scalar> Eigen::QuaternionBase< Derived >::operator* ( const QuaternionBase< OtherDerived > & other ) const
inline
Returns
the concatenation of two rotations as a quaternion-quaternion product

## ◆ operator*=()

template<class Derived >
template<class OtherDerived >
 Derived & Eigen::QuaternionBase< Derived >::operator*= ( const QuaternionBase< OtherDerived > & other )
inline
operator*(Quaternion)

## ◆ operator=() [1/2]

template<class Derived>
 Derived & Eigen::QuaternionBase< Derived >::operator= ( const AngleAxisType & aa )
inline

Set `*this` from an angle-axis aa and returns a reference to `*this`

## ◆ operator=() [2/2]

template<class Derived>
template<class MatrixDerived >
 Derived& Eigen::QuaternionBase< Derived >::operator= ( const MatrixBase< MatrixDerived > & xpr )
inline

Set `*this` from the expression xpr:

• if xpr is a 4x1 vector, then xpr is assumed to be a quaternion
• if xpr is a 3x3 matrix, then xpr is assumed to be rotation matrix and xpr is converted to a quaternion

## ◆ setFromTwoVectors()

template<class Derived >
template<typename Derived1 , typename Derived2 >
 Derived & Eigen::QuaternionBase< Derived >::setFromTwoVectors ( const MatrixBase< Derived1 > & a, const MatrixBase< Derived2 > & b )
inline
Returns
the quaternion which transform a into b through a rotation

Sets `*this` to be 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
a reference to `*this`.

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

## ◆ setIdentity()

template<class Derived>
 QuaternionBase& Eigen::QuaternionBase< Derived >::setIdentity ( )
inline

## ◆ slerp()

template<class Derived>
template<class OtherDerived >
 Quaternion::Scalar> Eigen::QuaternionBase< Derived >::slerp ( const Scalar & t, const QuaternionBase< OtherDerived > & other ) const
Returns
the spherical linear interpolation between the two quaternions `*this` and other at the parameter t in [0;1].

This represents an interpolation for a constant motion between `*this` and other, see also http://en.wikipedia.org/wiki/Slerp.

## ◆ squaredNorm()

template<class Derived>
 Scalar Eigen::QuaternionBase< Derived >::squaredNorm ( ) const
inline
Returns
the squared norm of the quaternion's coefficients
QuaternionBase::norm(), MatrixBase::squaredNorm()

## ◆ toRotationMatrix()

template<class Derived >
 QuaternionBase< Derived >::Matrix3 Eigen::QuaternionBase< Derived >::toRotationMatrix ( void ) const
inline
Returns
an equivalent 3x3 rotation matrix

Convert the quaternion to a 3x3 rotation matrix. The quaternion is required to be normalized, otherwise the result is undefined.

## ◆ vec() [1/2]

template<class Derived>
 const VectorBlock Eigen::QuaternionBase< Derived >::vec ( ) const
inline
Returns
a read-only vector expression of the imaginary part (x,y,z)

## ◆ vec() [2/2]

template<class Derived>
 VectorBlock Eigen::QuaternionBase< Derived >::vec ( )
inline
Returns
a vector expression of the imaginary part (x,y,z)

## ◆ w() [1/2]

template<class Derived>
 CoeffReturnType Eigen::QuaternionBase< Derived >::w ( ) const
inline
Returns
the `w` coefficient

## ◆ w() [2/2]

template<class Derived>
 NonConstCoeffReturnType Eigen::QuaternionBase< Derived >::w ( )
inline
Returns
a reference to the `w` coefficient (if Derived is a non-const lvalue)

## ◆ x() [1/2]

template<class Derived>
 CoeffReturnType Eigen::QuaternionBase< Derived >::x ( ) const
inline
Returns
the `x` coefficient

## ◆ x() [2/2]

template<class Derived>
 NonConstCoeffReturnType Eigen::QuaternionBase< Derived >::x ( )
inline
Returns
a reference to the `x` coefficient (if Derived is a non-const lvalue)

## ◆ y() [1/2]

template<class Derived>
 CoeffReturnType Eigen::QuaternionBase< Derived >::y ( ) const
inline
Returns
the `y` coefficient

## ◆ y() [2/2]

template<class Derived>
 NonConstCoeffReturnType Eigen::QuaternionBase< Derived >::y ( )
inline
Returns
a reference to the `y` coefficient (if Derived is a non-const lvalue)

## ◆ z() [1/2]

template<class Derived>
 CoeffReturnType Eigen::QuaternionBase< Derived >::z ( ) const
inline
Returns
the `z` coefficient

## ◆ z() [2/2]

template<class Derived>
 NonConstCoeffReturnType Eigen::QuaternionBase< Derived >::z ( )
inline
Returns
a reference to the `z` coefficient (if Derived is a non-const lvalue)

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