# Matrix

### Description

The Matrix class specifies transformation from one coordinate space to another.

These transformations include translation, rotation, scaling and skewing.

A 2D transformation matrix is a 3 x 3 matrix in homogeneous coordinate system:

You can get and set the values of all six of the properties in a Matrix object: m11, m12, m21, m22, tx, and ty.

Since Gideros 2016.6, Matrix can also hold 3D (4x4) matrices.

### Examples

Applying matrix to Sprite objects

```local angle = math.rad(30)
-- create skew matrix
local m = Matrix.new(1, math.tan(angle), math.tan(angle), 1, 0, 0)
-- apply to Sprite
local sprite = Sprite.new()
sprite:setMatrix(m)
```

### Methods

Matrix.new creates a new Matrix object
Matrix:getAnchorPosition gets anchor position from matrix transformation
Matrix:getElements returns the elements of this matrix instance
Matrix:getM11 returns the value of the m11 component
Matrix:getM12 returns the value of the m12 component
Matrix:getM21 returns the value of the m21 component
Matrix:getM22 returns the value of the m22 component
Matrix:getMatrix gets all 16 elements of 4x4 matrix
Matrix:getPosition gets position from matrix transformation
Matrix:getRotationX gets rotation on x axis
Matrix:getRotationY gets rotation on y axis
Matrix:getRotationZ get rotation on z axis
Matrix:getScale gets scale from matrix transformation
Matrix:getScaleX gets scale on x axis
Matrix:getScaleY gets scale on y axis
Matrix:getScaleZ gets scale on z axis
Matrix:getTx returns the value of the tx component
Matrix:getTy returns the value of the ty component
Matrix:getTz returns the value of the tz component
Matrix:getX gets x position
Matrix:getY gets y position
Matrix:getZ gets z position
Matrix:invert inverts the matrix
Matrix:multiply multiplies current matrix with new one
Matrix:orthographicProjection replaces this matrix by an orthographic projection
Matrix:perspectiveProjection replaces this matrix by a perspective projection
Matrix:perspectiveProjection replaces this matrix by a perspective projection
Matrix:rotate combines existing rotation with provided rotation
Matrix:scale combines existing scale with provided scale
Matrix:setAnchorPosition transform matrix for setting anchor position
Matrix:setElements sets all 6 elements of this matrix instance
Matrix:setM11 sets the value of the m11 component
Matrix:setM12 sets the value of the m12 component
Matrix:setM21 sets the value of the m21 component
Matrix:setM22 sets the value of the m22 component
Matrix:setMatrix set all 16 elements of 4x4 matrix
Matrix:setPosition transform matrix for setting position
Matrix:setRotationX sets rotation on x axis
Matrix:setRotationY sets rotation on y axis
Matrix:setRotationZ sets rotation on z axis
Matrix:setScale transform matrix for setting scale
Matrix:setScaleX sets scale on x axis
Matrix:setScaleY sets scale on y axis
Matrix:setScaleZ sets scale on z axis
Matrix:setTx sets the value of the tx component
Matrix:setTy sets the value of the ty component
Matrix:setTz sets the value of the tz component
Matrix:setX sets x position
Matrix:setY sets y position
Matrix:setZ sets z position
Matrix:transformPoint transforms the matrix
Matrix:translate combines existing translation with provided translation