Simbody
Public Types | Public Member Functions

SimTK::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 SimTK::InverseRotation_< P >:

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.
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.

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.
const RotationPinvert () const
 We can invert an InverseRotation just by recasting it to a Rotation at zero cost.
RotationPupdInvert ()
 We can invert an InverseRotation just by recasting it to a Rotation at zero cost.
const RotationPtranspose () const
 Transpose, and transpose operators (override BaseMat versions of transpose).
const RotationPoperator~ () const
 Transpose, and transpose operators (override BaseMat versions of transpose).
RotationPupdTranspose ()
 Transpose, and transpose operators (override BaseMat versions of transpose).
RotationPoperator~ ()
 Transpose, and transpose operators (override BaseMat versions of transpose).
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
 Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned.
const ColTypex () const
 Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned.
const ColTypey () const
 Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned.
const ColTypez () const
 Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned.
const RowTypeoperator[] (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 ColTypeoperator() (int j) const
 Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned.
const BaseMatasMat33 () const
 Conversion from InverseRotation_ to BaseMat.
BaseMat toMat33 () const
 Conversion from InverseRotation_ to BaseMat.

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

template<class P>
typedef Mat<3,3,P>::TransposeType SimTK::InverseRotation_< P >::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.

template<class P>
typedef UnitVec<P,BaseMat::RowSpacing> SimTK::InverseRotation_< P >::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.

template<class P>
typedef UnitRow<P,BaseMat::ColSpacing> SimTK::InverseRotation_< P >::RowType

This is the type of a row of this InverseRotation.


Constructor & Destructor Documentation

template<class P>
SimTK::InverseRotation_< P >::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.

template<class P>
SimTK::InverseRotation_< P >::InverseRotation_ ( const InverseRotation_< P > &  R) [inline]

This is an explicit implementation of the default copy constructor.


Member Function Documentation

template<class P>
InverseRotation_& SimTK::InverseRotation_< P >::operator= ( const InverseRotation_< P > &  R) [inline]

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

template<class P>
SymMat33P SimTK::InverseRotation_< P >::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()
template<class P>
const RotationP& SimTK::InverseRotation_< P >::invert ( ) const [inline]

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

Reimplemented from SimTK::Mat< M, N, ELT, CS, RS >.

template<class P>
RotationP& SimTK::InverseRotation_< P >::updInvert ( ) [inline]

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

template<class P>
const RotationP& SimTK::InverseRotation_< P >::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 SimTK::Mat< M, N, ELT, CS, RS >.

template<class P>
const RotationP& SimTK::InverseRotation_< P >::operator~ ( ) 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 SimTK::Mat< M, N, ELT, CS, RS >.

template<class P>
RotationP& SimTK::InverseRotation_< P >::updTranspose ( ) [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 SimTK::Mat< M, N, ELT, CS, RS >.

template<class P>
RotationP& SimTK::InverseRotation_< P >::operator~ ( ) [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 SimTK::Mat< M, N, ELT, CS, RS >.

template<class P>
const RowType& SimTK::InverseRotation_< P >::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 SimTK::Mat< M, N, ELT, CS, RS >.

template<class P>
const ColType& SimTK::InverseRotation_< P >::col ( int  j) 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 SimTK::Mat< M, N, ELT, CS, RS >.

template<class P>
const ColType& SimTK::InverseRotation_< P >::x ( ) 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.

template<class P>
const ColType& SimTK::InverseRotation_< P >::y ( ) 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.

template<class P>
const ColType& SimTK::InverseRotation_< P >::z ( ) 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.

template<class P>
const RowType& SimTK::InverseRotation_< P >::operator[] ( 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 SimTK::Mat< M, N, ELT, CS, RS >.

template<class P>
const ColType& SimTK::InverseRotation_< P >::operator() ( int  j) 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 SimTK::Mat< M, N, ELT, CS, RS >.

template<class P>
const BaseMat& SimTK::InverseRotation_< P >::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.

template<class P>
BaseMat SimTK::InverseRotation_< P >::toMat33 ( ) const [inline]

Conversion from InverseRotation_ to BaseMat.

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


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines