Eigen  3.3.7
Eigen::AngleAxis< _Scalar > Class Template Reference

## Detailed Description

### template<typename _Scalar> class Eigen::AngleAxis< _Scalar >

Represents a 3D rotation as a rotation angle around an arbitrary 3D axis.

This is defined in the Geometry module.

#include <Eigen/Geometry>
Parameters
 _Scalar the scalar type, i.e., the type of the coefficients.
Warning
When setting up an AngleAxis object, the axis vector must be normalized.

The following two typedefs are provided for convenience:

• `AngleAxisf` for `float`
• `AngleAxisd` for `double`

Combined with MatrixBase::Unit{X,Y,Z}, AngleAxis can be used to easily mimic Euler-angles. Here is an example:

m = AngleAxisf(0.25*M_PI, Vector3f::UnitX())
* AngleAxisf(0.5*M_PI, Vector3f::UnitY())
* AngleAxisf(0.33*M_PI, Vector3f::UnitZ());
cout << m << endl << "is unitary: " << m.isUnitary() << endl;

Output:

```1.19e-07        0        1
0.969   -0.249        0
0.249    0.969 1.19e-07
is unitary: 1
```
Note
This class is not aimed to be used to store a rotation transformation, but rather to make easier the creation of other rotation (Quaternion, rotation Matrix) and transformation objects.
class Quaternion, class Transform, MatrixBase::UnitX()
Inheritance diagram for Eigen::AngleAxis< _Scalar >:

## Public Types

typedef _Scalar Scalar

Public Types inherited from Eigen::RotationBase< AngleAxis< _Scalar >, 3 >
typedef Matrix< Scalar, Dim, Dim > RotationMatrixType

typedef internal::traits< AngleAxis< _Scalar > >::Scalar Scalar

## Public Member Functions

Scalar angle () const

Scalarangle ()

AngleAxis ()

template<typename Derived >
AngleAxis (const Scalar &angle, const MatrixBase< Derived > &axis)

template<typename QuatDerived >
AngleAxis (const QuaternionBase< QuatDerived > &q)

template<typename Derived >
AngleAxis (const MatrixBase< Derived > &m)

template<typename OtherScalarType >
AngleAxis (const AngleAxis< OtherScalarType > &other)

const Vector3axis () const

Vector3axis ()

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

template<typename Derived >
AngleAxis< Scalar > & fromRotationMatrix (const MatrixBase< Derived > &mat)
Sets `*this` from a 3x3 rotation matrix.

AngleAxis inverse () const

bool isApprox (const AngleAxis &other, const typename NumTraits< Scalar >::Real &prec=NumTraits< Scalar >::dummy_precision()) const

QuaternionType operator* (const AngleAxis &other) const

QuaternionType operator* (const QuaternionType &other) const

template<typename QuatDerived >
AngleAxis< Scalar > & operator= (const QuaternionBase< QuatDerived > &q)

template<typename Derived >
AngleAxis< Scalar > & operator= (const MatrixBase< Derived > &mat)

Matrix3 toRotationMatrix (void) const

Public Member Functions inherited from Eigen::RotationBase< AngleAxis< _Scalar >, 3 >
AngleAxis< _Scalar > 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< AngleAxis< _Scalar >, 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

## Friends

QuaternionType operator* (const QuaternionType &a, const AngleAxis &b)

## ◆ Scalar

template<typename _Scalar >
 typedef _Scalar Eigen::AngleAxis< _Scalar >::Scalar

the scalar type of the coefficients

## ◆ AngleAxis() [1/5]

template<typename _Scalar >
 Eigen::AngleAxis< _Scalar >::AngleAxis ( )
inline

Default constructor without initialization.

## ◆ AngleAxis() [2/5]

template<typename _Scalar >
template<typename Derived >
 Eigen::AngleAxis< _Scalar >::AngleAxis ( const Scalar & angle, const MatrixBase< Derived > & axis )
inline

Constructs and initialize the angle-axis rotation from an angle in radian and an axis which must be normalized.

Warning
If the axis vector is not normalized, then the angle-axis object represents an invalid rotation.

## ◆ AngleAxis() [3/5]

template<typename _Scalar >
template<typename QuatDerived >
 Eigen::AngleAxis< _Scalar >::AngleAxis ( const QuaternionBase< QuatDerived > & q )
inlineexplicit

Constructs and initialize the angle-axis rotation from a quaternion q. This function implicitly normalizes the quaternion q.

## ◆ AngleAxis() [4/5]

template<typename _Scalar >
template<typename Derived >
 Eigen::AngleAxis< _Scalar >::AngleAxis ( const MatrixBase< Derived > & m )
inlineexplicit

Constructs and initialize the angle-axis rotation from a 3x3 rotation matrix.

## ◆ AngleAxis() [5/5]

template<typename _Scalar >
template<typename OtherScalarType >
 Eigen::AngleAxis< _Scalar >::AngleAxis ( const AngleAxis< OtherScalarType > & other )
inlineexplicit

Copy constructor with scalar type conversion

## ◆ angle() [1/2]

template<typename _Scalar >
 Scalar Eigen::AngleAxis< _Scalar >::angle ( ) const
inline
Returns
the value of the rotation angle in radian

## ◆ angle() [2/2]

template<typename _Scalar >
 Scalar& Eigen::AngleAxis< _Scalar >::angle ( )
inline
Returns

## ◆ axis() [1/2]

template<typename _Scalar >
 const Vector3& Eigen::AngleAxis< _Scalar >::axis ( ) const
inline
Returns
the rotation axis

## ◆ axis() [2/2]

template<typename _Scalar >
 Vector3& Eigen::AngleAxis< _Scalar >::axis ( )
inline
Returns
a read-write reference to the stored rotation axis.
Warning
The rotation axis must remain a unit vector.

## ◆ cast()

template<typename _Scalar >
template<typename NewScalarType >
 internal::cast_return_type >::type Eigen::AngleAxis< _Scalar >::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`.

## ◆ inverse()

template<typename _Scalar >
 AngleAxis Eigen::AngleAxis< _Scalar >::inverse ( ) const
inline
Returns
the inverse rotation, i.e., an angle-axis with opposite rotation angle

## ◆ isApprox()

template<typename _Scalar >
 bool Eigen::AngleAxis< _Scalar >::isApprox ( const AngleAxis< _Scalar > & other, const typename NumTraits< Scalar >::Real & prec = `NumTraits::dummy_precision()` ) const
inline
Returns
`true` if `*this` is approximately equal to other, within the precision determined by prec.
MatrixBase::isApprox()

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

template<typename _Scalar >
 QuaternionType Eigen::AngleAxis< _Scalar >::operator* ( const AngleAxis< _Scalar > & other ) const
inline

Concatenates two rotations

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

template<typename _Scalar >
 QuaternionType Eigen::AngleAxis< _Scalar >::operator* ( const QuaternionType & other ) const
inline

Concatenates two rotations

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

template<typename _Scalar >
template<typename QuatDerived >
 AngleAxis& Eigen::AngleAxis< _Scalar >::operator= ( const QuaternionBase< QuatDerived > & q )

Set `*this` from a unit quaternion.

The resulting axis is normalized, and the computed angle is in the [0,pi] range.

This function implicitly normalizes the quaternion q.

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

template<typename _Scalar >
template<typename Derived >
 AngleAxis& Eigen::AngleAxis< _Scalar >::operator= ( const MatrixBase< Derived > & mat )

Set `*this` from a 3x3 rotation matrix mat.

## ◆ toRotationMatrix()

template<typename Scalar >
 AngleAxis< Scalar >::Matrix3 Eigen::AngleAxis< Scalar >::toRotationMatrix ( void ) const

Constructs and

Returns
an equivalent 3x3 rotation matrix.

## ◆ operator*

template<typename _Scalar >
 QuaternionType operator* ( const QuaternionType & a, const AngleAxis< _Scalar > & b )
friend

Concatenates two rotations

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