InverseRotation_< P > Class Template Reference

----------------------------------------------------------------------------- This InverseRotation class is the inverse of a Rotation See the Rotation class for information. More...

#include <Rotation.h>

Inheritance diagram for InverseRotation_< P >:
Mat< N, M, EHerm, RS, CS >

List of all members.

Public Types

typedef Mat< 3, 3, P >
::TransposeType 
BaseMat
 This is the type of the underlying 3x3 matrix; note that it will have unusual row and column spacing since we're viewing it as transposed.

Public Member Functions

 InverseRotation_ ()
 You should not ever construct one of these as they should only occur as expression intermediates resulting from use of the "~" operator on a Rotation.
 InverseRotation_ (const InverseRotation_ &R)
 This is an explicit implementation of the default copy constructor.
InverseRotation_operator= (const InverseRotation_ &R)
 This is an explicit implementation of the default copy assignment operator.
SymMat33P reexpressSymMat33 (const SymMat33P &S_BB) const
 Assuming this InverseRotation_ is R_AB, and given a symmetric dyadic matrix S_BB expressed in B, we can reexpress it in A using S_AA=R_AB*S_BB*R_BA.



typedef UnitVec< P,
BaseMat::RowSpacing > 
ColType
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
typedef UnitRow< P,
BaseMat::ColSpacing > 
RowType
 This is the type of a row of this InverseRotation.
const RotationPinvert () const
 We can invert an InverseRotation just by recasting it to a Rotation at zero cost.
RotationPupdInvert ()
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
const RotationPtranspose () const
 Transpose, and transpose operators (override BaseMat versions of transpose).
const RotationPoperator~ () const
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
RotationPupdTranspose ()
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
RotationPoperator~ ()
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
const RowTyperow (int i) const
 Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned.
const ColTypecol (int j) const
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
const ColTypex () const
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
const ColTypey () const
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
const ColTypez () const
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
const RowTypeoperator[] (int i) const
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
const ColTypeoperator() (int j) const
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.
const BaseMatasMat33 () const
 Conversion from InverseRotation_ to BaseMat.
BaseMat toMat33 () const
 Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

Detailed Description

template<class P>
class SimTK::InverseRotation_< P >

----------------------------------------------------------------------------- This InverseRotation class is the inverse of a Rotation See the Rotation class for information.

-----------------------------------------------------------------------------


Member Typedef Documentation

typedef Mat<3,3,P>::TransposeType BaseMat

This is the type of the underlying 3x3 matrix; note that it will have unusual row and column spacing since we're viewing it as transposed.

typedef UnitVec<P,BaseMat::RowSpacing> ColType

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

typedef UnitRow<P,BaseMat::ColSpacing> RowType

This is the type of a row of this InverseRotation.


Constructor & Destructor Documentation

InverseRotation_ (  )  [inline]

You should not ever construct one of these as they should only occur as expression intermediates resulting from use of the "~" operator on a Rotation.

But if you must, the default will produce an identity rotation.

InverseRotation_ ( const InverseRotation_< P > &  R  )  [inline]

This is an explicit implementation of the default copy constructor.


Member Function Documentation

const BaseMat& asMat33 (  )  const [inline]

Conversion from InverseRotation_ to BaseMat.

Note: asMat33 is more efficient than toMat33() (no copy), but you have to know the internal layout.

Referenced by InverseRotation_< P >::col(), SimTK::operator*(), Rotation_< P >::operator*=(), InverseRotation_< P >::operator=(), Rotation_< P >::operator=(), InverseRotation_< P >::row(), and InverseRotation_< P >::toMat33().

const ColType& col ( int  j  )  const [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

Reimplemented from Mat< N, M, EHerm, RS, CS >.

References InverseRotation_< P >::asMat33().

Referenced by InverseRotation_< P >::operator()(), InverseRotation_< P >::x(), InverseRotation_< P >::y(), and InverseRotation_< P >::z().

const RotationP& invert (  )  const [inline]

We can invert an InverseRotation just by recasting it to a Rotation at zero cost.

Reimplemented from Mat< N, M, EHerm, RS, CS >.

Referenced by InverseRotation_< P >::operator~(), and InverseRotation_< P >::transpose().

const ColType& operator() ( int  j  )  const [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

Reimplemented from Mat< N, M, EHerm, RS, CS >.

References InverseRotation_< P >::col().

InverseRotation_& operator= ( const InverseRotation_< P > &  R  )  [inline]

This is an explicit implementation of the default copy assignment operator.

References InverseRotation_< P >::asMat33().

const RowType& operator[] ( int  i  )  const [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

Reimplemented from Mat< N, M, EHerm, RS, CS >.

References InverseRotation_< P >::row().

RotationP& operator~ (  )  [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

Reimplemented from Mat< N, M, EHerm, RS, CS >.

References InverseRotation_< P >::updInvert().

const RotationP& operator~ (  )  const [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

Reimplemented from Mat< N, M, EHerm, RS, CS >.

References InverseRotation_< P >::invert().

SymMat33P reexpressSymMat33 ( const SymMat33P S_BB  )  const

Assuming this InverseRotation_ is R_AB, and given a symmetric dyadic matrix S_BB expressed in B, we can reexpress it in A using S_AA=R_AB*S_BB*R_BA.

The matrix should be one that is formed as products of vectors expressed in A, such as inertia, gyration or covariance matrices. This can be done efficiently exploiting properties of R and S. Cost is 57 flops.

See also:
Rotation::reexpressSymMat33()
const RowType& row ( int  i  )  const [inline]

Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned.

There are no writable versions of these methods since changing a single row or column would violate the contract that these are always legitimate rotation matrices.

Reimplemented from Mat< N, M, EHerm, RS, CS >.

References InverseRotation_< P >::asMat33().

Referenced by InverseRotation_< P >::operator[]().

BaseMat toMat33 (  )  const [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

References InverseRotation_< P >::asMat33().

const RotationP& transpose (  )  const [inline]

Transpose, and transpose operators (override BaseMat versions of transpose).

For an orthogonal matrix like this one transpose is the same as inverse.

Reimplemented from Mat< N, M, EHerm, RS, CS >.

References InverseRotation_< P >::invert().

RotationP& updInvert (  )  [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

Referenced by InverseRotation_< P >::operator~(), and InverseRotation_< P >::updTranspose().

RotationP& updTranspose (  )  [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

Reimplemented from Mat< N, M, EHerm, RS, CS >.

References InverseRotation_< P >::updInvert().

const ColType& x (  )  const [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

References InverseRotation_< P >::col().

const ColType& y (  )  const [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

References InverseRotation_< P >::col().

const ColType& z (  )  const [inline]

Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride.

This is the type of a column of this InverseRotation.

References InverseRotation_< P >::col().


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

Generated on Thu Aug 12 16:38:29 2010 for SimTKcore by  doxygen 1.6.1