Unigine::Math::mat4 Struct
Header: | #include <UnigineMathLibMat4.h> |
mat4 Class
Members
mat4 ( ) #
Default constructor. Produces an identity matrix.mat4 ( float v ) #
Constructor. Initializes the matrix using a given scalar value.mat4(2.0);
/* Creates a matrix
| 2.0 2.0 2.0 2.0 |
| 2.0 2.0 2.0 2.0 |
| 2.0 2.0 2.0 2.0 |
| 2.0 2.0 2.0 2.0 |
*/
Arguments
- float v - Scalar value.
mat4 ( const mat3& m ) #
Constructor. Initializes the matrix using a given mat3 source matrix (3x3). The matrix elements are filled using corresponding elements of the source matrix.Resulting matrix:
| m00 m01 m02 0.0f |
M= | m10 m11 m12 0.0f |
| m20 m21 m22 0.0f |
| 0.0f 0.0f 0.0f 1.0f |
Arguments
- const mat3& m - Source matrix (3x3).
mat4 ( const mat4& m ) #
Constructor. Initializes the matrix by copying a given source matrix.Arguments
- const mat4& m - Source matrix.
explicit mat4 ( const dmat4& m ) #
Constructor. Initializes the matrix using a given dmat4 source matrix (3x4). The matrix elements are filled using corresponding elements of the source matrix.Arguments
- const dmat4& m - Source matrix (3x4).
mat4 ( const vec4& c0, const vec4& c1, const vec4& c2, const vec4& c3 ) #
Constructor. Initializes the matrix using given three vec4 vectors.Resulting matrix:
| col0.x col1.x col2.x col3.x |
M= | col0.y col1.y col2.y col3.y |
| col0.z col1.z col2.z col3.z |
| col0.w col1.w col2.w col3.w |
Arguments
- const vec4& c0 - Source vector for the first column.
- const vec4& c1 - Source vector for the second column.
- const vec4& c2 - Source vector for the third column.
- const vec4& c3 - Source vector for the fourth column.
explicit mat4 ( const quat& q ) #
Constructor. Initializes the matrix using a given source quaternion.For the quaternion (x, y, z, w) the corresponding rotation matrix M is defined as follows:
| 1 - 2y² - 2z² 2xy + 2wz 2xz - 2wy 0.0f |
M= | 2xy - 2wz 1 - 2x² - 2z² 2yz + 2wx 0.0f |
| 2xz + 2wy 2yz - 2wx 1 - 2x² - 2y² 0.0f |
| 0.0f 0.0f 0.0f 1.0f |
Arguments
- const quat& q - Source quaternion.
mat4 ( const mat3& m, const vec3& v ) #
Constructor. Initializes the matrix using a given source mat3 matrix (3x3) and a vec3 vector.Arguments
- const mat3& m - Source matrix (3x3).
- const vec3& v - Source vector.
mat4 ( const quat& q, const vec3& v ) #
Constructor. Initializes the matrix using a given quaternion and a vec3 vector.Arguments
- const quat& q - Source quaternion.
- const vec3& v - Source vector.
explicit mat4 ( const float* m, int transpose ) #
Constructor. Initializes the matrix using a given pointer to the source matrix.Arguments
- const float* m - Pointer to the source matrix.
- int transpose - If transpose is 0 (by default), the matrix is specified in the column major style.
void set ( int row, int column, float v ) #
Sets a new value of the matrix element specified by row and column.Arguments
- int row - Row.
- int column - Column.
- float v - The value to be set.
mat4 ( const mat2& m ) #
Constructor. Initializes the matrix using a given mat2 source matrix (2x2). The matrix elements are filled using corresponding elements of the source matrix.Resulting matrix:
| m00 m01 0.0f 0.0f |
M= | m10 m11 0.0f 0.0f |
| 0.0f 0.0f 1.0f 0.0f |
| 0.0f 0.0f 0.0f 1.0f |
Arguments
- const mat2& m - Source matrix (2x2).
mat4 ( const float* m ) #
Constructor. Initializes the matrix using a given pointer to the array of float elements.Resulting matrix:
| m[0] m[4] m[8] |
M= | m[1] m[5] m[9] |
| m[2] m[6] m[10] |
| m[3] m[7] m[11] |
Arguments
- const float* m - Pointer to the array of float elements.
mat4 ( float m00_, float m10_, float m20_, float m30_, float m01_, float m11_, float m21_, float m31_, float m02_, float m12_, float m22_, float m32_, float m03_, float m13_, float m23_, float m33_ ) #
Constructor. Initializes the matrix using a given float values.Resulting matrix:
| m00_ m01_ m02_ m03_ |
M= | m10_ m11_ m12_ m13_ |
| m20_ m21_ m22_ m23_ |
| m30_ m31_ m32_ m33_ |
Arguments
- float m00_ - m00_ element.
- float m10_ - m10_ element.
- float m20_ - m20_ element.
- float m30_ - m30_ element.
- float m01_ - m01_ element.
- float m11_ - m11_ element.
- float m21_ - m21_ element.
- float m31_ - m31_ element.
- float m02_ - m02_ element.
- float m12_ - m12_ element.
- float m22_ - m22_ element.
- float m32_ - m32_ element.
- float m03_ - m03_ element.
- float m13_ - m13_ element.
- float m23_ - m23_ element.
- float m33_ - m33_ element.
mat4 ( float m00_, float m10_, float m20_, float m30_, float m01_, float m11_, float m21_, float m31_, float m02_, float m12_, float m22_, float m32_, float m03_, float m13_, float m23_, float m33_, ConstexprTag ) #
Constructor. Initializes the matrix using a given constant float values.Resulting matrix:
| m00_ m01_ m02_ m03_ |
M= | m10_ m11_ m12_ m13_ |
| m20_ m21_ m22_ m23_ |
| m30_ m31_ m32_ m33_ |
Arguments
- float m00_ - m00_ element.
- float m10_ - m10_ element.
- float m20_ - m20_ element.
- float m30_ - m30_ element.
- float m01_ - m01_ element.
- float m11_ - m11_ element.
- float m21_ - m21_ element.
- float m31_ - m31_ element.
- float m02_ - m02_ element.
- float m12_ - m12_ element.
- float m22_ - m22_ element.
- float m32_ - m32_ element.
- float m03_ - m03_ element.
- float m13_ - m13_ element.
- float m23_ - m23_ element.
- float m33_ - m33_ element.
- ConstexprTag - Auxiliary tag.
mat4 ( float v, ConstexprTag ) #
Constructor. Initializes the matrix using a given constant float value.Resulting matrix:
| v v v v|
M= | v v v v|
| v v v v|
| v v v v|
Arguments
- float v - Value.
- ConstexprTag - Auxiliary tag.
void set ( const float* m, int transpose ) #
Sets new matrix values using a pointer to the source matrix.Arguments
- const float* m - Pointer to the source matrix.
- int transpose - If transpose is 0 (by default), the matrix is specified in the column major style.
void set ( const mat2& m ) #
Sets new matrix values using a given mat2 source matrix (2x2). The matrix elements are filled using corresponding elements of the source matrix.Resulting matrix:
| m00 m01 0.0f 0.0f |
M= | m10 m11 0.0f 0.0f |
| 0.0f 0.0f 1.0f 0.0f |
| 0.0f 0.0f 0.0f 1.0f |
Arguments
- const mat2& m - Source matrix (2x2).
void set ( const mat3& m, const vec3& v ) #
Sets new matrix values using a given source mat3 matrix (3x3) and a vec3 vector.Arguments
- const mat3& m - Source matrix (3x3).
- const vec3& v - Source vector.
void set ( const quat& q, const vec3& v ) #
Sets new matrix values using a given quaternion and a vec3 vector.Arguments
- const quat& q - Source quaternion.
- const vec3& v - Source vector.
void set ( const mat3& m ) #
Sets new matrix values using a given mat3 source matrix (3x3). The matrix elements are filled using corresponding elements of the source matrix.Resulting matrix:
| m00 m01 m02 0.0f |
M= | m10 m11 m12 0.0f |
| m20 m21 m22 0.0f |
| 0.0f 0.0f 0.0f 1.0f |
Arguments
- const mat3& m - Source matrix (3x3).
void set ( const quat& q ) #
Sets new matrix values using a given source quaternion.Arguments
- const quat& q - Source quaternion.
void set ( const mat4& m ) #
Sets the matrix equal to the specified source matrix.Arguments
- const mat4& m - Source matrix.
void set ( const dmat4& m ) #
Sets new matrix values using a given dmat4 source matrix (3x4). The matrix elements are filled using corresponding elements of the source matrix.Arguments
- const dmat4& m - Source matrix (3x4).
float & get ( int row, int column ) #
Returns the reference to the matrix element specified by given row and column.Arguments
- int row - Row.
- int column - Column.
Return value
Matrix element reference.float get ( int row, int column ) const#
Returns the value of the matrix element specified by given row and column.Arguments
- int row - Row.
- int column - Column.
Return value
Matrix element value.void get ( float* m, int transpose ) const#
Fills the destination matrix, specified by the given pointer, with matrix values.Arguments
- float* m - Destination matrix pointer.
- int transpose - If transpose is 0 (by default), the matrix is specified in the column major style.
float * get ( ) #
Returns the pointer to the matrix.Return value
Pointer to the matrix.const float * get ( ) const#
Returns the constant pointer to the matrix.Return value
Constant pointer to the matrix.void setColumn ( int column, const vec4& v ) #
Sets the specified column of the matrix using a given vec4 vector as a source.Arguments
- int column - Column.
- const vec4& v - Source vector.
vec4 getColumn ( int column ) const#
Returns the specified matrix column.Arguments
- int column - Column.
Return value
The vec4 vector with column values.void setColumn3 ( int column, const vec3& v ) #
Sets the specified column of the matrix using a given three-component vec3 vector as a source, the last element of the column remains as is.Arguments
- int column - Column.
- const vec3& v - Three-component source vector.
vec3 getColumn3 ( int column ) const#
Returns the XYZ components of the specified matrix column.Arguments
- int column - Column.
Return value
The vec3 vector with the first three elements of the specified matrix column.void setDiagonal ( const vec4& v ) #
Sets the main diagonal of the matrix using a given vec4 vector as a source.Arguments
- const vec4& v - Source vector.
vec4 getDiagonal ( ) const#
Returns the main diagonal of the matrix.Return value
The vec4 vector with the element of the main diagonal.void setIdentity ( ) #
Sets the matrix equal to the identity matrix.void setRotate ( const vec3& axis, float angle ) #
Sets the rotation matrix for a given axis.Arguments
- const vec3& axis - Rotation axis.
- float angle - Rotation angle, in degrees.
quat getRotate ( ) const#
Returns the quaternion, representing the rotation part of the matrix.Return value
Matrix rotation part.void setRotateX ( float angle ) #
Sets X rotation matrix.Arguments
- float angle - Rotation angle, in degrees.
void setRotateY ( float angle ) #
Sets Y rotation matrix.Arguments
- float angle - Rotation angle, in degrees.
void setRotateZ ( float angle ) #
Set Z rotation matrix.Arguments
- float angle - Rotation angle, in degrees.
void setRow ( int row, const vec4& v ) #
Sets the specified row of the matrix using a given vec4 vector as a source.Arguments
- int row - Row.
- const vec4& v - Source vector.
vec4 getRow ( int row ) const#
Returns the specified matrix row.Arguments
- int row - Row.
Return value
The vec4 vector with row values.void setRow3 ( int row, const vec3& v ) #
Sets the specified row of the matrix using a given three-component vec3 vector as a source, the last element of the row remains as is.Arguments
- int row - Row.
- const vec3& v - Three-component source vector.
vec3 getRow3 ( int row ) const#
Returns the first three elements of the specified matrix row.Arguments
- int row - Row.
Return value
The vec3 vector with the first three elements of the specified matrix row.void setScale ( const vec3& v ) #
Fills the scaling matrix using a given vec3 source vector.Scaling matrix:
| v.x 0.0f 0.0f 0.0f |
S= | 0.0f v.y 0.0f 0.0f |
| 0.0f 0.0f v.z 0.0f |
| 0.0f 0.0f 0.0f 1.0f |
Arguments
- const vec3& v - Source vector.
vec3 getScale ( ) const#
Returns the three-component vec3 vector, representing the scaling part of the matrix.Return value
Three-component vector with the scaling part of the matrix.void setTranslate ( const vec3& v ) #
Fills the translation matrix using a given vec3 source vector.Translation matrix:
| 1.0f 0.0f 0.0f v.x |
T= | 0.0f 1.0f 0.0f v.y |
| 0.0f 0.0f 1.0f v.z |
| 0.0f 0.0f 0.0f 1.0f |
Arguments
- const vec3& v - Source vector.
vec3 getTranslate ( ) const#
Returns the three-component vec3 vector, representing the translation part of the matrix.Return value
Three-component vector with the translation part of the matrix.void setZero ( ) #
Sets all matrix elements equal to 0.const float * operator const float * ( ) const#
Performs type conversion to const float *.const void * operator const void * ( ) const#
Performs type conversion to const void *.float * operator float * ( ) #
Performs type conversion to float *.void * operator void * ( ) #
Performs type conversion to void *.mat4 & operator*= ( const mat4& m ) #
Performs matrix multiplication.Arguments
- const mat4& m - Matrix.
Return value
Resulting matrix.mat4 & operator*= ( float v ) #
Performs scalar multiplication.Arguments
- float v - Scalar value.
Return value
Resulting matrix.mat4 & operator+= ( const mat4& m ) #
Performs matrix addition.Arguments
- const mat4& m - Matrix.
Return value
Resulting matrix.mat4 operator- ( ) const#
Performs matrix negation.mat4 & operator-= ( const mat4& m ) #
Performs matrix subtraction.Arguments
- const mat4& m - Matrix.
Return value
Resulting matrix.mat4 & operator= ( const mat4& m ) #
Performs matrix assignment. Destination matrix = Source matrix.Arguments
- const mat4& m - Source matrix.
Return value
Result.float & operator[] ( int i ) #
Performs array access to the matrix item reference using given item index.Arguments
- int i - Matrix item index.
Return value
Matrix item reference.float operator[] ( int i ) const#
Performs array access to the matrix item using given item index.Arguments
- int i - Matrix item index.
Return value
Matrix item.vec3 getAxisX ( ) const#
Returns the normalized vector representing the X axis.Return value
Vector representing the X axis.vec3 getAxisY ( ) const#
Returns the normalized vector representing the Y axis.Return value
Vector representing the Y axis.vec3 getAxisZ ( ) const#
Returns the normalized vector representing the Z axis.Return value
Vector representing the Z axis.float trace ( ) const#
Returns the trace of the matrix.Return value
Trace of the matrix.float determinant ( ) const#
Returns the determinant of the matrix.Return value
Determinant of the matrix.float determinant3 ( ) const#
Returns the determinant of the smaller 3x3 matrix of the original matrix.Return value
Determinant of the smaller 3x3 matrix.Last update:
2022-02-04
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)