# SVGMatrix

Many of SVG's graphics operations utilize 2x3 matrices of the form:

```[a c e]
[b d f]
```

which, when expanded into a 3x3 matrix for the purposes of matrix arithmetic, become:

```[a c e]
[b d f]
[0 0 1]
```

An `SVGMatrix` object can be designated as read only, which means that attempts to modify the object will result in an exception being thrown.

## Properties

`SVGMatrix.a`

A float representing the a component of the matrix.

`SVGMatrix.b`

A float representing the b component of the matrix.

`SVGMatrix.c`

A float representing the c component of the matrix.

`SVGMatrix.d`

A float representing the d component of the matrix.

`SVGMatrix.e`

A float representing the e component of the matrix.

`SVGMatrix.f`

A float representing the f component of the matrix.

## Methods

`SVGMatrix.multiply()`

Performs matrix multiplication. This matrix is post-multiplied by another matrix, returning the resulting new matrix as `SVGMatrix`.

`SVGMatrix.inverse()`

Returns the inverse matrix as `SVGMatrix`.

`SVGMatrix.translate()`

Post-multiplies a translation transformation on the current matrix and returns the resulting matrix as `SVGMatrix`.

`SVGMatrix.scale()`

Post-multiplies a uniform scale transformation on the current matrix and returns the resulting matrix as `SVGMatrix`.

`SVGMatrix.scaleNonUniform()`

Post-multiplies a non-uniform scale transformation on the current matrix and returns the resulting matrix as `SVGMatrix`.

`SVGMatrix.rotate()`

Post-multiplies a rotation transformation on the current matrix and returns the resulting matrix as `SVGMatrix`.

`SVGMatrix.rotateFromVector()`

Post-multiplies a rotation transformation on the current matrix and returns the resulting matrix as `SVGMatrix`. The rotation angle is determined by taking (+/-) atan(y/x). The direction of the vector (x, y) determines whether the positive or negative angle value is used.

`SVGMatrix.flipX()`

Post-multiplies the transformation [-1 0 0 1 0 0] and returns the resulting matrix as `SVGMatrix`.

`SVGMatrix.flipY()`

Post-multiplies the transformation [1 0 0 -1 0 0] and returns the resulting matrix as `SVGMatrix`.

`SVGMatrix.skewX()`

Post-multiplies a skewX transformation on the current matrix and returns the resulting matrix as `SVGMatrix`.

`SVGMatrix.skewY()`

Post-multiplies a skewY transformation on the current matrix and returns the resulting matrix as `SVGMatrix`.

## Exceptions

A `DOMException` with the code `NO_MODIFICATION_ALLOWED_ERR` is raised when attempting updating a read-only attribute or when the object itself is read-only.

## Browser compatibility

BCD tables only load in the browser