UnigineEditor
Interface Overview
Assets Workflow
Settings and Preferences
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Landscape Tool
Using Editor Tools for Specific Tasks
FAQ
Программирование
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Node-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
CIGI Client Plugin
Rendering-Related Classes

Unigine::mat3 Class

Header:#include <UnigineMathLib.h>

This class represents a matrix of nine (3x3) float components.

mat3 Class

Members


mat3()

Default constructor. Produces an identity matrix.

mat3(const mat3 & m)

Constructor. Initializes the matrix by copying a given source matrix.

Arguments

  • const mat3 & m - Source matrix.

mat3(float v)

Constructor. Initializes the matrix using a given scalar value.
Source code (UnigineScript)
mat3(2.0);
						
/* Creates a matrix						
| 2.0 	2.0		2.0	|
| 2.0 	2.0		2.0	|
| 2.0 	2.0		2.0	|						
*/

Arguments

  • float v - Scalar value.

mat3(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.
Output
Resulting matrix: 
    | m00  	 m01	  0.0f | 
M=  | m10    m11      0.0f |
    | 0.0f   0.0f     1.0f |

Arguments

  • const mat2 & m - Source matrix (2x2).

mat3(const mat4 & m)

Constructor. Initializes the matrix using a given mat4 source matrix (4x4). The matrix elements are filled using corresponding elements of the source matrix.

Arguments

  • const mat4 & m - Source matrix (4x4).

mat3(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).

mat3(const quat & q)

Constructor. Initializes the matrix using a given source quaternion.
Output
For the quaternion (x, y, z, w) the corresponding rotation matrix M is defined as follows:  		
    | 1 - 2y² - 2z²    2xy + 2wz      	2xz - 2wy     | 
M=  | 2xy - 2wz        1 - 2x² - 2z²    2yz + 2wx     |
    | 2xz + 2wy        2yz - 2wx        1 - 2x² - 2y² |

Arguments

  • const quat & q - Source quaternion.

mat3(const float * m)

Constructor. Initializes the matrix using a given pointer to the source matrix.

Arguments

  • const float * m - Pointer to the source matrix.

mat3(const vec3 & col0, const vec3 & col1, const vec3 & col2)

Constructor. Initializes the matrix using given three vec3 vectors.
Output
Resulting matrix: 
    | col0.x  	 col1.x	  	col2.x | 
M=  | col0.y   	 col1.y     col2.y |
    | col0.z   	 col1.z     col2.z |

Arguments

  • const vec3 & col0 - Source vector for the first column.
  • const vec3 & col1 - Source vector for the second column
  • const vec3 & col2 - Source vector for the third column

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.

void set(const dmat4 & m)

Sets the matrix using a given dmat4 source matrix (3x4). The matrix elements are set equal to corresponding elements of the source matrix.

Arguments

  • const dmat4 & m - Source matrix (3x4).

void set(const mat4 & m)

Sets the matrix using a given mat4 source matrix (4x4). The matrix elements are set equal to corresponding elements of the source matrix.

Arguments

  • const mat4 & m - Source matrix (4x4).

void set(const float * m)

Sets new matrix values using a pointer to the source matrix.

Arguments

  • const float * m - Pointer to the source matrix.

void set(const quat & q)

Sets the matrix using a given source quaternion.
Output
For the quaternion (x, y, z, w) the corresponding rotation matrix M is defined as follows:  		
    | 1 - 2y² - 2z²    2xy + 2wz      	2xz - 2wy     | 
M=  | 2xy - 2wz        1 - 2x² - 2z²    2yz + 2wx     |
    | 2xz + 2wy        2yz - 2wx        1 - 2x² - 2y² |

Arguments

  • const quat & q - Source quaternion.

void set(const mat3 & m)

Sets the matrix equal to the specified source matrix.

Arguments

  • const mat3 & m - Source matrix.

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.
Output
Resulting matrix: 
    | m00  	 m01	  0.0f | 
M=  | m10    m11      0.0f |
    | 0.0f   0.0f     1.0f |

Arguments

  • const mat2 & m - Source matrix (2x2).

float * get()

Returns the pointer to the matrix.

Return value

Pointer to the matrix.

const float * get()

Returns the constant pointer to the matrix.

Return value

Constant pointer to the matrix.

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)

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)

Fills the destination matrix, specified by the given pointer, with matrix values.

Arguments

  • float * m - Destination matrix pointer.

void setColumn(int column, const vec3 & v)

Sets the specified column of the matrix using a given vec3 vector as a source.

Arguments

  • int column - Column.
  • const vec3 & v - Source vector.

vec3 getColumn(int column)

Returns the specified matrix column.

Arguments

  • int column - Column.

Return value

The vec3 vector with column values.

void setDiagonal(const vec3 & v)

Sets the main diagonal of the matrix using a given vec3 vector as a source.

Arguments

  • const vec3 & v - Source vector.

vec3 getDiagonal()

Returns the main diagonal of the matrix.

Return value

The vec3 vector with the elements of the main diagonal.

void setIdentity()

Sets the matrix equal to the identity matrix.

quat getQuat()

Returns the quaternion of the matrix values.

Return value

Quaternion.

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.

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)

Sets Z rotation matrix.

Arguments

  • float angle - Rotation angle, in degrees.

void setRow(int row, const vec3 & v)

Sets the specified row of the matrix using a given vec3 vector as a source.

Arguments

  • int row - Row.
  • const vec3 & v - Source vector.

vec3 getRow(int row)

Returns the specified matrix row.

Arguments

  • int row - Row.

Return value

The vec3 vector with column values.

void setScale(const vec3 & v)

Fills the scaling matrix using a given vec3 source vector.
Output
Scaling matrix: 
    | v.x   	0.0f	  0.0f | 
S=  | 0.0f      v.y    	  0.0f |
    | 0.0f      0.0f      v.z  |

Arguments

  • const vec3 & v - Source vector.

void setSkewSymmetric(const vec3 & v)

Fills the skew-symmetric matrix using a given vec3 source vector.
Output
Skew-symmetric matrix: 
    | 0.0f   	-v.z	   v.y | 
S=  | v.z       0.0f      -v.x |
    | -v.y      v.x       0.0f |

Arguments

  • const vec3 & v - Source vector.

void setZero()

Sets all matrix elements equal to 0.

const float * operator const float *()

Performs type conversion to const float *.

const void * operator const void *()

Performs type conversion to const void *.

float * operator float *()

Performs type conversion to float *.

void * operator void *()

Performs type conversion to void *.

mat3 & operator*=(float v)

Performs scalar multiplication.

Arguments

  • float v - Scalar value.

Return value

Resulting matrix.

mat3 & operator*=(const mat3 & m)

Performs matrix multiplication.

Arguments

  • const mat3 & m - Matrix.

Return value

Resulting matrix.

mat3 & operator+=(const mat3 & m)

Performs matrix addition.

Arguments

  • const mat3 & m - Matrix.

Return value

Resulting matrix.

mat3 operator-()

Performs matrix negation.

Return value

Resulting matrix.

mat3 & operator-=(const mat3 & m)

Performs matrix subtraction.

Arguments

  • const mat3 & m - mat3 matrix.

Return value

Resulting matrix.

mat3 & operator=(const mat3 & m)

Performs matrix assignment. Destination matrix = Source matrix.

Arguments

  • const mat3 & m - Source matrix

Return value

Result.

float operator[](int i)

Performs array access to the matrix item using given item index.

Arguments

  • int i - Matrix item index.

Return value

Matrix item.

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.

void sse(const __m128 & v0, const __m128 & v1, const __m128 & v2)

Sets the values of the matrix elements using three given 128-bit variables as a source.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Arguments

  • const __m128 & v0 - 128-bit variable containing the following matrix elements: m00, m10, m20.
  • const __m128 & v1 - 128-bit variable containing the following matrix elements: m01, m11, m21.
  • const __m128 & v2 - 128-bit variable containing the following matrix elements: m02, m12, m22.

void sse0(const __m128 & v)

Sets the values of matrix elements m00, m10, m20 using a given 128-bit variable.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Arguments

  • const __m128 & v - 128-bit variable containing the following matrix elements: m00, m10, m20.

__m128 sse0()

Returns the values of matrix elements m00, m10, m20 as a 128-bit variable.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Return value

128-bit variable containing the following matrix elements: m00, m10, m20.

__m128 sse1()

Returns the values of matrix elements m01, m11, m21 as a 128-bit variable.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Return value

128-bit variable containing the following matrix elements: m01, m11, m21.

void sse1(const __m128 & v)

Sets the values of matrix elements m01, m11, m21 using a given 128-bit variable.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Arguments

  • const __m128 & v - 128-bit variable containing the following matrix elements: m01, m11, m21.

__m128 sse2()

Returns the values of matrix elements m02, m12, m22 as a 128-bit variable.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Return value

128-bit variable containing the following matrix elements: m02, m12, m22.

void sse2(const __m128 & v)

Sets the values of matrix elements m02, m12, m22 using a given 128-bit variable.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Arguments

  • const __m128 & v - 128-bit variable containing the following matrix elements: m02, m12, m22.

vec3 getAxisX()

Returns the normalized vector representing the X axis. Call this method to get the right or left vector of the matrix:
Source code (C++)
matrix.getAxisX(); // the left vector
-matrix.getAxisX(); // the right vector

Return value

Vector representing the X axis.

vec3 getAxisY()

Returns the normalized vector representing the Y axis. Call this method to get the back or forward vector of the matrix:
Source code (C++)
matrix.getAxisY(); // the back vector
-matrix.getAxisY(); // the forward vector

Return value

Vector representing the Y axis.

vec3 getAxisZ()

Returns the normalized vector representing the Z axis. Call this method to get the up or down vector of the matrix:
Source code (C++)
matrix.getAxisZ(); // the up vector
-matrix.getAxisZ(); // the down vector

Return value

Vector representing the Z axis.

mat3 IDENTITY

Description

Identity matrix.

mat3 ONE

Description

Matrix of ones.

mat3 ZERO

Description

Zero matrix.
Last update: 04.06.2018