HPL3/SOMA/Scripting/cMatrixf

From Frictional Wiki
< HPL3‎ | SOMA‎ | Scripting
Revision as of 03:05, 4 August 2020 by Abion47 (talk | contribs)
Jump to navigation Jump to search

A 4x4 matrix which stores its elements as floats. It is frequently used in transformation-related functions. (i.e. translation, rotation, scale, etc.)

Constructors

Constructor Description
cMatrixf() Creates a matrix with default values.
cMatrixf(cVector4f, cVector4f, cVector4f, cVector4f) Creates a matrix using the given vectors as column data.
cMatrixf(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float) Creates a matrix using the given values as cell data.

Fields

cMatrixf has no public fields.

Functions

Return Type Function Name Parameters Description
float GetElement uint64,
uint64
cVector3f GetForward
cVector3f GetRight
cMatrixf GetRotation
cVector3f GetTranslation
cMatrixf GetTranspose
cVector3f GetUp
void SetForward const cVector3f &in avVec
void SetRight const cVector3f &in avVec
void SetRotation float afXX,
float afXY,
float afXZ,
float afYX,
float afYY,
float afYZ,
float afZX,
float afZY,
float afZZ
void SetRotation const cMatrixf &in a_mtxRot
void SetTranslation const cVector3f &in avTrans
void SetUp const cVector3f &in avVec

Remarks

To retrieve a value from a matrix, use the GetElement function above. The parameters for the GetElement function use the format GetElement(columnIndex, rowIndex).

cMatrixf m1(cVector4f(0, 1, 2, 3), 
            cVector4f(4, 5, 6, 7), 
	        cVector4f(8, 9, 10, 11), 
	        cVector4f(12, 13, 14, 15));

float f = m1.GetElement(1, 2);

// value of f: 9

To do matrix computations, use the cMath_MatrixXXX family of functions.

cMatrixf m1(cVector4f(1, 1, 1, 1), 
            cVector4f(2, 2, 2, 2), 
            cVector4f(3, 3, 3, 3), 
            cVector4f(4, 4, 4, 4));

cMatrixf m2(cVector4f(5, 5, 5, 5), 
            cVector4f(6, 6, 6, 6), 
            cVector4f(7, 7, 7, 7), 
            cVector4f(8, 8, 8, 8));
            
cMatrixf m3 = cMath_MatrixMul(m1, m2);

// value of m3: { 26,  26,  26,  26,
//                52,  52,  52,  52,
//                78,  78,  78,  78,
//                104, 104, 104, 104 }