Simbody
|
----------------------------------------------------------------------------- This InverseRotation class is the inverse of a Rotation See the Rotation class for information. More...
#include <Rotation.h>
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 RotationP & | invert () const |
We can invert an InverseRotation just by recasting it to a Rotation at zero cost. | |
RotationP & | updInvert () |
We can invert an InverseRotation just by recasting it to a Rotation at zero cost. | |
const RotationP & | transpose () const |
Transpose, and transpose operators (override BaseMat versions of transpose). | |
const RotationP & | operator~ () const |
Transpose, and transpose operators (override BaseMat versions of transpose). | |
RotationP & | updTranspose () |
Transpose, and transpose operators (override BaseMat versions of transpose). | |
RotationP & | operator~ () |
Transpose, and transpose operators (override BaseMat versions of transpose). | |
const RowType & | row (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 ColType & | col (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 ColType & | x () const |
Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned. | |
const ColType & | y () const |
Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned. | |
const ColType & | z () const |
Access individual rows and columns of this InverseRotation; no cost or copying since suitably-cast references to the actual data are returned. | |
const RowType & | operator[] (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 ColType & | operator() (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 BaseMat & | asMat33 () const |
Conversion from InverseRotation_ to BaseMat. | |
BaseMat | toMat33 () const |
Conversion from InverseRotation_ to BaseMat. |
----------------------------------------------------------------------------- This InverseRotation class is the inverse of a Rotation See the Rotation class for information.
-----------------------------------------------------------------------------
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.
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.
typedef UnitRow<P,BaseMat::ColSpacing> SimTK::InverseRotation_< P >::RowType |
This is the type of a row of this InverseRotation.
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.
SimTK::InverseRotation_< P >::InverseRotation_ | ( | const InverseRotation_< P > & | R | ) | [inline] |
This is an explicit implementation of the default copy constructor.
InverseRotation_& SimTK::InverseRotation_< P >::operator= | ( | const InverseRotation_< P > & | R | ) | [inline] |
This is an explicit implementation of the default copy assignment operator.
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.
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 >.
RotationP& SimTK::InverseRotation_< P >::updInvert | ( | ) | [inline] |
We can invert an InverseRotation just by recasting it to a Rotation at zero cost.
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 >.
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 >.
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 >.
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 >.
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 >.
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 >.
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.
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.
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.
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 >.
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 >.
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.
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.