Difference between revisions of "HPL3/SOMA/Scripting/cMatrixf"

From Frictional Wiki
< HPL3‎ | SOMA‎ | Scripting
Jump to navigation Jump to search
(Created page with "A 4x4 matrix which stores its elements as floats. ==Constructors== {| class="wikitable" ! Constructor !! Description |- | <syntaxhighlight lang="c++" inline>cMatrixf()</syn...")
 
Line 48: Line 48:
 
| <syntaxhighlight lang="c++" inline>void</syntaxhighlight> || SetUp || [[../cVector3f|<syntaxhighlight lang="c++" inline>const cVector3f &in avVec</syntaxhighlight>]] ||
 
| <syntaxhighlight lang="c++" inline>void</syntaxhighlight> || SetUp || [[../cVector3f|<syntaxhighlight lang="c++" inline>const cVector3f &in avVec</syntaxhighlight>]] ||
 
|}
 
|}
 +
 +
=== 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).
 +
 +
<syntaxhighlight lang="c++">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</syntaxhighlight>
 +
 +
To do matrix computations, use the [[hpl3:game:scripting:function_reference:hps_api#cmath_matrixslerp|cMath_MatrixXXX]] family of functions.
 +
 +
<syntaxhighlight lang="c++">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 }</syntaxhighlight>
 +
  
 
{{HPL3SOMAScriptingCategories}}
 
{{HPL3SOMAScriptingCategories}}
 
__FORCETOC__
 
__FORCETOC__

Revision as of 04:02, 4 August 2020

A 4x4 matrix which stores its elements as floats.

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 }