Fast 4x4 matrix class

Fast 4x4 matrix class

Fast 4x4 matrix computation and transformation class

  • Language: C/C++
  • Released: Jun 9, 2011
    Last Update: Jun 9, 2011

4x4 Matrix computations are the backbone of every 3d engine, 3d transformations for handling mesh of model are accomplished using 4th order matrix operations. Common operations are implemented through the use of templated overloaded operators, allowing for very readable and fast 4x4 matrix calculations. This class is compiler-agnostic, and can be used on multiple platforms (including mobile) with minimal refactoring.

Usage examples

Declare a matrix using :

CMatrix4x4f Ma;    

Ma.Set (  1 ,2 , 3 ,4 ,
                5,6,7,8,
                9,10,11,12,
               13,14,15 );

Common operations :

// multiplication

Ma=Ma * 2.0f ;      

Ma*= 2.0f ;         

Ma = Mb * 3.0f;         

Ma = 3.0f * Mb ;            

Ma = Mb / 2.0f ; // multipication by inverse of a constant

// sum and subtraction

Ma+=Mb;      

Ma-=Mb;      

Ma = Mb + Mc;

Ma = -Mb + Mc;

// matrix multilication

Ma = Mb * Mc ;

Ma= 4.0f / Mb;  

Invert(Ma);     //invert matrix 

Transpose(Ma);      //transpose matrix 

Zero(Ma);               // zero out the matrix

Identity(Ma);               // identity matrix

Ma.Get(1,0);            // gets value at coordinates

Ma[0]=2.0f;         // setting a value by direct access

// logic operations

if ( Ma!=Mb )     cout << "Matrices are different" << endl;


if ( Ma==Mb )   cout << "Matrices are equal" << endl;

Rot ( Ma,45.0f );       // compute matrix rotation

GetRank(Ma);                   // gets matrix rank

float d = Ma.Determinant();   // gets determinant

// compute the trace of the matrix

float t= GetMatrixTrace(  Ma );

// Determine if the matrix is lower triangular

bool b=IsLowerTriangular (Ma);

// Determine if the matrix is upper triangular

bool b=IsUpperTriangular (Ma);

// Determine if the matrix is skew-symmetric

bool b=IsSkewSimmetric(Ma) ;

// test if matrix is simmetric

bool b=IsSimmetric(Ma);

// Determine if the matrix is diagonal

bool b=IsDiagonal (Ma) ;

// calculate the condition number
// which is the norm multiplied
// byt the norm of the matrix 
// inverse

float c=ConditionNumber(Ma);

// calculate the norm of a matrix

float n=Norm (Ma);

// Determine if the matrix is singular

bool b=Ma.IsSingular (Ma) ;

// solve the system defined by the matrix

SolveLinearMatrix( Ma,V,S );
You need to log-in or create an account
  • Create an account
  • Log-in

Please use your real name.

Activation link will be sent to this address.

Minimum 8 characters

Enter your password again

Clicking this button confirms you read and agreed to the terms of use and privacy policy.

X

Save your watchlist

Fill your details below to receive project updates from your watch list - including new versions, price changes and discounts.

I agree to the terms of use and privacy policy.

2 licenses, starting from From » $4.99 View Licenses 14 day money-back guarantee
Post a comment

Or enter your name and Email
No comments have been posted yet.