3ds Max C++ API Reference
Matrix2 Class Reference

#include <matrix2.h>

Public Member Functions

 Matrix2 ()=default
 
 Matrix2 (const Matrix2 &)=default
 
 Matrix2 (Matrix2 &&)=default
 
Matrix2operator= (const Matrix2 &)=default
 
Matrix2operator= (Matrix2 &&)=default
 
 Matrix2 (bool)
 
 Matrix2 (float(*fp)[2])
 
Matrix2operator-= (const Matrix2 &M)
 
Matrix2operator+= (const Matrix2 &M)
 
Matrix2operator*= (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)
 
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
 
UTILGEOMEXPORT IOResult Save (ISave *isave)
 
UTILGEOMEXPORT IOResult Load (ILoad *iload)
 

Public Attributes

float m [3][2]
 

Static Public Attributes

static const Matrix2 Identity
 

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

Constructor & Destructor Documentation

◆ Matrix2() [1/5]

Matrix2 ( )
default
Remarks
Constructor. Initialized to Identity.

◆ Matrix2() [2/5]

Matrix2 ( const Matrix2 )
default

◆ Matrix2() [3/5]

Matrix2 ( Matrix2 &&  )
default

◆ Matrix2() [4/5]

Matrix2 ( bool  )
inline
62  {
64  } // An option to initialize
void IdentityMatrix()

◆ Matrix2() [5/5]

Matrix2 ( float(*)  fp[2])
Remarks
Constructor. The matrix is initialized using fp.

Member Function Documentation

◆ operator=() [1/2]

Matrix2& operator= ( const Matrix2 )
default

◆ operator=() [2/2]

Matrix2& operator= ( Matrix2 &&  )
default

◆ operator-=()

Matrix2& operator-= ( const Matrix2 M)
Remarks
Subtracts a Matrix2 from this Matrix2.

◆ operator+=()

Matrix2& operator+= ( const Matrix2 M)
Remarks
Adds a Matrix2 to this Matrix2.

◆ operator*=()

Matrix2& operator*= ( const Matrix2 M)
Remarks
Matrix multiplication between this Matrix2 and M.

◆ operator float *()

operator float * ( )
inline
Remarks
Returns the address of the Matrix2.
83  {
84  return (&m[0][0]);
85  }
float m[3][2]
Definition: matrix2.h:46

◆ IdentityMatrix()

void IdentityMatrix ( )
Remarks
Sets this Matrix2 to the Identity Matrix.

◆ Zero()

void Zero ( )
Remarks
Set all elements of this Matrix2 to 0.0f

◆ GetRow()

Point2 GetRow ( int  i) const
inline
Remarks
Returns the specified row of this matrix.
Parameters:
int i

Specifies the row to retrieve (0-2).
98  {
99  return (*this)[i];
100  }

◆ SetRow()

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.
108  {
109  (*this)[i] = p;
110  }

◆ GetColumn()

Point3 GetColumn ( int  i)
Remarks
Returns the specified column of this matrix.
Parameters:
int i

Specifies the column to retrieve (0 or 1).

◆ SetColumn()

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.

◆ GetColumn2()

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).

◆ SetTrans() [1/2]

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.
138  {
139  (*this)[2] = p;
140  }

◆ SetTrans() [2/2]

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.
149  {
150  (*this)[2][i] = v;
151  }

◆ GetTrans()

Point2 GetTrans ( )
inline
Remarks
Returns the translation row of this matrix.
154  {
155  return (*this)[2];
156  }

◆ Translate()

void Translate ( const Point2 p)
Remarks
Apply an incremental translation to this matrix.
Parameters:
const Point2& p

Specifies the amount to translate the matrix.

◆ Rotate()

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

Specifies the angle of rotation.

◆ Scale()

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.

◆ PreTranslate()

void PreTranslate ( const Point2 p)

◆ PreRotate()

void PreRotate ( float  angle)

◆ PreScale()

void PreScale ( const Point2 s)

◆ SetTranslate()

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.

◆ SetRotate()

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.

◆ Invert()

void Invert ( )
Remarks
This matrix may be used to invert the matrix in place.

◆ operator*()

Matrix2 operator* ( const Matrix2 B) const
Remarks
Perform matrix multiplication.

◆ operator+()

Matrix2 operator+ ( const Matrix2 B) const
Remarks
Perform matrix addition.

◆ operator-()

Matrix2 operator- ( const Matrix2 B) const
Remarks
Perform matrix subtraction.

◆ Save()

UTILGEOMEXPORT IOResult Save ( ISave isave)
Remarks
Save and Load are only forward declared in this header! If you need to use Save or Load, you must link with maxutil, which is where these methods are implemented. This way, geom.dll is independent from maxsdk.

◆ Load()

UTILGEOMEXPORT IOResult Load ( ILoad iload)
Remarks
Save and Load are only forward declared in this header! If you need to use Save or Load, you must link with maxutil, which is where these methods are implemented. This way, geom.dll is independent from maxsdk.

Member Data Documentation

◆ m

float m[3][2]
Initial value:
= {
{ 1.f, 0.f },
{ 0.f, 1.f },
{ 0.f, 0.f },
}

◆ Identity

const Matrix2 Identity
static