# Module: `gears.matrix`

An implementation of matrices for describing and working with affine transformations.

### Info:

• Author: Uli Schlachter

## Constructors

 gears.matrix.create (xx, yx, xy, yy, x0, y0) Create a new matrix instance gears.matrix.create_translate (x, y) Create a new translation matrix gears.matrix.create_scale (sx, sy) Create a new scaling matrix gears.matrix.create_rotate (angle) Create a new rotation matrix gears.matrix.create_rotate_at (x, y, angle) Create a new rotation matrix rotating around a custom point

## Fields

 gears.matrix.identity matrix A constant for the identity matrix.

## Methods

 :translate (x, y) Translate this matrix :scale (sx, sy) Scale this matrix :rotate (angle) Rotate this matrix :rotate_at (x, y, angle) Rotate a shape from a custom point :invert () Invert this matrix :multiply (other) Multiply this matrix with another matrix. :equals (other) Check if two matrices are equal. :tostring () Get a string representation of this matrix :transform_distance (x, y) Transform a distance by this matrix. :transform_point (x, y) Transform a point by this matrix. :transform_rectangle (x, y, width, height) Calculate a bounding rectangle for transforming a rectangle by a matrix. :to_cairo_matrix () Convert to a cairo matrix :from_cairo_matrix (mat) Convert to a cairo matrix

## Constructors

gears.matrix.create (xx, yx, xy, yy, x0, y0)
Create a new matrix instance

### Parameters:

• xx number The xx transformation part.
• yx number The yx transformation part.
• xy number The xy transformation part.
• yy number The yy transformation part.
• x0 number The x0 transformation part.
• y0 number The y0 transformation part.

### Returns:

A new matrix describing the given transformation.
gears.matrix.create_translate (x, y)
Create a new translation matrix

### Parameters:

• x number The translation in x direction.
• y number The translation in y direction.

### Returns:

A new matrix describing the given transformation.
gears.matrix.create_scale (sx, sy)
Create a new scaling matrix

### Parameters:

• sx number The scaling in x direction.
• sy number The scaling in y direction.

### Returns:

A new matrix describing the given transformation.
gears.matrix.create_rotate (angle)
Create a new rotation matrix

### Parameters:

• angle number The angle of the rotation in radians.

### Returns:

A new matrix describing the given transformation.
gears.matrix.create_rotate_at (x, y, angle)
Create a new rotation matrix rotating around a custom point

### Parameters:

• x number The horizontal rotation point
• y number The vertical rotation point
• angle number The angle of the rotation in radians.

### Returns:

A new matrix describing the given transformation.

## Fields

gears.matrix.identity matrix
A constant for the identity matrix.

## Methods

:translate (x, y)
Translate this matrix

### Parameters:

• x number The translation in x direction.
• y number The translation in y direction.

### Returns:

A new matrix describing the new transformation.
:scale (sx, sy)
Scale this matrix

### Parameters:

• sx number The scaling in x direction.
• sy number The scaling in y direction.

### Returns:

A new matrix describing the new transformation.
:rotate (angle)
Rotate this matrix

### Parameters:

• angle number The angle of the rotation in radians.

### Returns:

A new matrix describing the new transformation.
:rotate_at (x, y, angle)
Rotate a shape from a custom point

### Parameters:

• x number The horizontal rotation point
• y number The vertical rotation point
• angle number The angle (in radiant: -2math.pi to 2math.pi)

### Returns:

A transformation object
:invert ()
Invert this matrix

### Returns:

A new matrix describing the inverse transformation.
:multiply (other)
Multiply this matrix with another matrix. The resulting matrix describes a transformation that is equivalent to first applying this transformation and then the transformation from `other`. Note that this function can also be called by directly multiplicating two matrix instances: `a * b == a:multiply(b)`.

### Parameters:

• other gears.matrix or cairo.Matrix The other matrix to multiply with.

### Returns:

The multiplication result.
:equals (other)
Check if two matrices are equal. Note that this function cal also be called by directly comparing two matrix instances: `a == b`.

### Parameters:

• other gears.matrix or cairo.Matrix The matrix to compare with.

### Returns:

True if this and the other matrix are equal.
:tostring ()
Get a string representation of this matrix

### Returns:

A string showing this matrix in column form.
:transform_distance (x, y)
Transform a distance by this matrix. The difference to matrix:transform_point is that the translation part of this matrix is ignored.

### Parameters:

• x number The x coordinate of the point.
• y number The y coordinate of the point.

### Returns:

1. number The x coordinate of the transformed point.
2. number The x coordinate of the transformed point.
:transform_point (x, y)
Transform a point by this matrix.

### Parameters:

• x number The x coordinate of the point.
• y number The y coordinate of the point.

### Returns:

1. number The x coordinate of the transformed point.
2. number The y coordinate of the transformed point.
:transform_rectangle (x, y, width, height)
Calculate a bounding rectangle for transforming a rectangle by a matrix.

### Parameters:

• x number The x coordinate of the rectangle.
• y number The y coordinate of the rectangle.
• width number The width of the rectangle.
• height number The height of the rectangle.

### Returns:

1. number X coordinate of the bounding rectangle.
2. number Y coordinate of the bounding rectangle.
3. number Width of the bounding rectangle.
4. number Height of the bounding rectangle.
:to_cairo_matrix ()
Convert to a cairo matrix

### Returns:

cairo.Matrix A cairo matrix describing the same transformation.
:from_cairo_matrix (mat)
Convert to a cairo matrix

### Parameters:

• mat cairo.Matrix A cairo matrix describing the sought transformation

### Returns:

gears.matrix A matrix instance describing the same transformation.
generated by LDoc 1.4.6 Build with 💜 By F0xedb Last updated 2021-05-21 03:30:15