----------------------------------------------------------------------------- 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. | |
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 RotationP & | invert () const |
We can invert an InverseRotation just by recasting it to a Rotation at zero cost. | |
RotationP & | updInvert () |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
const RotationP & | transpose () const |
Transpose, and transpose operators (override BaseMat versions of transpose). | |
const RotationP & | operator~ () const |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
RotationP & | updTranspose () |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
RotationP & | operator~ () |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
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 |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
const ColType & | x () const |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
const ColType & | y () const |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
const ColType & | z () const |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
const RowType & | operator[] (int i) const |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
const ColType & | operator() (int j) const |
Note that the unit vectors representing the rows and columns of this matrix do not necessarily have unit stride. | |
const BaseMat & | asMat33 () 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. |
----------------------------------------------------------------------------- This InverseRotation class is the inverse of a Rotation See the Rotation class for information.
-----------------------------------------------------------------------------
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.
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.
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.
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().
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 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().