######
Matrix
######

.. cpp:namespace:: RED::Matrix

.. default-domain:: cpp

Fields
======

================================ ==================================
double                           :cpp:var:`~RED::Matrix::_mat`     
const :doc:`classRED_1_1Matrix`  :cpp:var:`~RED::Matrix::IDENTITY` 
const :doc:`classRED_1_1Matrix`  :cpp:var:`~RED::Matrix::ZERO`     
================================ ==================================

Functions
=========

=========================== =====================================================================================================================================================================================
:doc:`classRED_1_1CID`      :cpp:func:`GetClassID <static RED::CID RED::Matrix::GetClassID()>`                                                                                                                   
void *                      :cpp:func:`As <virtual void * RED::Matrix::As(const RED::CID &iCID)>`                                                                                                                
const void *                :cpp:func:`As <virtual const void * RED::Matrix::As(const RED::CID &iCID) const>`                                                                                                    
class T_As                  :cpp:func:`As <T_As * RED::Matrix::As()>`                                                                                                                                            
class T_As                  :cpp:func:`As <const T_As * RED::Matrix::As() const>`                                                                                                                                
..                          :cpp:func:`Matrix <RED::Matrix::Matrix>`                                                                                                                                             
..                          :cpp:func:`Matrix <RED::Matrix::Matrix>`                                                                                                                                             
..                          :cpp:func:`Matrix <RED::Matrix::Matrix>`                                                                                                                                             
..                          :cpp:func:`Matrix <RED::Matrix::Matrix>`                                                                                                                                             
..                          :cpp:func:`Matrix <RED::Matrix::Matrix>`                                                                                                                                             
..                          :cpp:func:`Matrix <RED::Matrix::Matrix>`                                                                                                                                             
..                          :cpp:func:`Matrix <RED::Matrix::Matrix>`                                                                                                                                             
..                          :cpp:func:`Matrix <RED::Matrix::Matrix>`                                                                                                                                             
..                          :cpp:func:`~Matrix <virtual RED::Matrix::~Matrix>`                                                                                                                                   
void                        :cpp:func:`Reset <void RED::Matrix::Reset()>`                                                                                                                                        
void                        :cpp:func:`GetLineMajorMatrix <void RED::Matrix::GetLineMajorMatrix(float oMat[16]) const>`                                                                                          
void                        :cpp:func:`GetLineMajorMatrix <void RED::Matrix::GetLineMajorMatrix(double oMat[16]) const>`                                                                                         
void                        :cpp:func:`SetLineMajorMatrix <void RED::Matrix::SetLineMajorMatrix(const float iMat[16])>`                                                                                          
void                        :cpp:func:`SetLineMajorMatrix <void RED::Matrix::SetLineMajorMatrix(const double iMat[16])>`                                                                                         
void                        :cpp:func:`GetColumnMajorMatrix <void RED::Matrix::GetColumnMajorMatrix(float oMat[16]) const>`                                                                                      
void                        :cpp:func:`GetColumnMajorMatrix <void RED::Matrix::GetColumnMajorMatrix(double oMat[16]) const>`                                                                                     
void                        :cpp:func:`SetColumnMajorMatrix <void RED::Matrix::SetColumnMajorMatrix(const float iMat[16])>`                                                                                      
void                        :cpp:func:`SetColumnMajorMatrix <void RED::Matrix::SetColumnMajorMatrix(const double iMat[16])>`                                                                                     
:doc:`classRED_1_1Vector4`  :cpp:func:`GetColumn <RED::Vector4 RED::Matrix::GetColumn(int iColumn) const>`                                                                                                       
void                        :cpp:func:`GetColumn <void RED::Matrix::GetColumn(float oColumn[4], int iColumn) const>`                                                                                             
void                        :cpp:func:`GetColumn <void RED::Matrix::GetColumn(double oColumn[4], int iColumn) const>`                                                                                            
void                        :cpp:func:`SetColumn <void RED::Matrix::SetColumn(int iColumn, const RED::Vector3 &iVector)>`                                                                                        
void                        :cpp:func:`SetColumn <void RED::Matrix::SetColumn(int iColumn, const RED::Vector4 &iVector)>`                                                                                        
void                        :cpp:func:`SetColumn <void RED::Matrix::SetColumn(int iColumn, const float iVector[4])>`                                                                                             
void                        :cpp:func:`SetColumn <void RED::Matrix::SetColumn(int iColumn, const double iVector[4])>`                                                                                            
:doc:`classRED_1_1Vector3`  :cpp:func:`GetTranslation <RED::Vector3 RED::Matrix::GetTranslation() const>`                                                                                                        
void                        :cpp:func:`GetTranslation <void RED::Matrix::GetTranslation(float oTranslation[3]) const>`                                                                                           
void                        :cpp:func:`GetTranslation <void RED::Matrix::GetTranslation(double oTranslation[3]) const>`                                                                                          
void                        :cpp:func:`SetTranslation <void RED::Matrix::SetTranslation(const RED::Vector3 &iTranslation)>`                                                                                      
void                        :cpp:func:`SetTranslation <void RED::Matrix::SetTranslation(const float iTranslation[3])>`                                                                                           
void                        :cpp:func:`SetTranslation <void RED::Matrix::SetTranslation(const double iTranslation[3])>`                                                                                          
:cpp:enumerator:`~RED_RC`   :cpp:func:`RotationAxisMatrix <RED_RC RED::Matrix::RotationAxisMatrix(const RED::Vector3 &iCenter, const RED::Vector3 &iAxis, double iAngle)>`                                       
:cpp:enumerator:`~RED_RC`   :cpp:func:`RotationAxisMatrix <RED_RC RED::Matrix::RotationAxisMatrix(const float iCenter[3], const float iAxis[3], float iAngle)>`                                                  
:cpp:enumerator:`~RED_RC`   :cpp:func:`RotationAxisMatrix <RED_RC RED::Matrix::RotationAxisMatrix(const double iCenter[3], const double iAxis[3], double iAngle)>`                                               
void                        :cpp:func:`ScalingAxisMatrix <void RED::Matrix::ScalingAxisMatrix(const RED::Vector3 &iCenter, const RED::Vector3 &iScale)>`                                                         
void                        :cpp:func:`ScalingAxisMatrix <void RED::Matrix::ScalingAxisMatrix(const float iCenter[3], const float iScale[3])>`                                                                   
void                        :cpp:func:`ScalingAxisMatrix <void RED::Matrix::ScalingAxisMatrix(const double iCenter[3], const double iScale[3])>`                                                                 
:cpp:enumerator:`~RED_RC`   :cpp:func:`RotationAngleMatrix <RED_RC RED::Matrix::RotationAngleMatrix(const RED::Vector3 &iCenter, float iAx, float iAy, float iAz)>`                                              
:cpp:enumerator:`~RED_RC`   :cpp:func:`RotationAngleMatrix <RED_RC RED::Matrix::RotationAngleMatrix(const float iCenter[3], float iAx, float iAy, float iAz)>`                                                   
:cpp:enumerator:`~RED_RC`   :cpp:func:`RotationAngleMatrix <RED_RC RED::Matrix::RotationAngleMatrix(const double iCenter[3], double iAx, double iAy, double iAz)>`                                               
:cpp:enumerator:`~RED_RC`   :cpp:func:`PerspectiveViewmappingMatrix <RED_RC RED::Matrix::PerspectiveViewmappingMatrix(double iLeft, double iRight, double iBottom, double iTop, double iDNear, double iDFar)>`   
:cpp:enumerator:`~RED_RC`   :cpp:func:`OrthographicViewmappingMatrix <RED_RC RED::Matrix::OrthographicViewmappingMatrix(double iLeft, double iRight, double iBottom, double iTop, double iDNear, double iDFar)>` 
:doc:`classRED_1_1Matrix`   :cpp:func:`operator+ <RED::Matrix RED::Matrix::operator+(const RED::Matrix &iOperand) const>`                                                                                        
:doc:`classRED_1_1Matrix`   :cpp:func:`operator- <RED::Matrix RED::Matrix::operator-(const RED::Matrix &iOperand) const>`                                                                                        
void                        :cpp:func:`operator+= <void RED::Matrix::operator+=(const RED::Matrix &iOperand)>`                                                                                                   
void                        :cpp:func:`operator-= <void RED::Matrix::operator-=(const RED::Matrix &iOperand)>`                                                                                                   
:doc:`classRED_1_1Matrix`   :cpp:func:`operator- <RED::Matrix RED::Matrix::operator-() const>`                                                                                                                   
:doc:`classRED_1_1Matrix`   :cpp:func:`operator* <RED::Matrix RED::Matrix::operator*(const RED::Matrix &iOperand) const>`                                                                                        
void                        :cpp:func:`operator*= <void RED::Matrix::operator*=(const RED::Matrix &iOperand)>`                                                                                                   
:doc:`classRED_1_1Vector4`  :cpp:func:`operator* <RED::Vector4 RED::Matrix::operator*(const RED::Vector3 &iOperand) const>`                                                                                      
:doc:`classRED_1_1Vector4`  :cpp:func:`operator* <RED::Vector4 RED::Matrix::operator*(const RED::Vector4 &iOperand) const>`                                                                                      
void                        :cpp:func:`Multiply <void RED::Matrix::Multiply(double oVector[3], const double iVector[3]) const>`                                                                                  
void                        :cpp:func:`Multiply <void RED::Matrix::Multiply(double oVector[3], const float iVector[3]) const>`                                                                                   
void                        :cpp:func:`Multiply <void RED::Matrix::Multiply(float oVector[3], const float iVector[3]) const>`                                                                                    
void                        :cpp:func:`Multiply <void RED::Matrix::Multiply(double oVector[3], const RED::Vector3 &iVector) const>`                                                                              
void                        :cpp:func:`Multiply <void RED::Matrix::Multiply(double oVector[3], const RED::Vector4 &iVector) const>`                                                                              
void                        :cpp:func:`Multiply <void RED::Matrix::Multiply(float oVector[3], const RED::Vector3 &iVector) const>`                                                                               
void                        :cpp:func:`Multiply <void RED::Matrix::Multiply(float oVector[3], const RED::Vector4 &iVector) const>`                                                                               
void                        :cpp:func:`Multiply4 <void RED::Matrix::Multiply4(double oVector[4], const double iVector[4]) const>`                                                                                
void                        :cpp:func:`Multiply4 <void RED::Matrix::Multiply4(double oVector[4], const float iVector[4]) const>`                                                                                 
void                        :cpp:func:`Multiply4 <void RED::Matrix::Multiply4(float oVector[4], const float iVector[4]) const>`                                                                                  
void                        :cpp:func:`Multiply4 <void RED::Matrix::Multiply4(double oVector[4], const RED::Vector3 &iVector) const>`                                                                            
void                        :cpp:func:`Multiply4 <void RED::Matrix::Multiply4(double oVector[4], const RED::Vector4 &iVector) const>`                                                                            
void                        :cpp:func:`Multiply4 <void RED::Matrix::Multiply4(float oVector[4], const RED::Vector3 &iVector) const>`                                                                             
void                        :cpp:func:`Multiply4 <void RED::Matrix::Multiply4(float oVector[4], const RED::Vector4 &iVector) const>`                                                                             
void                        :cpp:func:`Multiply4w1 <void RED::Matrix::Multiply4w1(double oVector[4], const float iVector[3]) const>`                                                                             
void                        :cpp:func:`Multiply4w1 <void RED::Matrix::Multiply4w1(double oVector[4], const double iVector[3]) const>`                                                                            
void                        :cpp:func:`Multiply4w1 <void RED::Matrix::Multiply4w1(double oVector[4], const RED::Vector3 &iVector) const>`                                                                        
void                        :cpp:func:`Multiply4w1 <void RED::Matrix::Multiply4w1(float oVector[4], const float iVector[3]) const>`                                                                              
void                        :cpp:func:`Multiply4w1 <void RED::Matrix::Multiply4w1(float oVector[4], const double iVector[3]) const>`                                                                             
void                        :cpp:func:`Multiply4w1 <void RED::Matrix::Multiply4w1(float oVector[4], const RED::Vector3 &iVector) const>`                                                                         
:doc:`classRED_1_1Vector3`  :cpp:func:`Rotate <RED::Vector3 RED::Matrix::Rotate(const RED::Vector3 &iVector) const>`                                                                                             
void                        :cpp:func:`Rotate <void RED::Matrix::Rotate(double oVector[3], const double iVector[3]) const>`                                                                                      
void                        :cpp:func:`Rotate <void RED::Matrix::Rotate(double oVector[3], const float iVector[3]) const>`                                                                                       
void                        :cpp:func:`Rotate <void RED::Matrix::Rotate(float oVector[3], const float iVector[3]) const>`                                                                                        
void                        :cpp:func:`Rotate <void RED::Matrix::Rotate(double oVector[3], const RED::Vector3 &iVector) const>`                                                                                  
void                        :cpp:func:`Rotate <void RED::Matrix::Rotate(float oVector[3], const RED::Vector3 &iVector) const>`                                                                                   
:doc:`classRED_1_1Vector3`  :cpp:func:`RotateNormalize <RED::Vector3 RED::Matrix::RotateNormalize(const RED::Vector3 &iVector) const>`                                                                           
void                        :cpp:func:`RotateNormalize <void RED::Matrix::RotateNormalize(double oVector[3], const double iVector[3]) const>`                                                                    
void                        :cpp:func:`RotateNormalize <void RED::Matrix::RotateNormalize(double oVector[3], const float iVector[3]) const>`                                                                     
void                        :cpp:func:`RotateNormalize <void RED::Matrix::RotateNormalize(float oVector[3], const float iVector[3]) const>`                                                                      
void                        :cpp:func:`RotateNormalize <void RED::Matrix::RotateNormalize(double oVector[3], const RED::Vector3 &iVector) const>`                                                                
void                        :cpp:func:`RotateNormalize <void RED::Matrix::RotateNormalize(float oVector[3], const RED::Vector3 &iVector) const>`                                                                 
:cpp:enumerator:`~RED_RC`   :cpp:func:`Invert <RED_RC RED::Matrix::Invert()>`                                                                                                                                    
:cpp:enumerator:`~RED_RC`   :cpp:func:`GetInvert <RED_RC RED::Matrix::GetInvert(RED::Matrix &oInverted) const>`                                                                                                  
void                        :cpp:func:`Transpose <void RED::Matrix::Transpose()>`                                                                                                                                
void                        :cpp:func:`Scale <void RED::Matrix::Scale(const RED::Vector3 &iScale)>`                                                                                                              
void                        :cpp:func:`Scale <void RED::Matrix::Scale(const float iScale[3])>`                                                                                                                   
void                        :cpp:func:`Scale <void RED::Matrix::Scale(const double iScale[3])>`                                                                                                                  
void                        :cpp:func:`Translate <void RED::Matrix::Translate(const RED::Vector3 &iTranslate)>`                                                                                                  
void                        :cpp:func:`Translate <void RED::Matrix::Translate(const float iTranslate[3])>`                                                                                                       
void                        :cpp:func:`Translate <void RED::Matrix::Translate(const double iTranslate[3])>`                                                                                                      
double                      :cpp:func:`Determinant <double RED::Matrix::Determinant() const>`                                                                                                                    
double                      :cpp:func:`Scaling <double RED::Matrix::Scaling() const>`                                                                                                                            
:doc:`classRED_1_1Vector3`  :cpp:func:`AxisScaling <RED::Vector3 RED::Matrix::AxisScaling() const>`                                                                                                              
bool                        :cpp:func:`IsIdentity <bool RED::Matrix::IsIdentity(double iTolerance=0.0) const>`                                                                                                   
bool                        :cpp:func:`IsDirect <bool RED::Matrix::IsDirect() const>`                                                                                                                            
bool                        :cpp:func:`operator== <bool RED::Matrix::operator==(const RED::Matrix &iOperand) const>`                                                                                             
bool                        :cpp:func:`operator!= <bool RED::Matrix::operator!=(const RED::Matrix &iOperand) const>`                                                                                             
:cpp:enumerator:`~RED_RC`   :cpp:func:`GetUVDecomposition <RED_RC RED::Matrix::GetUVDecomposition(double &oTranslationX, double &oTranslationY, double &oScalingX, double &oScalingY, double &oRotation) const>` 
=========================== =====================================================================================================================================================================================

.. cpp:namespace:: nullptr

Detailed Description
====================

.. doxygenclass:: RED::Matrix
   :project: RED
   :members:
   :undoc-members:



