Matrix2 Class Reference
 
 
 
Matrix2 Class Reference

#include <matrix2.h>

Inheritance diagram for Matrix2:
MaxHeapOperators

Class Description

See also:
Class Point2, Class Point3, Class Matrix3.

Description:
This class defines a 3x2 2D transformation matrix. Methods are provided to zero the matrix, set it to the identity matrix, translate, rotate and scale it, and compute its inverse. Operators are available for matrix addition, subtraction and multiplication. All methods of this class are implemented by the system.
Data Members:
float m[3][2];

Public Member Functions

  Matrix2 ()
  Matrix2 (BOOL init)
  Matrix2 (float(*fp)[2])
Matrix2 operator-= (const Matrix2 &M)
Matrix2 operator+= (const Matrix2 &M)
Matrix2 operator*= (const Matrix2 &M)
  operator float * ()
void  IdentityMatrix ()
void  Zero ()
Point2  GetRow (int i) const
void  SetRow (int i, Point2 p)
Point3  GetColumn (int i)
void  SetColumn (int i, Point3 col)
Point2  GetColumn2 (int i)
void  SetTrans (const Point2 p)
void  SetTrans (int i, float v)
Point2  GetTrans ()
void  Translate (const Point2 &p)
void  Rotate (float angle)
void  Scale (const Point2 &s, BOOL trans=FALSE)
void  PreTranslate (const Point2 &p)
void  PreRotate (float angle)
void  PreScale (const Point2 &s, BOOL trans=FALSE)
void  SetTranslate (const Point2 &s)
void  SetRotate (float angle)
void  Invert ()
Matrix2  operator* (const Matrix2 &B) const
Matrix2  operator+ (const Matrix2 &B) const
Matrix2  operator- (const Matrix2 &B) const
IOResult  Save (ISave *isave)
IOResult  Load (ILoad *iload)

Public Attributes

float  m [3][2]

Static Public Attributes

static const Matrix2  Identity

Constructor & Destructor Documentation

Matrix2 ( ) [inline]
Remarks:
Constructor. No initialization is done in this constructor. Use Zero() or IdentityMatrix() to initialize the matrix.
{}       // NO INITIALIZATION done in this constructor!! (can use Zero or IdentityMatrix)
Matrix2 ( BOOL  init ) [inline]
{ UNUSED_PARAM(init); IdentityMatrix(); } // An option to initialize
Matrix2 ( float(*)  fp[2] )
Remarks:
Constructor. The matrix is initialized using fp.

Member Function Documentation

Matrix2& operator-= ( const Matrix2 M )
Remarks:
Subtracts a Matrix2 from this Matrix2.
Matrix2& operator+= ( const Matrix2 M )
Remarks:
Adds a Matrix2 to this Matrix2.
Matrix2& operator*= ( const Matrix2 M )
Remarks:
Matrix multiplication between this Matrix2 and M.
operator float * ( ) [inline]
Remarks:
Returns the address of the Matrix2.
{ return(&m[0][0]); }
void IdentityMatrix ( )
Remarks:
Sets this Matrix2 to the Identity Matrix.
void Zero ( )
Remarks:
Set all elements of this Matrix2 to 0.0f
Point2 GetRow ( int  i ) const [inline]
Remarks:
Returns the specified row of this matrix.
Parameters:
int i

Specifies the row to retrieve (0-2).
{ return (*this)[i]; }  
void SetRow ( int  i,
Point2  p 
) [inline]
Remarks:
Sets the specified row of this matrix.
Parameters:
int i

Specifies the row to set (0-2).

Point2 p

The values to set.
{ (*this)[i] = p; }
Point3 GetColumn ( int  i )
Remarks:
Returns the specified column of this matrix.
Parameters:
int i

Specifies the column to retrieve (0 or 1).
void SetColumn ( int  i,
Point3  col 
)
Remarks:
Sets the specified column of this matrix.
Parameters:
int i

Specifies the column to set (0 or 1).

Point3 col

The values to set.
Point2 GetColumn2 ( int  i )
Remarks:
This method returns a Point2 containing the upper two rows of the specified column.
Parameters:
int i

Specifies the column to get (0 or 1).
void SetTrans ( const Point2  p ) [inline]
Remarks:
Sets the translation row of the matrix to the specified values.
Parameters:
const Point2 p

The values to set.
{ (*this)[2] = p;  }
void SetTrans ( int  i,
float  v 
) [inline]
Remarks:
Sets the specified element of the translation row of this matrix to the specified value.
Parameters:
int i

Specifies which column to set (0 or 1)

float v

The value to store.
{ (*this)[2][i] = v;  }
Point2 GetTrans ( ) [inline]
Remarks:
Returns the translation row of this matrix.
{ return (*this)[2]; }
void Translate ( const Point2 p )
Remarks:
Apply an incremental translation to this matrix.
Parameters:
const Point2& p

Specifies the amount to translate the matrix.
void Rotate ( float  angle )
Remarks:
Apply an incremental rotation to this matrix using the specified angle.
Parameters:
float angle

Specifies the angle of rotation.
void Scale ( const Point2 s,
BOOL  trans = FALSE 
)
Remarks:
Apply an incremental scaling to this matrix using the specified scale factors.
Parameters:
const Point2& s

The scale factors.

BOOL trans = FALSE

If set to TRUE, the translation component is scaled. If trans = FALSE the translation component is unaffected. When 3ds Max was originally written there was a bug in the code for this method where the translation portion of the matrix was not being scaled. This meant that when a matrix was scaled the bottom row was not scaled. Thus it would always scale about the local origin of the object, but it would scale the world axes. When this bug was discovered, dependencies existed in the code upon this bug. Thus it could not simply be fixed because it would break the existing code that depended upon it working the incorrect way. To correct this the trans parameter was added. If this is set to TRUE, the translation component will be scaled correctly. The existing plug-ins don't use this parameter, it defaults to FALSE, and the code behaves the old way.
void PreTranslate ( const Point2 p )
void PreRotate ( float  angle )
void PreScale ( const Point2 s,
BOOL  trans = FALSE 
)
void SetTranslate ( const Point2 s )
Remarks:
Initializes the matrix to the identity then sets the translation row to the specified values.
Parameters:
const Point2& s

The values to store.
void SetRotate ( float  angle )
Remarks:
Initializes the matrix to the identity then sets the rotation to the specified value.
Parameters:
float angle

The rotation angle in radians.
void Invert ( )
Remarks:
This matrix may be used to invert the matrix in place.
Matrix2 operator* ( const Matrix2 B ) const
Remarks:
Perform matrix multiplication.
Matrix2 operator+ ( const Matrix2 B ) const
Remarks:
Perform matrix addition.
Matrix2 operator- ( const Matrix2 B ) const
Remarks:
Perform matrix subtraction.


Member Data Documentation