Public Types | Public Member Functions | Static Public Member Functions | List of all members
Eigen::QuaternionBase< Derived > Class Template Reference

Base class for quaternion expressions. More...

#include <ForwardDeclarations.h>

Inheritance diagram for Eigen::QuaternionBase< Derived >:
Inheritance graph
[legend]

Public Types

enum  { Flags = Eigen::internal::traits<Derived>::Flags }
 
typedef AngleAxis< ScalarAngleAxisType
 
typedef RotationBase< Derived, 3 > Base
 
typedef internal::traits< Derived >::Coefficients Coefficients
 
typedef Matrix< Scalar, 3, 3 > Matrix3
 
typedef NumTraits< Scalar >::Real RealScalar
 
typedef internal::traits< Derived >::Scalar Scalar
 
typedef Matrix< Scalar, 3, 1 > Vector3
 
- Public Types inherited from Eigen::RotationBase< Derived, 3 >
enum  
 
typedef Matrix< Scalar, Dim, DimRotationMatrixType
 
typedef internal::traits< Derived >::Scalar Scalar
 
typedef Matrix< Scalar, Dim, 1 > VectorType
 

Public Member Functions

EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Vector3 _transformVector (const Vector3 &v) const
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC Scalar angularDistance (const QuaternionBase< OtherDerived > &other) const
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC internal::traits< Derived >::Scalar angularDistance (const QuaternionBase< OtherDerived > &other) const
 
template<typename NewScalarType >
EIGEN_DEVICE_FUNC internal::cast_return_type< Derived, Quaternion< NewScalarType > >::type cast () const
 
EIGEN_DEVICE_FUNC const internal::traits< Derived >::Coefficientscoeffs () const
 
EIGEN_DEVICE_FUNC internal::traits< Derived >::Coefficientscoeffs ()
 
EIGEN_DEVICE_FUNC Quaternion< Scalarconjugate () const
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC Scalar dot (const QuaternionBase< OtherDerived > &other) const
 
EIGEN_DEVICE_FUNC Quaternion< Scalarinverse () const
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC bool isApprox (const QuaternionBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
 
EIGEN_DEVICE_FUNC Scalar norm () const
 
EIGEN_DEVICE_FUNC void normalize ()
 
EIGEN_DEVICE_FUNC Quaternion< Scalarnormalized () const
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Quaternion< Scalaroperator* (const QuaternionBase< OtherDerived > &q) const
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Quaternion< typename internal::traits< Derived >::Scalaroperator* (const QuaternionBase< OtherDerived > &other) const
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator*= (const QuaternionBase< OtherDerived > &q)
 
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE QuaternionBase< Derived > & operator= (const QuaternionBase< Derived > &other)
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & operator= (const QuaternionBase< OtherDerived > &other)
 
EIGEN_DEVICE_FUNC Derived & operator= (const AngleAxisType &aa)
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC Derived & operator= (const MatrixBase< OtherDerived > &m)
 
template<class MatrixDerived >
EIGEN_DEVICE_FUNC Derived & operator= (const MatrixBase< MatrixDerived > &xpr)
 
template<typename Derived1 , typename Derived2 >
EIGEN_DEVICE_FUNC Derived & setFromTwoVectors (const MatrixBase< Derived1 > &a, const MatrixBase< Derived2 > &b)
 
EIGEN_DEVICE_FUNC QuaternionBasesetIdentity ()
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC Quaternion< Scalarslerp (const Scalar &t, const QuaternionBase< OtherDerived > &other) const
 
template<class OtherDerived >
EIGEN_DEVICE_FUNC Quaternion< typename internal::traits< Derived >::Scalarslerp (const Scalar &t, const QuaternionBase< OtherDerived > &other) const
 
EIGEN_DEVICE_FUNC Scalar squaredNorm () const
 
EIGEN_DEVICE_FUNC Matrix3 toRotationMatrix () const
 
EIGEN_DEVICE_FUNC const VectorBlock< const Coefficients, 3 > vec () const
 
EIGEN_DEVICE_FUNC VectorBlock< Coefficients, 3 > vec ()
 
EIGEN_DEVICE_FUNC Scalar w () const
 
EIGEN_DEVICE_FUNC Scalarw ()
 
EIGEN_DEVICE_FUNC Scalar x () const
 
EIGEN_DEVICE_FUNC Scalarx ()
 
EIGEN_DEVICE_FUNC Scalar y () const
 
EIGEN_DEVICE_FUNC Scalary ()
 
EIGEN_DEVICE_FUNC Scalar z () const
 
EIGEN_DEVICE_FUNC Scalarz ()
 
- Public Member Functions inherited from Eigen::RotationBase< Derived, 3 >
EIGEN_DEVICE_FUNC VectorType _transformVector (const OtherVectorType &v) const
 
EIGEN_DEVICE_FUNC const Derived & derived () const
 
EIGEN_DEVICE_FUNC Derived & derived ()
 
EIGEN_DEVICE_FUNC Derived inverse () const
 
EIGEN_DEVICE_FUNC RotationMatrixType matrix () const
 
EIGEN_DEVICE_FUNC Transform< Scalar, Dim, Isometry > operator* (const Translation< Scalar, Dim > &t) const
 
EIGEN_DEVICE_FUNC RotationMatrixType operator* (const UniformScaling< Scalar > &s) const
 
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::rotation_base_generic_product_selector< Derived, OtherDerived, OtherDerived::IsVectorAtCompileTime >::ReturnType operator* (const EigenBase< OtherDerived > &e) const
 
EIGEN_DEVICE_FUNC Transform< Scalar, Dim, Mode > operator* (const Transform< Scalar, Dim, Mode, Options > &t) const
 
EIGEN_DEVICE_FUNC RotationMatrixType toRotationMatrix () const
 

Static Public Member Functions

static EIGEN_DEVICE_FUNC Quaternion< ScalarIdentity ()
 

Detailed Description

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

Base class for quaternion expressions.

Template Parameters
Derivedderived type (CRTP)
See also
class Quaternion

Definition at line 268 of file ForwardDeclarations.h.

Member Typedef Documentation

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

the equivalent angle-axis type

Definition at line 56 of file Quaternion.h.

template<class Derived>
typedef RotationBase<Derived, 3> Eigen::QuaternionBase< Derived >::Base

Definition at line 38 of file Quaternion.h.

template<class Derived>
typedef internal::traits<Derived>::Coefficients Eigen::QuaternionBase< Derived >::Coefficients

Definition at line 45 of file Quaternion.h.

template<class Derived>
typedef Matrix<Scalar,3,3> Eigen::QuaternionBase< Derived >::Matrix3

the equivalent rotation matrix type

Definition at line 54 of file Quaternion.h.

template<class Derived>
typedef NumTraits<Scalar>::Real Eigen::QuaternionBase< Derived >::RealScalar

Definition at line 44 of file Quaternion.h.

template<class Derived>
typedef internal::traits<Derived>::Scalar Eigen::QuaternionBase< Derived >::Scalar

Definition at line 43 of file Quaternion.h.

template<class Derived>
typedef Matrix<Scalar,3,1> Eigen::QuaternionBase< Derived >::Vector3

the type of a 3D vector

Definition at line 52 of file Quaternion.h.

Member Enumeration Documentation

template<class Derived>
anonymous enum
Enumerator
Flags 

Definition at line 46 of file Quaternion.h.

Member Function Documentation

template<class Derived >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE QuaternionBase< Derived >::Vector3 Eigen::QuaternionBase< Derived >::_transformVector ( const Vector3 v) const

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

Definition at line 470 of file Quaternion.h.

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

Definition at line 703 of file Quaternion.h.

template<class Derived>
template<typename NewScalarType >
EIGEN_DEVICE_FUNC internal::cast_return_type<Derived,Quaternion<NewScalarType> >::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.

Definition at line 173 of file Quaternion.h.

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

Definition at line 85 of file Quaternion.h.

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

Definition at line 88 of file Quaternion.h.

template<class Derived >
EIGEN_DEVICE_FUNC 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.
See also
Quaternion2::inverse()

Definition at line 690 of file Quaternion.h.

template<class Derived>
template<class OtherDerived >
EIGEN_DEVICE_FUNC 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.
See also
angularDistance()

Definition at line 134 of file Quaternion.h.

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

Definition at line 106 of file Quaternion.h.

template<class Derived >
EIGEN_DEVICE_FUNC 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.
See also
QuaternionBase::conjugate()

Definition at line 659 of file Quaternion.h.

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

Definition at line 161 of file Quaternion.h.

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

Definition at line 120 of file Quaternion.h.

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

Normalizes the quaternion *this

See also
normalized(), MatrixBase::normalize()

Definition at line 124 of file Quaternion.h.

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

Definition at line 127 of file Quaternion.h.

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

Definition at line 444 of file Quaternion.h.

template<class Derived >
template<class OtherDerived >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & Eigen::QuaternionBase< Derived >::operator*= ( const QuaternionBase< OtherDerived > &  other)
See also
operator*(Quaternion)

Definition at line 455 of file Quaternion.h.

template<class Derived>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE QuaternionBase< Derived > & Eigen::QuaternionBase< Derived >::operator= ( const QuaternionBase< Derived > &  other)

Definition at line 483 of file Quaternion.h.

template<class Derived >
template<class OtherDerived >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & Eigen::QuaternionBase< Derived >::operator= ( const QuaternionBase< OtherDerived > &  other)

Definition at line 491 of file Quaternion.h.

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

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

Definition at line 500 of file Quaternion.h.

template<class Derived>
template<class OtherDerived >
EIGEN_DEVICE_FUNC Derived& Eigen::QuaternionBase< Derived >::operator= ( const MatrixBase< OtherDerived > &  m)
template<class Derived>
template<class MatrixDerived >
EIGEN_DEVICE_FUNC 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

Definition at line 518 of file Quaternion.h.

template<class Derived >
template<typename Derived1 , typename Derived2 >
EIGEN_DEVICE_FUNC 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.

Definition at line 577 of file Quaternion.h.

template<class Derived>
EIGEN_DEVICE_FUNC QuaternionBase& Eigen::QuaternionBase< Derived >::setIdentity ( )
inline
template<class Derived>
template<class OtherDerived >
EIGEN_DEVICE_FUNC Quaternion<Scalar> Eigen::QuaternionBase< Derived >::slerp ( const Scalar t,
const QuaternionBase< OtherDerived > &  other 
) const
template<class Derived>
template<class OtherDerived >
EIGEN_DEVICE_FUNC Quaternion<typename internal::traits<Derived>::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.

Definition at line 721 of file Quaternion.h.

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

Definition at line 115 of file Quaternion.h.

template<class Derived >
EIGEN_DEVICE_FUNC 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.

Definition at line 531 of file Quaternion.h.

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

Definition at line 79 of file Quaternion.h.

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

Definition at line 82 of file Quaternion.h.

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

Definition at line 67 of file Quaternion.h.

template<class Derived>
EIGEN_DEVICE_FUNC Scalar& Eigen::QuaternionBase< Derived >::w ( )
inline
Returns
a reference to the w coefficient

Definition at line 76 of file Quaternion.h.

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

Definition at line 61 of file Quaternion.h.

template<class Derived>
EIGEN_DEVICE_FUNC Scalar& Eigen::QuaternionBase< Derived >::x ( )
inline
Returns
a reference to the x coefficient

Definition at line 70 of file Quaternion.h.

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

Definition at line 63 of file Quaternion.h.

template<class Derived>
EIGEN_DEVICE_FUNC Scalar& Eigen::QuaternionBase< Derived >::y ( )
inline
Returns
a reference to the y coefficient

Definition at line 72 of file Quaternion.h.

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

Definition at line 65 of file Quaternion.h.

template<class Derived>
EIGEN_DEVICE_FUNC Scalar& Eigen::QuaternionBase< Derived >::z ( )
inline
Returns
a reference to the z coefficient

Definition at line 74 of file Quaternion.h.


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


hebiros
Author(s): Xavier Artache , Matthew Tesch
autogenerated on Thu Sep 3 2020 04:10:19