MOAB
4.9.3pre
|
Represents a rotation/orientation in a 2 dimensional space. More...
#include <Rotation2D.h>
Public Types | |
enum | { Dim = 2 } |
typedef _Scalar | Scalar |
typedef Matrix< Scalar, 2, 1 > | Vector2 |
typedef Matrix< Scalar, 2, 2 > | Matrix2 |
Public Member Functions | |
Rotation2D (const Scalar &a) | |
Rotation2D () | |
template<typename Derived > | |
Rotation2D (const MatrixBase< Derived > &m) | |
Scalar | angle () const |
Scalar & | angle () |
Scalar | smallestPositiveAngle () const |
Scalar | smallestAngle () const |
Rotation2D | inverse () const |
Rotation2D | operator* (const Rotation2D &other) const |
Rotation2D & | operator*= (const Rotation2D &other) |
Vector2 | operator* (const Vector2 &vec) const |
template<typename Derived > | |
Rotation2D & | fromRotationMatrix (const MatrixBase< Derived > &m) |
Matrix2 | toRotationMatrix () const |
template<typename Derived > | |
Rotation2D & | operator= (const MatrixBase< Derived > &m) |
Rotation2D | slerp (const Scalar &t, const Rotation2D &other) const |
template<typename NewScalarType > | |
internal::cast_return_type < Rotation2D, Rotation2D < NewScalarType > >::type | cast () const |
template<typename OtherScalarType > | |
Rotation2D (const Rotation2D< OtherScalarType > &other) | |
bool | isApprox (const Rotation2D &other, const typename NumTraits< Scalar >::Real &prec=NumTraits< Scalar >::dummy_precision()) const |
Static Public Member Functions | |
static Rotation2D | Identity () |
Protected Attributes | |
Scalar | m_angle |
Private Types | |
typedef RotationBase < Rotation2D< _Scalar >, 2 > | Base |
Represents a rotation/orientation in a 2 dimensional space.
_Scalar | the scalar type, i.e., the type of the coefficients |
This class is equivalent to a single scalar representing a counter clock wise rotation as a single angle in radian. It provides some additional features such as the automatic conversion from/to a 2x2 rotation matrix. Moreover this class aims to provide a similar interface to Quaternion in order to facilitate the writing of generic algorithms dealing with rotations.
Definition at line 41 of file Rotation2D.h.
typedef RotationBase<Rotation2D<_Scalar>,2> Eigen::Rotation2D< _Scalar >::Base [private] |
Definition at line 43 of file Rotation2D.h.
typedef Matrix<Scalar,2,2> Eigen::Rotation2D< _Scalar >::Matrix2 |
Definition at line 53 of file Rotation2D.h.
typedef _Scalar Eigen::Rotation2D< _Scalar >::Scalar |
the scalar type of the coefficients
Reimplemented from Eigen::RotationBase< Rotation2D< _Scalar >, 2 >.
Definition at line 51 of file Rotation2D.h.
typedef Matrix<Scalar,2,1> Eigen::Rotation2D< _Scalar >::Vector2 |
Definition at line 52 of file Rotation2D.h.
anonymous enum |
Eigen::Rotation2D< _Scalar >::Rotation2D | ( | const Scalar & | a | ) | [inline, explicit] |
Construct a 2D counter clock wise rotation from the angle a in radian.
Definition at line 62 of file Rotation2D.h.
: m_angle(a) {}
Eigen::Rotation2D< _Scalar >::Rotation2D | ( | ) | [inline] |
Default constructor wihtout initialization. The represented rotation is undefined.
Definition at line 65 of file Rotation2D.h.
{}
Eigen::Rotation2D< _Scalar >::Rotation2D | ( | const MatrixBase< Derived > & | m | ) | [inline, explicit] |
Construct a 2D rotation from a 2x2 rotation matrix mat.
Definition at line 72 of file Rotation2D.h.
{ fromRotationMatrix(m.derived()); }
Eigen::Rotation2D< _Scalar >::Rotation2D | ( | const Rotation2D< OtherScalarType > & | other | ) | [inline, explicit] |
Copy constructor with scalar type conversion
Definition at line 147 of file Rotation2D.h.
Scalar Eigen::Rotation2D< _Scalar >::angle | ( | ) | const [inline] |
Scalar& Eigen::Rotation2D< _Scalar >::angle | ( | ) | [inline] |
Definition at line 81 of file Rotation2D.h.
{ return m_angle; }
internal::cast_return_type<Rotation2D,Rotation2D<NewScalarType> >::type Eigen::Rotation2D< _Scalar >::cast | ( | ) | const [inline] |
*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 142 of file Rotation2D.h.
{ return typename internal::cast_return_type<Rotation2D,Rotation2D<NewScalarType> >::type(*this); }
Rotation2D< Scalar > & Eigen::Rotation2D< Scalar >::fromRotationMatrix | ( | const MatrixBase< Derived > & | mat | ) |
Set *this
from a 2x2 rotation matrix mat. In other words, this function extract the rotation angle from the rotation matrix.
Definition at line 176 of file Rotation2D.h.
{ using std::atan2; EIGEN_STATIC_ASSERT(Derived::RowsAtCompileTime==2 && Derived::ColsAtCompileTime==2,YOU_MADE_A_PROGRAMMING_MISTAKE) m_angle = atan2(mat.coeff(1,0), mat.coeff(0,0)); return *this; }
static Rotation2D Eigen::Rotation2D< _Scalar >::Identity | ( | ) | [inline, static] |
Definition at line 152 of file Rotation2D.h.
{ return Rotation2D(0); }
Rotation2D Eigen::Rotation2D< _Scalar >::inverse | ( | ) | const [inline] |
Reimplemented from Eigen::RotationBase< Rotation2D< _Scalar >, 2 >.
Definition at line 98 of file Rotation2D.h.
{ return Rotation2D(-m_angle); }
bool Eigen::Rotation2D< _Scalar >::isApprox | ( | const Rotation2D< _Scalar > & | other, |
const typename NumTraits< Scalar >::Real & | prec = NumTraits<Scalar>::dummy_precision() |
||
) | const [inline] |
true
if *this
is approximately equal to other, within the precision determined by prec.Definition at line 158 of file Rotation2D.h.
{ return internal::isApprox(m_angle,other.m_angle, prec); }
Rotation2D Eigen::Rotation2D< _Scalar >::operator* | ( | const Rotation2D< _Scalar > & | other | ) | const [inline] |
Concatenates two rotations
Definition at line 101 of file Rotation2D.h.
{ return Rotation2D(m_angle + other.m_angle); }
Vector2 Eigen::Rotation2D< _Scalar >::operator* | ( | const Vector2 & | vec | ) | const [inline] |
Applies the rotation to a 2D vector
Definition at line 109 of file Rotation2D.h.
{ return toRotationMatrix() * vec; }
Rotation2D& Eigen::Rotation2D< _Scalar >::operator*= | ( | const Rotation2D< _Scalar > & | other | ) | [inline] |
Concatenates two rotations
Definition at line 105 of file Rotation2D.h.
{ m_angle += other.m_angle; return *this; }
Rotation2D& Eigen::Rotation2D< _Scalar >::operator= | ( | const MatrixBase< Derived > & | m | ) | [inline] |
Set *this
from a 2x2 rotation matrix mat. In other words, this function extract the rotation angle from the rotation matrix.
This method is an alias for fromRotationMatrix()
Definition at line 124 of file Rotation2D.h.
{ return fromRotationMatrix(m.derived()); }
Rotation2D Eigen::Rotation2D< _Scalar >::slerp | ( | const Scalar & | t, |
const Rotation2D< _Scalar > & | other | ||
) | const [inline] |
*this
and other using parameter t. It is in fact equivalent to a linear interpolation. Definition at line 130 of file Rotation2D.h.
{ Scalar dist = Rotation2D(other.m_angle-m_angle).smallestAngle(); return Rotation2D(m_angle + dist*t); }
Scalar Eigen::Rotation2D< _Scalar >::smallestAngle | ( | ) | const [inline] |
Scalar Eigen::Rotation2D< _Scalar >::smallestPositiveAngle | ( | ) | const [inline] |
Rotation2D< Scalar >::Matrix2 Eigen::Rotation2D< Scalar >::toRotationMatrix | ( | void | ) | const |
Constructs and
Reimplemented from Eigen::RotationBase< Rotation2D< _Scalar >, 2 >.
Definition at line 188 of file Rotation2D.h.
Scalar Eigen::Rotation2D< _Scalar >::m_angle [protected] |
Definition at line 57 of file Rotation2D.h.