# Matrix

class Matrix()

  Object representing the 4x4 Matrix. More information can be found [here](https://docs.techsoft3d.com/communicator/latest/prog_guide/viewing/model_attributes/matrices.html).

Constructors

- `constructor()`

Properties

- `m`

Methods

- `assign()`

- `copy()`

- `equals()`

- `equalsWithTolerance()`

- `inverseAndDeterminant()`

- `isIdentity()`

- `loadIdentity()`

- `multiplyByScalar()`

- `normalMatrix()`

- `setScaleComponent()`

- `setTranslationComponent()`

- `toJson()`

- `transform()`

- `transform4()`

- `transformArray()`

- `transformBox()`

- `transpose()`

- `upperLeft3x3Determinant()`

- `createFromArray()`

- `createFromBasis()`

- `createFromOffAxisRotation()`

- `fromJson()`

- `inverse()`

- `multiply()`

- `xAxisRotation()`

- `yAxisRotation()`

- `zAxisRotation()`

## Constructors

Matrix.constructor()

  Creates a new matrix set to the identity matrix.

  Return type

    Matrix

## Properties

Matrix.m
  Type

    Matrix16

## Methods

### assign

Matrix.assign(matrix)
  Arguments

    - matrix (`Matrix()`) – the matrix whose values will be set.

  Sets the value of this matrix to another.

  Returns

    This matrix object.

  Return type

    this

### copy

Matrix.copy()

  Creates a copy of this matrix.

  Returns

    Copy of this matrix.

  Return type

    Matrix

### equals

Matrix.equals(other)
  Arguments

    - other (`Matrix()`) – Matrix to compare with.

  Strictly compares this matrix with another.

  Returns

    True if the values of this matrix equal those of the other.

  Return type

    boolean

### equalsWithTolerance

Matrix.equalsWithTolerance(other, tolerance)
  Arguments

    - other (`Matrix()`) – Matrix to compare with.

    - tolerance (`number()`) – Tolerance to be used in the comparison.

  Compares this matrix with another using a tolerance.

  Returns

    True if the values of this matrix equal those of the other.

  Return type

    boolean

### inverseAndDeterminant

Matrix.inverseAndDeterminant()

  Computes the determinant and inverse of a matrix, if possible.

  Returns

    An array containing the inverse (or null if not invertible) followed by the determinant

  Return type

    (null | Matrix, number)

### isIdentity

Matrix.isIdentity()
  Return type

    boolean

### loadIdentity

Matrix.loadIdentity()

  Sets the matrix to the identity matrix.

  Returns

    This matrix object.

  Return type

    this

### multiplyByScalar

Matrix.multiplyByScalar(scalar)
  Arguments

    - scalar (`number()`) – Scalar to multiply the matrix with.

  Multiply the matrix by given scalar.

  Returns

    This matrix object.

  Return type

    this

### normalMatrix

Matrix.normalMatrix()
  Returns

    the version of this matrix suitable for applying to normals, i.e. the inverse transpose of the upper-left 3x3 submatrix.

  Return type

    null | Matrix

### setScaleComponent

Matrix.setScaleComponent(x, y, z)
  Arguments

    - x (`number()`) – X scale value.

    - y (`number()`) – Y scale value.

    - z (`number()`) – Z scale value.

  Sets the scale components of this matrix.

  Returns

    This matrix object.

  Return type

    this

### setTranslationComponent

Matrix.setTranslationComponent(x, y, z)
  Arguments

    - x (`number()`) – X translation value.

    - y (`number()`) – Y translation value.

    - z (`number()`) – Z translation value.

  Sets the translation components of this matrix.

  Returns

    This matrix object.

  Return type

    this

### toJson

Matrix.toJson()

  Creates an object ready for JSON serialization.

  Returns

    The prepared object.

  Return type

    [number]

### transform

Matrix.transform(point[, result])
  Arguments

    - point (`Point3()`) – The point to be transformed.

    - result (`Point3()`) – optional A Point3 which can hold the result of the transformation.

  Transforms a point according to this matrix. The source and destination points are allowed to be the same object.

  Returns

    A new point if result is undefined, result otherwise.

  Return type

    Point3

### transform4

Matrix.transform4(point[, result])
  Arguments

    - point (`Point4()`) – The point to be transformed.

    - result (`Point4()`) – optional A Point3 which can hold the result of the transformation.

  Transforms a point according to this matrix. The source and destination points are allowed to be the same object.

  Returns

    A new point if result is undefined, result otherwise.

  Return type

    Point4

### transformArray

Matrix.transformArray(inPoints, outPoints)
  Arguments

    - inPoints (`[Point3]()`) – an array of points to be transformed.

    - outPoints (`[Point3]()`) – an array that will be populated with transformed points. Note that the results will be pushed onto the end of the array.

  Transforms an array of points according to this matrix.

  Return type

    void

### transformBox

Matrix.transformBox(inBox)
  Arguments

    - inBox (`Box()`) – None

  Return type

    Box

### transpose

Matrix.transpose()

  Sets this matrix equal to its transpose.

  Returns

    This matrix object.

  Return type

    this

### upperLeft3x3Determinant

Matrix.upperLeft3x3Determinant()

  Computes the determinant of the upper-left 3x3 subsection of this matrix.

  Return type

    number

### static createFromArray

Matrix.createFromArray(arr)
  Arguments

    - arr (`[number]()`) – 16 element array of numbers.

  Creates a matrix from an array of numbers.

  Returns

    New matrix with elements set to the values of the array parameter. Array elements will be in column-major order.

  Return type

    Matrix

### static createFromBasis

Matrix.createFromBasis(xAxis, yAxis, zAxis)
  Arguments

    - xAxis (`Point3()`) – The first column.

    - yAxis (`Point3()`) – The second column.

    - zAxis (`Point3()`) – The third column.

  Creates a matrix from three [[Point3]]s, which will be used as the columns of the matrix.

  Return type

    Matrix

### static createFromOffAxisRotation

Matrix.createFromOffAxisRotation(axis, degrees)
  Arguments

    - axis (`Point3()`) – Axis to rotate about.

    - degrees (`number()`) – Amount of degrees to rotate about the provided axis.

  Creates a rotation matrix from an arbitrary axis.

  Returns

    Rotation matrix which represents the rotation about the supplied axis.

  Return type

    Matrix

### static fromJson

Matrix.fromJson(obj)
  Arguments

    - obj (`unknown()`) – None

  Creates a new [[Matrix]] from an object given by [[toJson]].

  Returns

    The prepared object.

  Return type

    Matrix

### static inverse

Matrix.inverse(matrix)
  Arguments

    - matrix (`Matrix()`) – Matrix whose inverse will be computed.

  Computes the inverse of a matrix if possible.

  Returns

    Matrix set to the inverse of the supplied matrix.

  Return type

    null | Matrix

### static multiply

Matrix.multiply(m1, m2)
  Arguments

    - m1 (`Matrix()`) – The first matrix.

    - m2 (`Matrix()`) – The second matrix.

  Multiplies two matrices.

  (p’ = ABp <=> p’ = multiply(B, A).transform(p))

  Returns

    Matrix which is the result of the multiplication.

  Return type

    Matrix

### static xAxisRotation

Matrix.xAxisRotation(degrees)
  Arguments

    - degrees (`number()`) – The degrees of the rotation.

  Returns the matrix for a clockwise rotation around the X-axis.

  Returns

    The rotation matrix.

  Return type

    Matrix

### static yAxisRotation

Matrix.yAxisRotation(degrees)
  Arguments

    - degrees (`number()`) – The degrees of the rotation.

  Returns the matrix for a clockwise rotation around the Y-axis.

  Returns

    The rotation matrix.

  Return type

    Matrix

### static zAxisRotation

Matrix.zAxisRotation(degrees)
  Arguments

    - degrees (`number()`) – The degrees of the rotation.

  Returns the matrix for a clockwise rotation around the Z-axis.

  Returns

    The rotation matrix.

  Return type

    Matrix