SbMatrix(3IV)() | SbMatrix(3IV)() |
SbMatrix — 4x4 matrix class
SbMatrix
#include <Inventor/SbLinear.h>
Methods from class SbMatrix:
SbMatrix()
SbMatrix(float a11, float a12, float a13, float a14,
float a21, float a22, float a23, float a24, float a31, float a32, float a33,
float a34, float a41, float a42, float a43, float a44)
SbMatrix(const SbMat &m)
void setValue(const SbMat &m)
void getValue(SbMat &m) const
const SbMat & getValue() const
void makeIdentity()
static SbMatrix identity()
void setRotate(const SbRotation &q)
void setScale(float s)
void setScale(const SbVec3f &s)
void setTranslate(const SbVec3f &t)
void setTransform(const SbVec3f &t, const
SbRotation &r, const SbVec3f &s)
void setTransform(const SbVec3f &t, const
SbRotation &r, const SbVec3f &s, const SbRotation &so)
void setTransform(const SbVec3f &translation,
const SbRotation &rotation, const SbVec3f &scaleFactor, const
SbRotation &scaleOrientation, const SbVec3f ¢er)
void getTransform(SbVec3f &t, SbRotation &r,
SbVec3f &s, SbRotation &so) const
void getTransform(SbVec3f &translation, SbRotation
&rotation, SbVec3f &scaleFactor, SbRotation &scaleOrientation,
const SbVec3f ¢er) const
float det3(int r1, int r2, int r3, int c1, int c2, int
c3) const
float det3() const
float det4() const
SbBool factor(SbMatrix &r, SbVec3f &s,
SbMatrix &u, SbVec3f &t, SbMatrix &proj) const
SbMatrix inverse() const
SbBool LUDecomposition(int index[4], float &d)
void LUBackSubstitution(int index[4], float b[4])
const
SbMatrix transpose() const
SbMatrix & multRight(const SbMatrix &m)
SbMatrix & multLeft(const SbMatrix &m)
void multMatrixVec(const SbVec3f &src, SbVec3f
&dst) const
void multVecMatrix(const SbVec3f &src, SbVec3f
&dst) const
void multDirMatrix(const SbVec3f &src, SbVec3f
&dst) const
void multLineMatrix(const SbLine &src, SbLine
&dst) const
void print(FILE *fp) const
float * operator float*()
SbMat operator SbMat&()
float * operator [](int i)
const float * operator [](int i) const
SbMatrix & operator =(const SbMat &m)
SbMatrix & operator =(const SbMatrix &m)
SbMatrix & operator =(const SbRotation &q)
SbMatrix & operator *=(const SbMatrix &m)
SbMatrix operator *(const SbMatrix &m1, const
SbMatrix &m2)
int operator ==(const SbMatrix &m1, const SbMatrix
&m2)
int operator !=(const SbMatrix &m1, const SbMatrix
&m2)
SbBool equals(const SbMatrix &m, float tolerance)
const
4x4 matrix class/datatype used by many Inventor node and action classes. The matrices are stored in row-major order.
SbMatrix()
SbMatrix(float a11, float a12, float a13, float a14,
float a21, float a22, float a23, float a24, float a31, float a32, float a33,
float a34, float a41, float a42, float a43, float a44)
SbMatrix(const SbMat &m)
Constructors.
void setValue(const SbMat &m)
Sets value from 4x4 array of elements.
void getValue(SbMat &m) const
const SbMat & getValue() const
Returns 4x4 array of elements.
void makeIdentity()
Sets matrix to be identity.
static SbMatrix identity()
Returns an identity matrix.
void setRotate(const SbRotation &q)
Sets matrix to rotate by given rotation.
void setScale(float s)
Sets matrix to scale by given uniform factor.
void setScale(const SbVec3f &s)
Sets matrix to scale by given vector.
void setTranslate(const SbVec3f &t)
Sets matrix to translate by given vector.
void setTransform(const SbVec3f &t, const
SbRotation &r, const SbVec3f &s)
void setTransform(const SbVec3f &t, const
SbRotation &r, const SbVec3f &s, const SbRotation &so)
void setTransform(const SbVec3f &translation,
const SbRotation &rotation, const SbVec3f &scaleFactor, const
SbRotation &scaleOrientation, const SbVec3f ¢er)
Composes the matrix based on a translation, rotation, scale, orientation for
scale, and center. The center is the center point for scaling and
rotation. The scaleOrientation chooses the primary axes for the
scale.
void getTransform(SbVec3f &t, SbRotation &r,
SbVec3f &s, SbRotation &so) const
Return translation, rotation, scale, and scale orientation components of the
matrix.
void getTransform(SbVec3f &translation, SbRotation
&rotation, SbVec3f &scaleFactor, SbRotation &scaleOrientation,
const SbVec3f ¢er) const
Decomposes the matrix into a translation, rotation, scale, and scale
orientation. Any projection information is discarded. The decomposition
depends upon choice of center point for rotation and scaling, which is
optional as the last parameter. Note that if the center is 0, decompose() is
the same as factor() where t is translation, u is rotation,
s is scaleFactor, and r is ScaleOrientation.
float det3(int r1, int r2, int r3, int c1, int c2, int
c3) const
Returns determinant of 3x3 submatrix composed of given row and column indices
(0-3 for each).
float det3() const
Returns determinant of upper-left 3x3 submatrix.
float det4() const
Returns determinant of entire matrix.
SbBool factor(SbMatrix &r, SbVec3f &s,
SbMatrix &u, SbVec3f &t, SbMatrix &proj) const
Factors a matrix m into 5 pieces: m = r s r^ u t, where r^ means transpose of
r, and r and u are rotations, s is a scale, and t is a translation. Any
projection information is returned in proj. NOTE: the projection
matrix is always set to identity.
SbMatrix inverse() const
Returns inverse of matrix. Results are undefined for singular matrices. Uses
LU decomposition.
SbBool LUDecomposition(int index[4], float &d)
Perform in-place LU decomposition of matrix. index is index of rows in
matrix. d is the parity of row swaps. Returns FALSE if singular.
void LUBackSubstitution(int index[4], float b[4])
const
Perform back-substitution on LU-decomposed matrix. Index is permutation of
rows from original matrix.
SbMatrix transpose() const
Returns transpose of matrix.
SbMatrix & multRight(const SbMatrix &m)
SbMatrix & multLeft(const SbMatrix &m)
Multiplies matrix by given matrix on right or left.
void multMatrixVec(const SbVec3f &src, SbVec3f
&dst) const
Multiplies matrix by given column vector, giving vector result.
void multVecMatrix(const SbVec3f &src, SbVec3f
&dst) const
Multiplies given row vector by matrix, giving vector result.
void multDirMatrix(const SbVec3f &src, SbVec3f
&dst) const
Multiplies given row vector by matrix, giving vector result. src is
assumed to be a direction vector, so translation part of matrix is ignored.
Note: if you wish to transform surface points and normals by a matrix, call
multVecMatrix() for the points and call multDirMatrix() on the
inverse transpose of the matrix for the normals.
void multLineMatrix(const SbLine &src, SbLine
&dst) const
Multiplies the given line's origin by the matrix, and the line's direction by
the rotation portion of the matrix.
void print(FILE *fp) const
Prints a formatted version of the matrix to the given file pointer.
float * operator float*()
Cast: returns pointer to storage of first element.
SbMat operator SbMat&()
Cast: returns reference to 4x4 array.
float * operator [](int i)
const float * operator [](int i) const
Make it look like a usual matrix (so you can do m[3][2]).
SbMatrix & operator =(const SbMat &m)
Sets value from 4x4 array of elements.
SbMatrix & operator =(const SbMatrix &m)
Set the matrix from another SbMatrix.
SbMatrix & operator =(const SbRotation &q)
Set the matrix from an SbRotation.
SbMatrix & operator *=(const SbMatrix &m)
Performs right multiplication with another matrix.
SbMatrix operator *(const SbMatrix &m1, const
SbMatrix &m2)
Binary multiplication of matrices.
int operator ==(const SbMatrix &m1, const SbMatrix
&m2)
int operator !=(const SbMatrix &m1, const SbMatrix
&m2)
Equality comparison operators.
SbBool equals(const SbMatrix &m, float tolerance)
const
Equality comparison within given tolerance, for each component.
SbVec3f, SbRotation