Public Member Functions | Public Attributes | Static Public Attributes

Matrix2 Class Reference

Search for all occurrences

Detailed 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];

#include <matrix2.h>

Inheritance diagram for Matrix2:
Inheritance graph
[legend]

List of all members.

Public Member Functions

  Matrix2 ()
  Matrix2 (BOOL init)
GEOMEXPORT  Matrix2 (float(*fp)[2])
GEOMEXPORT Matrix2 operator-= (const Matrix2 &M)
GEOMEXPORT Matrix2 operator+= (const Matrix2 &M)
GEOMEXPORT Matrix2 operator*= (const Matrix2 &M)
  operator float * ()
GEOMEXPORT void  IdentityMatrix ()
GEOMEXPORT void  Zero ()
Point2  GetRow (int i) const
GEOMEXPORT void  SetRow (int i, Point2 p)
GEOMEXPORT Point3  GetColumn (int i)
GEOMEXPORT void  SetColumn (int i, Point3 col)
GEOMEXPORT Point2  GetColumn2 (int i)
void  SetTrans (const Point2 p)
void  SetTrans (int i, float v)
Point2  GetTrans ()
GEOMEXPORT void  Translate (const Point2 &p)
GEOMEXPORT void  Rotate (float angle)
GEOMEXPORT void  Scale (const Point2 &s, BOOL trans=FALSE)
GEOMEXPORT void  PreTranslate (const Point2 &p)
GEOMEXPORT void  PreRotate (float angle)
GEOMEXPORT void  PreScale (const Point2 &s, BOOL trans=FALSE)
GEOMEXPORT void  SetTranslate (const Point2 &s)
GEOMEXPORT void  SetRotate (float angle)
GEOMEXPORT void  Invert ()
GEOMEXPORT Matrix2  operator* (const Matrix2 &B) const
GEOMEXPORT Matrix2  operator+ (const Matrix2 &B) const
GEOMEXPORT Matrix2  operator- (const Matrix2 &B) const
GEOMEXPORT IOResult  Save (ISave *isave)
GEOMEXPORT 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
GEOMEXPORT Matrix2 ( float(*)  fp[2] )
Remarks:
Constructor. The matrix is initialized using fp.

Member Function Documentation

GEOMEXPORT Matrix2& operator-= ( const Matrix2 M )
Remarks:
Subtracts a Matrix2 from this Matrix2.
GEOMEXPORT Matrix2& operator+= ( const Matrix2 M )
Remarks:
Adds a Matrix2 to this Matrix2.
GEOMEXPORT 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]); }
GEOMEXPORT void IdentityMatrix ( )
Remarks:
Sets this Matrix2 to the Identity Matrix.
GEOMEXPORT 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]; }  
GEOMEXPORT 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; }
GEOMEXPORT Point3 GetColumn ( int  i )
Remarks:
Returns the specified column of this matrix.
Parameters:
int i

Specifies the column to retrieve (0 or 1).
GEOMEXPORT 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.
GEOMEXPORT 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]; }
GEOMEXPORT void Translate ( const Point2 p )
Remarks:
Apply an incremental translation to this matrix.
Parameters:
const Point2& p

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

Specifies the angle of rotation.
GEOMEXPORT 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.
GEOMEXPORT void PreTranslate ( const Point2 p )
GEOMEXPORT void PreRotate ( float  angle )
GEOMEXPORT void PreScale ( const Point2 s,
BOOL  trans = FALSE 
)
GEOMEXPORT 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.
GEOMEXPORT 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.
GEOMEXPORT void Invert ( )
Remarks:
This matrix may be used to invert the matrix in place.
GEOMEXPORT Matrix2 operator* ( const Matrix2 B ) const
Remarks:
Perform matrix multiplication.
GEOMEXPORT Matrix2 operator+ ( const Matrix2 B ) const
Remarks:
Perform matrix addition.
GEOMEXPORT Matrix2 operator- ( const Matrix2 B ) const
Remarks:
Perform matrix subtraction.

GEOMEXPORT IOResult Save ( ISave isave )
GEOMEXPORT IOResult Load ( ILoad iload )

Member Data Documentation

float m[3][2]
const Matrix2 Identity [static]

Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2
Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2 Matrix2