template<class TReal>
class sofa::linearalgebra::RotationMatrix< TReal >
3x3 block-diagonal matrix where each block is considered as a rotation.
- Template Parameters
-
One of the feature of this class is to rotate another matrix: if M is a matrix and R is a rotation matrix, it can compute M * R.
|
sofa::SignedIndex | rowSize (void) const override |
| Number of rows. More...
|
|
sofa::SignedIndex | colSize (void) const override |
| Number of columns. More...
|
|
SReal | element (Index i, sofa::SignedIndex j) const override |
| Read the value of the element at row i, column j (using 0-based indices) More...
|
|
void | resize (sofa::SignedIndex nbRow, sofa::SignedIndex nbCol) override |
| Resize the matrix and reset all values to 0. More...
|
|
void | clear () override |
| Reset all values to 0. More...
|
|
virtual void | setIdentity () |
|
void | set (sofa::SignedIndex i, sofa::SignedIndex j, double v) override |
| Write the value of the element at row i, column j (using 0-based indices) More...
|
|
void | add (sofa::SignedIndex i, sofa::SignedIndex j, double v) override |
| Add v to the existing value of the element at row i, column j (using 0-based indices) More...
|
|
virtual type::vector< Real > & | getVector () |
|
void | opMulV (linearalgebra::BaseVector *result, const linearalgebra::BaseVector *v) const override |
| Multiply the matrix by vector v and put the result in vector result. More...
|
|
void | opMulTV (linearalgebra::BaseVector *result, const linearalgebra::BaseVector *v) const override |
| Multiply the transposed matrix by vector v and put the result in vector result. More...
|
|
void | opMulTM (linearalgebra::BaseMatrix *bresult, linearalgebra::BaseMatrix *bm) const override |
| multiply the transpose current matrix by m matrix and strore the result in m More...
|
|
void | rotateMatrix (linearalgebra::BaseMatrix *mat, const linearalgebra::BaseMatrix *Jmat) |
|
const char * | Name () |
|
const char * | Name () |
|
SOFA_LINEARALGEBRA_API const char * | Name () |
|
SOFA_LINEARALGEBRA_API const char * | Name () |
|
virtual void | add (Index row, Index col, double v)=0 |
| Add v to the existing value of the element at row i, column j (using 0-based indices) More...
|
|
virtual void | add (Index row, Index col, const type::Mat3x3d &_M) |
| Adding values from a 3x3d matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat3x3f &_M) |
| Adding values from a 3x3f matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat2x2d &_M) |
| Adding values from a 2x2d matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat2x2f &_M) |
| Adding values from a 2x2f matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat6x6d &_M) |
| Adding values from a 6x6d matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat6x6f &_M) |
| Adding values from a 6x6f matrix. This function may be overload to obtain better performances. More...
|
|
| BaseMatrix () |
|
virtual | ~BaseMatrix () |
|
Index | rows (void) const |
| Number of rows (Eigen-compatible API) More...
|
|
Index | cols (void) const |
| Number of columns (Eigen-compatible API) More...
|
|
SReal | operator() (Index i, Index j) const |
| Read the value of the element at row i, column j (using 0-based indices). Eigen-compatible API. More...
|
|
virtual void | add (Index row, Index col, const type::Mat3x3d &_M) |
| Adding values from a 3x3d matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat3x3f &_M) |
| Adding values from a 3x3f matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat2x2d &_M) |
| Adding values from a 2x2d matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat2x2f &_M) |
| Adding values from a 2x2f matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat6x6d &_M) |
| Adding values from a 6x6d matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | add (Index row, Index col, const type::Mat6x6f &_M) |
| Adding values from a 6x6f matrix. This function may be overload to obtain better performances. More...
|
|
virtual void | clear (Index i, Index j) |
|
virtual void | clearRow (Index i) |
| Reset all the values in row i to 0. More...
|
|
virtual void | clearRows (Index imin, Index imax) |
| Clears the value of rows imin to imax-1. More...
|
|
virtual void | clearCol (Index j) |
| Reset the all values in column j to 0. More...
|
|
virtual void | clearCols (Index imin, Index imax) |
| Clears all the values in columns imin to imax-1. More...
|
|
virtual void | clearRowCol (Index i) |
| Reset the value of both row and column i to 0. More...
|
|
virtual void | clearRowsCols (Index imin, Index imax) |
| Clears all the values in rows imin to imax-1 and columns imin to imax-1. More...
|
|
virtual void | compress () |
|
virtual void | opMulV (float *result, const float *v) const |
| Multiply the matrix by float vector v and put the result in vector result. More...
|
|
virtual void | opMulV (double *result, const double *v) const |
| Multiply the matrix by double vector v and put the result in vector result. More...
|
|
virtual void | opPMulV (linearalgebra::BaseVector *result, const linearalgebra::BaseVector *v) const |
| Multiply the matrix by vector v and add the result in vector result. More...
|
|
virtual void | opPMulV (float *result, const float *v) const |
| Multiply the matrix by float vector v and add the result in vector result. More...
|
|
virtual void | opPMulV (double *result, const double *v) const |
| Multiply the matrix by double vector v and add the result in vector result. More...
|
|
virtual void | opMulTV (float *result, const float *v) const |
| Multiply the transposed matrix by float vector v and put the result in vector result. More...
|
|
virtual void | opMulTV (double *result, const double *v) const |
| Multiply the transposed matrix by double vector v and put the result in vector result. More...
|
|
virtual void | opPMulTV (linearalgebra::BaseVector *result, const linearalgebra::BaseVector *v) const |
| Multiply the transposed matrix by vector v and add the result in vector result. More...
|
|
virtual void | opPMulTV (float *result, const float *v) const |
| Multiply the transposed matrix by float vector v and add the result in vector result. More...
|
|
virtual void | opPMulTV (double *result, const double *v) const |
| Multiply the transposed matrix by double vector v and add the result in vector result. More...
|
|
virtual void | opAddM (linearalgebra::BaseMatrix *m, double fact) const |
| Subtract the matrix to the m matrix and strore the result in m. More...
|
|
virtual void | opAddMT (linearalgebra::BaseMatrix *m, double fact) const |
| Subtract the transposed matrix to the m matrix and strore the result in m. More...
|
|
virtual ElementType | getElementType () const |
|
virtual std::size_t | getElementSize () const |
|
virtual MatrixCategory | getCategory () const |
|
virtual Index | getBlockRows () const |
|
virtual Index | getBlockCols () const |
|
virtual Index | bRowSize () const |
|
virtual Index | bColSize () const |
|
virtual Index | getBandWidth () const |
|
bool | isDiagonal () const |
|
bool | isBlockDiagonal () const |
|
bool | isBand () const |
|
bool | isSparse () const |
|
virtual BlockConstAccessor | blocGet (Index i, Index j) const |
| Get read access to a block. More...
|
|
virtual BlockAccessor | blocGetW (Index i, Index j) |
| Get write access to a block. More...
|
|
virtual BlockAccessor | blocCreate (Index i, Index j) |
| Get write access to a block, possibly creating it. More...
|
|
template<class T > |
const T * | blocElements (Index i, Index j, T *buffer) const |
| Shortcut for blocGet(i,j).elements(buffer) More...
|
|
template<class T > |
void | blocSet (Index i, Index j, const T *buffer) |
| Shortcut for blocCreate(i,j).set(buffer) More...
|
|
template<class T > |
void | blocAdd (Index i, Index j, const T *buffer) |
| Shortcut for blocCreate(i,j).add(buffer) More...
|
|
virtual ColBlockConstIterator | bRowBegin (Index ib) const |
| Get the iterator corresponding to the beginning of the given row of blocks. More...
|
|
virtual ColBlockConstIterator | bRowEnd (Index ib) const |
| Get the iterator corresponding to the end of the given row of blocks. More...
|
|
virtual std::pair< ColBlockConstIterator, ColBlockConstIterator > | bRowRange (Index ib) const |
| Get the iterators corresponding to the beginning and end of the given row of blocks. More...
|
|
virtual RowBlockConstIterator | bRowsBegin () const |
| Get the iterator corresponding to the beginning of the rows of blocks. More...
|
|
virtual RowBlockConstIterator | bRowsEnd () const |
| Get the iterator corresponding to the end of the rows of blocks. More...
|
|
virtual std::pair< RowBlockConstIterator, RowBlockConstIterator > | bRowsRange () const |
| Get the iterators corresponding to the beginning and end of the given row of blocks. More...
|
|
|
template<typename real2 > |
void | rotateSparseMatrix (linearalgebra::BaseMatrix *result, const SparseMatrix< real2 > *Jmat) |
|
virtual void | bAccessorDelete (const InternalBlockAccessor *) const |
|
virtual void | bAccessorCopy (InternalBlockAccessor *) const |
|
virtual SReal | bAccessorElement (const InternalBlockAccessor *b, Index i, Index j) const |
|
virtual void | bAccessorSet (InternalBlockAccessor *b, Index i, Index j, double v) |
|
virtual void | bAccessorAdd (InternalBlockAccessor *b, Index i, Index j, double v) |
|
template<class T > |
const T * | bAccessorElementsDefaultImpl (const InternalBlockAccessor *b, T *buffer) const |
|
virtual const float * | bAccessorElements (const InternalBlockAccessor *b, float *buffer) const |
|
virtual const double * | bAccessorElements (const InternalBlockAccessor *b, double *buffer) const |
|
virtual const int * | bAccessorElements (const InternalBlockAccessor *b, int *buffer) const |
|
template<class T > |
void | bAccessorSetDefaultImpl (InternalBlockAccessor *b, const T *buffer) |
|
virtual void | bAccessorSet (InternalBlockAccessor *b, const float *buffer) |
|
virtual void | bAccessorSet (InternalBlockAccessor *b, const double *buffer) |
|
virtual void | bAccessorSet (InternalBlockAccessor *b, const int *buffer) |
|
template<class T > |
void | bAccessorAddDefaultImpl (InternalBlockAccessor *b, const T *buffer) |
|
virtual void | bAccessorAdd (InternalBlockAccessor *b, const float *buffer) |
|
virtual void | bAccessorAdd (InternalBlockAccessor *b, const double *buffer) |
|
virtual void | bAccessorAdd (InternalBlockAccessor *b, const int *buffer) |
|
template<class T > |
T * | bAccessorPrepareAddDefaultImpl (InternalBlockAccessor *, T *buffer) |
|
virtual float * | bAccessorPrepareAdd (InternalBlockAccessor *b, float *buffer) |
|
virtual double * | bAccessorPrepareAdd (InternalBlockAccessor *b, double *buffer) |
|
virtual int * | bAccessorPrepareAdd (InternalBlockAccessor *b, int *buffer) |
|
virtual void | bAccessorFinishAdd (InternalBlockAccessor *b, const float *buffer) |
|
virtual void | bAccessorFinishAdd (InternalBlockAccessor *b, const double *buffer) |
|
virtual void | bAccessorFinishAdd (InternalBlockAccessor *b, const int *buffer) |
|
BlockAccessor | createBlockAccessor (Index row, Index col, void *internalPtr=nullptr) |
|
BlockAccessor | createBlockAccessor (Index row, Index col, Index internalData) |
|
BlockConstAccessor | createBlockConstAccessor (Index row, Index col, void *internalPtr=nullptr) const |
|
BlockConstAccessor | createBlockConstAccessor (Index row, Index col, Index internalData) const |
|
void | setMatrix (BlockAccessor *b) |
|
void | setMatrix (BlockConstAccessor *b) const |
|
virtual void | itCopyColBlock (InternalColBlockIterator *) const |
|
virtual void | itDeleteColBlock (const InternalColBlockIterator *) const |
|
virtual void | itAccessColBlock (InternalColBlockIterator *it, BlockConstAccessor *b) const |
|
virtual void | itIncColBlock (InternalColBlockIterator *it) const |
|
virtual void | itDecColBlock (InternalColBlockIterator *it) const |
|
virtual bool | itEqColBlock (const InternalColBlockIterator *it, const InternalColBlockIterator *it2) const |
|
virtual bool | itLessColBlock (const InternalColBlockIterator *it, const InternalColBlockIterator *it2) const |
|
ColBlockConstIterator | createColBlockConstIterator (Index row, void *internalPtr) const |
|
ColBlockConstIterator | createColBlockConstIterator (Index row, Index internalData) const |
|
virtual void | itCopyRowBlock (InternalRowBlockIterator *) const |
|
virtual void | itDeleteRowBlock (const InternalRowBlockIterator *) const |
|
virtual Index | itAccessRowBlock (InternalRowBlockIterator *it) const |
|
virtual ColBlockConstIterator | itBeginRowBlock (InternalRowBlockIterator *it) const |
|
virtual ColBlockConstIterator | itEndRowBlock (InternalRowBlockIterator *it) const |
|
virtual std::pair< ColBlockConstIterator, ColBlockConstIterator > | itRangeRowBlock (InternalRowBlockIterator *it) const |
|
virtual void | itIncRowBlock (InternalRowBlockIterator *it) const |
|
virtual void | itDecRowBlock (InternalRowBlockIterator *it) const |
|
virtual bool | itEqRowBlock (const InternalRowBlockIterator *it, const InternalRowBlockIterator *it2) const |
|
virtual bool | itLessRowBlock (const InternalRowBlockIterator *it, const InternalRowBlockIterator *it2) const |
|
RowBlockConstIterator | createRowBlockConstIterator (void *internalPtr) const |
|
RowBlockConstIterator | createRowBlockConstIterator (Index internalData0, Index internalData1) const |
|