Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SbMatrix(3IV)()						       SbMatrix(3IV)()

NAME
       SbMatrix	-- 4x4 matrix class

INHERITS FROM
       SbMatrix

SYNOPSIS
       #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	 SbRo-
			      tation  &rotation,  const	 SbVec3f &scaleFactor,
			      const SbRotation	&scaleOrientation,  const  Sb-
			      Vec3f &center)
     void		 getTransform(SbVec3f  &t,  SbRotation &r, SbVec3f &s,
			      SbRotation &so) const
     void		 getTransform(SbVec3f &translation, SbRotation	&rota-
			      tion,  SbVec3f  &scaleFactor, SbRotation &scale-
			      Orientation, const SbVec3f &center) 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

DESCRIPTION
       4x4 matrix  class/datatype  used	 by  many  Inventor  node  and	action
       classes.	The matrices are stored	in row-major order.

METHODS
			 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	 SbRo-
			      tation  &rotation,  const	 SbVec3f &scaleFactor,
			      const SbRotation	&scaleOrientation,  const  Sb-
			      Vec3f &center)
	  Composes  the	matrix based on	a translation, rotation, scale,	orien-
	  tation 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	compo-
	  nents	of the matrix.

     void		 getTransform(SbVec3f &translation, SbRotation	&rota-
			      tion,  SbVec3f  &scaleFactor, SbRotation &scale-
			      Orientation, const SbVec3f &center) const
	  Decomposes the matrix	into a translation, rotation, scale, and scale
	  orientation. Any projection information is discarded.	The decomposi-
	  tion 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  col-
	  umn 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	matri-
	  ces. 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 permuta-
	  tion 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 mult-
	  DirMatrix()  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 di-
	  rection 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.

FILE FORMAT/DEFAULTS
SEE ALSO
       SbVec3f,	SbRotation

							       SbMatrix(3IV)()

NAME | INHERITS FROM | SYNOPSIS | DESCRIPTION | METHODS | FILE FORMAT/DEFAULTS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=SbMatrix&sektion=3iv&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help