Eigen::SkewSymmetricBase< Derived > Class Template Reference

Base class for skew symmetric matrices and expressions. More...

+ Inheritance diagram for Eigen::SkewSymmetricBase< Derived >:

Public Types

enum  {
  RowsAtCompileTime ,
  ColsAtCompileTime ,
  MaxRowsAtCompileTime ,
  MaxColsAtCompileTime ,
  IsVectorAtCompileTime ,
  Flags
}
 
typedef Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTimeDenseMatrixType
 
typedef DenseMatrixType DenseType
 
typedef SkewSymmetricMatrix3< ScalarPlainObject
 
typedef SkewSymmetricVectorType::RealScalar RealScalar
 
typedef SkewSymmetricVectorType::Scalar Scalar
 
using ScaleSkewSymmetricReturnType = SkewSymmetricWrapper< const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar, SkewSymmetricVectorType, product)>
 
template<typename OtherDerived >
using SkewSymmetricDifferenceReturnType = SkewSymmetricWrapper< const CwiseBinaryOp< internal::scalar_difference_op< SkewSymmetricVectorType ::Scalar, typename OtherDerived::SkewSymmetricVectorType ::Scalar >, const SkewSymmetricVectorType, const typename OtherDerived::SkewSymmetricVectorType > >
 
template<typename OtherDerived >
using SkewSymmetricProductReturnType = SkewSymmetricWrapper< const CwiseBinaryOp< internal::scalar_product_op< SkewSymmetricVectorType ::Scalar, typename OtherDerived::SkewSymmetricVectorType ::Scalar >, const SkewSymmetricVectorType, const typename OtherDerived::SkewSymmetricVectorType > >
 
using SkewSymmetricScaleReturnType = SkewSymmetricWrapper< const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(SkewSymmetricVectorType, Scalar, product)>
 
template<typename OtherDerived >
using SkewSymmetricSumReturnType = SkewSymmetricWrapper< const CwiseBinaryOp< internal::scalar_sum_op< SkewSymmetricVectorType ::Scalar, typename OtherDerived::SkewSymmetricVectorType ::Scalar >, const SkewSymmetricVectorType, const typename OtherDerived::SkewSymmetricVectorType > >
 
typedef internal::traits< Derived >::SkewSymmetricVectorType SkewSymmetricVectorType
 
typedef internal::traits< Derived >::StorageIndex StorageIndex
 
typedef internal::traits< Derived >::StorageKind StorageKind
 
- Public Types inherited from Eigen::EigenBase< Derived >
typedef Eigen::Index Index
 The interface type of indices. More...
 
typedef internal::traits< Derived >::StorageKind StorageKind
 

Public Member Functions

EIGEN_CONSTEXPR Index cols () const
 
Derived & derived ()
 
const Derived & derived () const
 
EIGEN_CONSTEXPR Scalar determinant () const
 
DenseMatrixType exponential () const
 
template<typename MatrixDerived >
Product< Derived, MatrixDerived, LazyProductoperator* (const MatrixBase< MatrixDerived > &matrix) const
 
SkewSymmetricScaleReturnType operator* (const Scalar &scalar) const
 
template<typename MatrixDerived >
Product< Derived, MatrixDerived, LazyProductoperator* (const SkewSymmetricBase< MatrixDerived > &matrix) const
 
template<typename OtherDerived >
SkewSymmetricSumReturnType< OtherDerived > operator+ (const SkewSymmetricBase< OtherDerived > &other) const
 
template<typename OtherDerived >
SkewSymmetricDifferenceReturnType< OtherDerived > operator- (const SkewSymmetricBase< OtherDerived > &other) const
 
EIGEN_CONSTEXPR Index rows () const
 
DenseMatrixType toDenseMatrix () const
 
PlainObject transpose () const
 
SkewSymmetricVectorTypevector ()
 
const SkewSymmetricVectorTypevector () const
 
template<typename OtherDerived >
SkewSymmetricProductReturnType< OtherDerived > wedge (const SkewSymmetricBase< OtherDerived > &other) const
 
- Public Member Functions inherited from Eigen::EigenBase< Derived >
template<typename Dest >
void addTo (Dest &dst) const
 
template<typename Dest >
void applyThisOnTheLeft (Dest &dst) const
 
template<typename Dest >
void applyThisOnTheRight (Dest &dst) const
 
EIGEN_CONSTEXPR Index cols () const EIGEN_NOEXCEPT
 
Derived & const_cast_derived () const
 
const Derived & const_derived () const
 
Derived & derived ()
 
const Derived & derived () const
 
template<typename Dest >
void evalTo (Dest &dst) const
 
EIGEN_CONSTEXPR Index rows () const EIGEN_NOEXCEPT
 
EIGEN_CONSTEXPR Index size () const EIGEN_NOEXCEPT
 
template<typename Dest >
void subTo (Dest &dst) const
 

Detailed Description

template<typename Derived>
class Eigen::SkewSymmetricBase< Derived >

Base class for skew symmetric matrices and expressions.

This is the base class that is inherited by SkewSymmetricMatrix3 and related expression types, which internally use a three vector for storing the entries. SkewSymmetric types always represent square three times three matrices.

This implementations follows class DiagonalMatrix

Template Parameters
Derivedis the derived type, a SkewSymmetricMatrix3 or SkewSymmetricWrapper.
See also
class SkewSymmetricMatrix3, class SkewSymmetricWrapper

Definition at line 34 of file SkewSymmetricMatrix3.h.

Member Typedef Documentation

◆ DenseMatrixType

◆ DenseType

template<typename Derived >
typedef DenseMatrixType Eigen::SkewSymmetricBase< Derived >::DenseType

Definition at line 53 of file SkewSymmetricMatrix3.h.

◆ PlainObject

template<typename Derived >
typedef SkewSymmetricMatrix3<Scalar> Eigen::SkewSymmetricBase< Derived >::PlainObject

Definition at line 54 of file SkewSymmetricMatrix3.h.

◆ RealScalar

template<typename Derived >
typedef SkewSymmetricVectorType::RealScalar Eigen::SkewSymmetricBase< Derived >::RealScalar

Definition at line 39 of file SkewSymmetricMatrix3.h.

◆ Scalar

template<typename Derived >
typedef SkewSymmetricVectorType::Scalar Eigen::SkewSymmetricBase< Derived >::Scalar

Definition at line 38 of file SkewSymmetricMatrix3.h.

◆ ScaleSkewSymmetricReturnType

◆ SkewSymmetricDifferenceReturnType

template<typename Derived >
template<typename OtherDerived >
using Eigen::SkewSymmetricBase< Derived >::SkewSymmetricDifferenceReturnType = SkewSymmetricWrapper<const CwiseBinaryOp< internal::scalar_difference_op < SkewSymmetricVectorType ::Scalar, typename OtherDerived::SkewSymmetricVectorType ::Scalar>, const SkewSymmetricVectorType , const typename OtherDerived::SkewSymmetricVectorType > >

Definition at line 166 of file SkewSymmetricMatrix3.h.

◆ SkewSymmetricProductReturnType

template<typename Derived >
template<typename OtherDerived >
using Eigen::SkewSymmetricBase< Derived >::SkewSymmetricProductReturnType = SkewSymmetricWrapper<const CwiseBinaryOp< internal::scalar_product_op < SkewSymmetricVectorType ::Scalar, typename OtherDerived::SkewSymmetricVectorType ::Scalar>, const SkewSymmetricVectorType , const typename OtherDerived::SkewSymmetricVectorType > >

Definition at line 125 of file SkewSymmetricMatrix3.h.

◆ SkewSymmetricScaleReturnType

◆ SkewSymmetricSumReturnType

template<typename Derived >
template<typename OtherDerived >
using Eigen::SkewSymmetricBase< Derived >::SkewSymmetricSumReturnType = SkewSymmetricWrapper<const CwiseBinaryOp< internal::scalar_sum_op < SkewSymmetricVectorType ::Scalar, typename OtherDerived::SkewSymmetricVectorType ::Scalar>, const SkewSymmetricVectorType , const typename OtherDerived::SkewSymmetricVectorType > >

Definition at line 155 of file SkewSymmetricMatrix3.h.

◆ SkewSymmetricVectorType

template<typename Derived >
typedef internal::traits<Derived>::SkewSymmetricVectorType Eigen::SkewSymmetricBase< Derived >::SkewSymmetricVectorType

Definition at line 37 of file SkewSymmetricMatrix3.h.

◆ StorageIndex

template<typename Derived >
typedef internal::traits<Derived>::StorageIndex Eigen::SkewSymmetricBase< Derived >::StorageIndex

Definition at line 41 of file SkewSymmetricMatrix3.h.

◆ StorageKind

template<typename Derived >
typedef internal::traits<Derived>::StorageKind Eigen::SkewSymmetricBase< Derived >::StorageKind

Definition at line 40 of file SkewSymmetricMatrix3.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename Derived >
anonymous enum
Enumerator
RowsAtCompileTime 
ColsAtCompileTime 
MaxRowsAtCompileTime 
MaxColsAtCompileTime 
IsVectorAtCompileTime 
Flags 

Definition at line 43 of file SkewSymmetricMatrix3.h.

43  {
44  RowsAtCompileTime = SkewSymmetricVectorType::SizeAtCompileTime,
45  ColsAtCompileTime = SkewSymmetricVectorType::SizeAtCompileTime,
46  MaxRowsAtCompileTime = SkewSymmetricVectorType::MaxSizeAtCompileTime,
47  MaxColsAtCompileTime = SkewSymmetricVectorType::MaxSizeAtCompileTime,
50  };
const unsigned int NoPreferredStorageOrderBit
Definition: Constants.h:180

Member Function Documentation

◆ cols()

template<typename Derived >
EIGEN_CONSTEXPR Index Eigen::SkewSymmetricBase< Derived >::cols ( void  ) const
inline
Returns
the number of columns.

Definition at line 104 of file SkewSymmetricMatrix3.h.

104 { return 3; }

◆ derived() [1/2]

template<typename Derived >
Derived& Eigen::SkewSymmetricBase< Derived >::derived ( )
inline
Returns
a const reference to the derived object.

Definition at line 61 of file SkewSymmetricMatrix3.h.

61 { return *static_cast<Derived*>(this); }

◆ derived() [2/2]

template<typename Derived >
const Derived& Eigen::SkewSymmetricBase< Derived >::derived ( ) const
inline
Returns
a reference to the derived object.

Definition at line 58 of file SkewSymmetricMatrix3.h.

58 { return *static_cast<const Derived*>(this); }

◆ determinant()

template<typename Derived >
EIGEN_CONSTEXPR Scalar Eigen::SkewSymmetricBase< Derived >::determinant ( ) const
inline

Determinant vanishes

Definition at line 72 of file SkewSymmetricMatrix3.h.

72 { return 0; }

◆ exponential()

template<typename Derived >
DenseMatrixType Eigen::SkewSymmetricBase< Derived >::exponential ( ) const
inline
Returns
the exponential of this matrix using Rodrigues’ formula

Definition at line 80 of file SkewSymmetricMatrix3.h.

80  {
82  const SkewSymmetricVectorType& v = vector();
83  if (v.isZero()) {
84  return retVal;
85  }
86  const Scalar norm2 = v.squaredNorm();
87  const Scalar norm = numext::sqrt(norm2);
88  retVal += ((((1 - numext::cos(norm))/norm2)*derived())*derived()) + (numext::sin(norm)/norm)*derived().toDenseMatrix();
89  return retVal;
90  }
Array< int, Dynamic, 1 > v
static const IdentityReturnType Identity()
const Derived & derived() const
const SkewSymmetricVectorType & vector() const
internal::traits< Derived >::SkewSymmetricVectorType SkewSymmetricVectorType
SkewSymmetricVectorType::Scalar Scalar
Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime > DenseMatrixType
EIGEN_ALWAYS_INLINE T sin(const T &x)
EIGEN_ALWAYS_INLINE float sqrt(const float &x)
EIGEN_ALWAYS_INLINE T cos(const T &x)

◆ operator*() [1/3]

template<typename Derived >
template<typename MatrixDerived >
Product<Derived,MatrixDerived,LazyProduct> Eigen::SkewSymmetricBase< Derived >::operator* ( const MatrixBase< MatrixDerived > &  matrix) const
inline
Returns
the matrix product of *this by the dense matrix, matrix

Definition at line 110 of file SkewSymmetricMatrix3.h.

111  {
112  return Product<Derived, MatrixDerived, LazyProduct>(derived(), matrix.derived());
113  }

◆ operator*() [2/3]

template<typename Derived >
SkewSymmetricScaleReturnType Eigen::SkewSymmetricBase< Derived >::operator* ( const Scalar scalar) const
inline
Returns
the product of *this by the scalar scalar

Definition at line 141 of file SkewSymmetricMatrix3.h.

141  {
142  return (vector() * scalar).asSkewSymmetric();
143  }

◆ operator*() [3/3]

template<typename Derived >
template<typename MatrixDerived >
Product<Derived,MatrixDerived,LazyProduct> Eigen::SkewSymmetricBase< Derived >::operator* ( const SkewSymmetricBase< MatrixDerived > &  matrix) const
inline
Returns
the matrix product of *this by the skew symmetric matrix, matrix

Definition at line 119 of file SkewSymmetricMatrix3.h.

120  {
121  return Product<Derived, MatrixDerived, LazyProduct>(derived(), matrix.derived());
122  }

◆ operator+()

template<typename Derived >
template<typename OtherDerived >
SkewSymmetricSumReturnType<OtherDerived> Eigen::SkewSymmetricBase< Derived >::operator+ ( const SkewSymmetricBase< OtherDerived > &  other) const
inline
Returns
the sum of *this and the skew symmetric matrix other

Definition at line 160 of file SkewSymmetricMatrix3.h.

161  {
162  return (vector() + other.vector()).asSkewSymmetric();
163  }

◆ operator-()

template<typename Derived >
template<typename OtherDerived >
SkewSymmetricDifferenceReturnType<OtherDerived> Eigen::SkewSymmetricBase< Derived >::operator- ( const SkewSymmetricBase< OtherDerived > &  other) const
inline
Returns
the difference of *this and the skew symmetric matrix other

Definition at line 171 of file SkewSymmetricMatrix3.h.

172  {
173  return (vector() - other.vector()).asSkewSymmetric();
174  }

◆ rows()

template<typename Derived >
EIGEN_CONSTEXPR Index Eigen::SkewSymmetricBase< Derived >::rows ( void  ) const
inline
Returns
the number of rows.

Definition at line 101 of file SkewSymmetricMatrix3.h.

101 { return 3; }

◆ toDenseMatrix()

template<typename Derived >
DenseMatrixType Eigen::SkewSymmetricBase< Derived >::toDenseMatrix ( ) const
inline

Constructs a dense matrix from *this. Note, this directly returns a dense matrix type, not an expression.

Returns
A dense matrix, with its entries set from the the derived object.

Definition at line 68 of file SkewSymmetricMatrix3.h.

68 { return derived(); }

◆ transpose()

template<typename Derived >
PlainObject Eigen::SkewSymmetricBase< Derived >::transpose ( ) const
inline

A.transpose() = -A

Definition at line 76 of file SkewSymmetricMatrix3.h.

76 { return (-vector()).asSkewSymmetric(); }

◆ vector() [1/2]

template<typename Derived >
SkewSymmetricVectorType& Eigen::SkewSymmetricBase< Derived >::vector ( )
inline
Returns
a const reference to the derived object's vector of coefficients.

Definition at line 97 of file SkewSymmetricMatrix3.h.

97 { return derived().vector(); }

◆ vector() [2/2]

template<typename Derived >
const SkewSymmetricVectorType& Eigen::SkewSymmetricBase< Derived >::vector ( ) const
inline
Returns
a reference to the derived object's vector of coefficients.

Definition at line 94 of file SkewSymmetricMatrix3.h.

94 { return derived().vector(); }

◆ wedge()

template<typename Derived >
template<typename OtherDerived >
SkewSymmetricProductReturnType<OtherDerived> Eigen::SkewSymmetricBase< Derived >::wedge ( const SkewSymmetricBase< OtherDerived > &  other) const
inline
Returns
the wedge product of *this by the skew symmetric matrix other A wedge B = AB - BA

Definition at line 131 of file SkewSymmetricMatrix3.h.

132  {
133  return vector().cross(other.vector()).asSkewSymmetric();
134  }

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