# Matrix2D

``class Matrix2D implements Type``

A specialized 2x3 Matrix representing a 2D transformation.

A Matrix2D contains six elements defined as [a, b, c, d, tx, ty]

This is a shortcut for a 3x3 matrix of the form [a, b, 0, c, d, 0 tx, ty, 1]

Note that because a Matrix2D ignores the z-values of each component vectors, it does not satisfy all properties of a "real" 3x3 matrix.

• A Matrix2D has no transpose
• A(B + C) = AB + AC does not hold for a Matrix2D
• (rA)^-1 = r^-1 A^-1, r != 0 does not hold for a Matrix2D
• r(AB) = (rA)B = A(rB) does not hold for a Matrix2D

## Constructors​

### `constructor`​

``public new Matrix2D(): Matrix2D``
``public new Matrix2Dmatrix: PossibleMatrix2D: Matrix2D``
``public new Matrix2Dx: PossibleVector2numbery: PossibleVector2numberz: PossibleVector2number: Matrix2D``
``public new Matrix2Da: numberb: numberc: numberd: numbertx: numberty: number: Matrix2D``

## Properties​

### `values`​

``readonly public values: Float32Array = ...``

### `identity`​

``static readonly public identity: Matrix2D = ...``

### `symbol`​

``static readonly public symbol: typeof symbol = ...``

### `zero`​

``static readonly public zero: Matrix2D = ...``

## Accessors​

### `determinant`​

``public get determinant(): number``

Get the determinant of the matrix.

### `domMatrix`​

``public get domMatrix(): DOMMatrix``

### `inverse`​

``public get inverse(): nullMatrix2D``

Get the inverse of the matrix.

If the matrix is not invertible, i.e. its determinant is `0`, this will return `null`, instead.

### `rotation`​

``public set rotationangle: number: void``
``public get rotation(): number``

#### Parameters

• `angle: number`

### `scaleX`​

``public set scaleXvalue: number: void``
``public get scaleX(): number``

#### Parameters

• `value: number`

### `scaleY`​

``public set scaleYvalue: number: void``
``public get scaleY(): number``

#### Parameters

• `value: number`

### `scaling`​

``public set scalingvalue: PossibleVector2number: void``
``public get scaling(): Vector2``

#### Parameters

• `value: PossibleVector2number`

### `skewX`​

``public set skewXvalue: number: void``
``public get skewX(): number``

#### Parameters

• `value: number`

### `skewY`​

``public set skewYvalue: number: void``
``public get skewY(): number``

#### Parameters

• `value: number`

### `translateX`​

``public set translateXvalue: number: void``
``public get translateX(): number``

#### Parameters

• `value: number`

### `translateY`​

``public set translateYvalue: number: void``
``public get translateY(): number``

#### Parameters

• `value: number`

### `translation`​

``public set translationtranslation: PossibleVector2number: void``
``public get translation(): Vector2``

#### Parameters

• `translation: PossibleVector2number`

### `x`​

``public get x(): Vector2``

### `y`​

``public get y(): Vector2``

## Methods​

### `add`​

``public addother: Matrix2D: Matrix2D``

Add the provided matrix to this matrix.

This method returns a new matrix representing the result of the computation. It will not modify the source matrix.

#### Parameters

• `other: Matrix2D`

### `column`​

``public columnindex: number: Vector2``

Get the nth component vector of the matrix. Only defined for 0, 1, and 2.

#### Parameters

• `index: number`

The index of the component vector to retrieve.

### `equals`​

``public equalsother: Matrix2Dthreshold: number = EPSILON: boolean``

#### Parameters

• `other: Matrix2D`
• `threshold: number = EPSILON`

### `exactlyEquals`​

``public exactlyEqualsother: Matrix2D: boolean``

#### Parameters

• `other: Matrix2D`

### `mul`​

``public mulother: Matrix2D: Matrix2D``

Returns the matrix product of this matrix with the provided matrix.

This method returns a new matrix representing the result of the computation. It will not modify the source matrix.

#### Parameters

• `other: Matrix2D`

The matrix to multiply with

### `mulScalar`​

``public mulScalars: number: Matrix2D``

Multiply each value of the matrix by a scalar.

#### Parameters

• `s: number`

The value by which to scale each term

### `rotate`​

``public rotateangle: numberdegrees: boolean = true: Matrix2D``

Rotate the matrix by the provided angle. By default, the angle is provided in degrees.

This method returns a new matrix representing the result of the computation. It will not modify the source matrix.

#### Parameters

• `angle: number`

The angle by which to rotate the matrix.

• `degrees: boolean = true`

Whether the angle is provided in degrees.

### `row`​

``public rowindex: number: numbernumbernumber``

Returns the nth row of the matrix. Only defined for 0 and 1.

#### Parameters

• `index: number`

The index of the row to retrieve.

### `scale`​

``public scalevec: PossibleVector2number: Matrix2D``

Scale the x and y component vectors of the matrix.

If `vec` is provided as a vector, the x and y component vectors of the matrix will be scaled by the x and y parts of the vector, respectively.

If `vec` is provided as a scalar, the x and y component vectors will be scaled uniformly by this factor.

This method returns a new matrix representing the result of the computation. It will not modify the source matrix.

#### Parameters

• `vec: PossibleVector2number`

The factor by which to scale the matrix

### `sub`​

``public subother: Matrix2D: Matrix2D``

Subtract the provided matrix from this matrix.

This method returns a new matrix representing the result of the computation. It will not modify the source matrix.

#### Parameters

• `other: Matrix2D`

The matrix to subract

### `toSymbol`​

``public toSymbol(): symbol``

### `translate`​

``public translatevec: PossibleVector2number: Matrix2D``

Translate the matrix by the dimensions of the provided vector.

If `vec` is provided as a scalar, matrix will be translated uniformly by this factor.

This method returns a new matrix representing the result of the computation. It will not modify the source matrix.

#### Parameters

• `vec: PossibleVector2number`

The vector by which to translate the matrix

### `fromRotation`​

``static public fromRotationangle: number: Matrix2D``

#### Parameters

• `angle: number`

### `fromScaling`​

``static public fromScalingscale: PossibleVector2number: Matrix2D``

#### Parameters

• `scale: PossibleVector2number`

### `fromTranslation`​

``static public fromTranslationtranslation: PossibleVector2number: Matrix2D``

#### Parameters

• `translation: PossibleVector2number`