Matrix3 - Cesium Documentation

# Matrix3

#### new Matrix3(column0Row0, column1Row0, column2Row0, column0Row1, column1Row1, column2Row1, column0Row2, column1Row2, column2Row2)

  A 3x3 matrix, indexable as a column-major order array. Constructor parameters are in row-major order for code readability.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `column0Row0` | Number | `0.0` | optional The value for column 0, row 0.
  `column1Row0` | Number | `0.0` | optional The value for column 1, row 0.
  `column2Row0` | Number | `0.0` | optional The value for column 2, row 0.
  `column0Row1` | Number | `0.0` | optional The value for column 0, row 1.
  `column1Row1` | Number | `0.0` | optional The value for column 1, row 1.
  `column2Row1` | Number | `0.0` | optional The value for column 2, row 1.
  `column0Row2` | Number | `0.0` | optional The value for column 0, row 2.
  `column1Row2` | Number | `0.0` | optional The value for column 1, row 2.
  `column2Row2` | Number | `0.0` | optional The value for column 2, row 2.

  ##### See:

  - Matrix3.fromColumnMajorArray
  - Matrix3.fromRowMajorArray
  - Matrix3.fromQuaternion
  - Matrix3.fromScale
  - Matrix3.fromUniformScale
  - Matrix2
  - Matrix4
  Source: Core/Matrix3.js, line 42

### Members

#### staticconstantMatrix3.COLUMN0ROW0 :Number

  The index into Matrix3 for column 0, row 0.
  Source: Core/Matrix3.js, line 1413

#### staticconstantMatrix3.COLUMN0ROW1 :Number

  The index into Matrix3 for column 0, row 1.
  Source: Core/Matrix3.js, line 1421

#### staticconstantMatrix3.COLUMN0ROW2 :Number

  The index into Matrix3 for column 0, row 2.
  Source: Core/Matrix3.js, line 1429

#### staticconstantMatrix3.COLUMN1ROW0 :Number

  The index into Matrix3 for column 1, row 0.
  Source: Core/Matrix3.js, line 1437

#### staticconstantMatrix3.COLUMN1ROW1 :Number

  The index into Matrix3 for column 1, row 1.
  Source: Core/Matrix3.js, line 1445

#### staticconstantMatrix3.COLUMN1ROW2 :Number

  The index into Matrix3 for column 1, row 2.
  Source: Core/Matrix3.js, line 1453

#### staticconstantMatrix3.COLUMN2ROW0 :Number

  The index into Matrix3 for column 2, row 0.
  Source: Core/Matrix3.js, line 1461

#### staticconstantMatrix3.COLUMN2ROW1 :Number

  The index into Matrix3 for column 2, row 1.
  Source: Core/Matrix3.js, line 1469

#### staticconstantMatrix3.COLUMN2ROW2 :Number

  The index into Matrix3 for column 2, row 2.
  Source: Core/Matrix3.js, line 1477

#### staticconstantMatrix3.IDENTITY :Matrix3

  An immutable Matrix3 instance initialized to the identity matrix.
  Source: Core/Matrix3.js, line 1393

#### staticMatrix3.packedLength :Number

  The number of elements used to pack the object into an array.
  Source: Core/Matrix3.js, line 60

#### staticconstantMatrix3.ZERO :Matrix3

  An immutable Matrix3 instance initialized to the zero matrix.
  Source: Core/Matrix3.js, line 1403

### Methods

#### clone(result) → Matrix3

  Duplicates the provided Matrix3 instance.

  Name | Type | Description
  --- | --- | ---
  `result` | Matrix3 | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Matrix3 instance if one was not provided.
  Source: Core/Matrix3.js, line 1485

#### equals(right) → Boolean

  Compares this matrix to the provided matrix componentwise and returns `true` if they are equal, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `right` | Matrix3 | optional The right hand side matrix.

  ##### Returns:

  `true` if they are equal, `false` otherwise.
  Source: Core/Matrix3.js, line 1496

#### equalsEpsilon(right, epsilon) → Boolean

  Compares this matrix to the provided matrix componentwise and returns `true` if they are within the provided epsilon, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `right` | Matrix3 | optional The right hand side matrix.
  `epsilon` | Number | The epsilon to use for equality testing.

  ##### Returns:

  `true` if they are within the provided epsilon, `false` otherwise.
  Source: Core/Matrix3.js, line 1524

#### toString() → String

  Creates a string representing this Matrix with each row being on a separate line and in the format '(column0, column1, column2)'.

  ##### Returns:

  A string representing the provided Matrix with each row being on a separate line and in the format '(column0, column1, column2)'.
  Source: Core/Matrix3.js, line 1534

#### staticMatrix3.abs(matrix, result) → Matrix3

  Computes a matrix, which contains the absolute (unsigned) values of the provided matrix's elements.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix with signed elements.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Matrix3.js, line 1235

#### staticMatrix3.add(left, right, result) → Matrix3

  Computes the sum of two matrices.

  Name | Type | Description
  --- | --- | ---
  `left` | Matrix3 | The first matrix.
  `right` | Matrix3 | The second matrix.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Matrix3.js, line 838

#### staticMatrix3.clone(matrix, result) → Matrix3

  Duplicates a Matrix3 instance.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to duplicate.
  `result` | Matrix3 | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Matrix3 instance if one was not provided. (Returns undefined if matrix is undefined)
  Source: Core/Matrix3.js, line 132

#### staticMatrix3.computeEigenDecomposition(matrix, result) → Object

  Computes the eigenvectors and eigenvalues of a symmetric matrix.

  Returns a diagonal matrix and unitary matrix such that: `matrix = unitary matrix * diagonal matrix * transpose(unitary matrix)`

  The values along the diagonal of the diagonal matrix are the eigenvalues. The columns of the unitary matrix are the corresponding eigenvectors.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to decompose into diagonal and unitary matrix. Expected to be symmetric.
  `result` | Object | optional An object with unitary and diagonal properties which are matrices onto which to store the result.

  ##### Returns:

  An object with unitary and diagonal properties which are the unitary and diagonal matrices, respectively.

  ##### Example:

      var a = //... symetric matrix
      var result = {
          unitary : new Cesium.Matrix3(),
          diagonal : new Cesium.Matrix3()
      };
      Cesium.Matrix3.computeEigenDecomposition(a, result);

      var unitaryTranspose = Cesium.Matrix3.transpose(result.unitary, new Cesium.Matrix3());
      var b = Cesium.Matrix3.multiply(result.unitary, result.diagonal, new Cesium.Matrix3());
      Cesium.Matrix3.multiply(b, unitaryTranspose, b); // b is now equal to a

      var lambda = Cesium.Matrix3.getColumn(result.diagonal, 0, new Cesium.Cartesian3()).x;  // first eigenvalue
      var v = Cesium.Matrix3.getColumn(result.unitary, 0, new Cesium.Cartesian3());          // first eigenvector
      var c = Cesium.Cartesian3.multiplyByScalar(v, lambda, new Cesium.Cartesian3());        // equal to Cesium.Matrix3.multiplyByVector(a, v)

  Source: Core/Matrix3.js, line 1187

#### staticMatrix3.determinant(matrix) → Number

  Computes the determinant of the provided matrix.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to use.

  ##### Returns:

  The value of the determinant of the matrix.
  Source: Core/Matrix3.js, line 1264

#### staticMatrix3.equals(left, right) → Boolean

  Compares the provided matrices componentwise and returns `true` if they are equal, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `left` | Matrix3 | optional The first matrix.
  `right` | Matrix3 | optional The second matrix.

  ##### Returns:

  `true` if left and right are equal, `false` otherwise.
  Source: Core/Matrix3.js, line 1341

#### staticMatrix3.equalsEpsilon(left, right, epsilon) → Boolean

  Compares the provided matrices componentwise and returns `true` if they are within the provided epsilon, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `left` | Matrix3 | optional The first matrix.
  `right` | Matrix3 | optional The second matrix.
  `epsilon` | Number | The epsilon to use for equality testing.

  ##### Returns:

  `true` if left and right are within the provided epsilon, `false` otherwise.
  Source: Core/Matrix3.js, line 1366

#### staticMatrix3.fromArray(array, startingIndex, result) → Matrix3

  Creates a Matrix3 from 9 consecutive elements in an array.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `array` | Array.<Number> |  | The array whose 9 consecutive elements correspond to the positions of the matrix. Assumes column-major order.
  `startingIndex` | Number | `0` | optional The offset into the array of the first element, which corresponds to first column first row position in the matrix.
  `result` | Matrix3 |  | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Matrix3 instance if one was not provided.

  ##### Example:

      // Create the Matrix3:
      // [1.0, 2.0, 3.0]
      // [1.0, 2.0, 3.0]
      // [1.0, 2.0, 3.0]

      var v = [1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0];
      var m = Cesium.Matrix3.fromArray(v);

      // Create same Matrix3 with using an offset into an array
      var v2 = [0.0, 0.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0];
      var m2 = Cesium.Matrix3.fromArray(v2, 2);

  Source: Core/Matrix3.js, line 174

#### staticMatrix3.fromColumnMajorArray(values, result) → Matrix3

  Creates a Matrix3 instance from a column-major order array.

  Name | Type | Description
  --- | --- | ---
  `values` | Array.<Number> | The column-major order array.
  `result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

  ##### Returns:

  The modified result parameter, or a new Matrix3 instance if one was not provided.
  Source: Core/Matrix3.js, line 206

#### staticMatrix3.fromCrossProduct(the, result) → Matrix3

  Computes a Matrix3 instance representing the cross product equivalent matrix of a Cartesian3 vector.

  Name | Type | Description
  --- | --- | ---
  `the` | Cartesian3 | vector on the left hand side of the cross product operation.
  `result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

  ##### Returns:

  The modified result parameter, or a new Matrix3 instance if one was not provided.

  ##### Example:

      // Creates
      //   [0.0, -9.0,  8.0]
      //   [9.0,  0.0, -7.0]
      //   [-8.0, 7.0,  0.0]
      var m = Cesium.Matrix3.fromCrossProduct(new Cesium.Cartesian3(7.0, 8.0, 9.0));

  Source: Core/Matrix3.js, line 395

#### staticMatrix3.fromQuaternion(quaternion) → Matrix3

  Computes a 3x3 rotation matrix from the provided quaternion.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | the quaternion to use.

  ##### Returns:

  The 3x3 rotation matrix from this quaternion.
  Source: Core/Matrix3.js, line 254

#### staticMatrix3.fromRotationX(angle, result) → Matrix3

  Creates a rotation matrix around the x-axis.

  Name | Type | Description
  --- | --- | ---
  `angle` | Number | The angle, in radians, of the rotation. Positive angles are counterclockwise.
  `result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

  ##### Returns:

  The modified result parameter, or a new Matrix3 instance if one was not provided.

  ##### Example:

      // Rotate a point 45 degrees counterclockwise around the x-axis.
      var p = new Cesium.Cartesian3(5, 6, 7);
      var m = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(45.0));
      var rotated = Cesium.Matrix3.multiplyByVector(m, p, new Cesium.Cartesian3());

  Source: Core/Matrix3.js, line 434

#### staticMatrix3.fromRotationY(angle, result) → Matrix3

  Creates a rotation matrix around the y-axis.

  Name | Type | Description
  --- | --- | ---
  `angle` | Number | The angle, in radians, of the rotation. Positive angles are counterclockwise.
  `result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

  ##### Returns:

  The modified result parameter, or a new Matrix3 instance if one was not provided.

  ##### Example:

      // Rotate a point 45 degrees counterclockwise around the y-axis.
      var p = new Cesium.Cartesian3(5, 6, 7);
      var m = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(45.0));
      var rotated = Cesium.Matrix3.multiplyByVector(m, p, new Cesium.Cartesian3());

  Source: Core/Matrix3.js, line 477

#### staticMatrix3.fromRotationZ(angle, result) → Matrix3

  Creates a rotation matrix around the z-axis.

  Name | Type | Description
  --- | --- | ---
  `angle` | Number | The angle, in radians, of the rotation. Positive angles are counterclockwise.
  `result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

  ##### Returns:

  The modified result parameter, or a new Matrix3 instance if one was not provided.

  ##### Example:

      // Rotate a point 45 degrees counterclockwise around the z-axis.
      var p = new Cesium.Cartesian3(5, 6, 7);
      var m = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(45.0));
      var rotated = Cesium.Matrix3.multiplyByVector(m, p, new Cesium.Cartesian3());

  Source: Core/Matrix3.js, line 520

#### staticMatrix3.fromRowMajorArray(values, result) → Matrix3

  Creates a Matrix3 instance from a row-major order array. The resulting matrix will be in column-major order.

  Name | Type | Description
  --- | --- | ---
  `values` | Array.<Number> | The row-major order array.
  `result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

  ##### Returns:

  The modified result parameter, or a new Matrix3 instance if one was not provided.
  Source: Core/Matrix3.js, line 224

#### staticMatrix3.fromScale(scale, result) → Matrix3

  Computes a Matrix3 instance representing a non-uniform scale.

  Name | Type | Description
  --- | --- | ---
  `scale` | Cartesian3 | The x, y, and z scale factors.
  `result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

  ##### Returns:

  The modified result parameter, or a new Matrix3 instance if one was not provided.

  ##### Example:

      // Creates
      //   [7.0, 0.0, 0.0]
      //   [0.0, 8.0, 0.0]
      //   [0.0, 0.0, 9.0]
      var m = Cesium.Matrix3.fromScale(new Cesium.Cartesian3(7.0, 8.0, 9.0));

  Source: Core/Matrix3.js, line 315

#### staticMatrix3.fromUniformScale(scale, result) → Matrix3

  Computes a Matrix3 instance representing a uniform scale.

  Name | Type | Description
  --- | --- | ---
  `scale` | Number | The uniform scale factor.
  `result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

  ##### Returns:

  The modified result parameter, or a new Matrix3 instance if one was not provided.

  ##### Example:

      // Creates
      //   [2.0, 0.0, 0.0]
      //   [0.0, 2.0, 0.0]
      //   [0.0, 0.0, 2.0]
      var m = Cesium.Matrix3.fromUniformScale(2.0);

  Source: Core/Matrix3.js, line 355

#### staticMatrix3.getColumn(matrix, index, result) → Cartesian3

  Retrieves a copy of the matrix column at the provided index as a Cartesian3 instance.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to use.
  `index` | Number | The zero-based index of the column to retrieve.
  `result` | Cartesian3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### Throws:

  - DeveloperError : index must be 0, 1, or 2.
  Source: Core/Matrix3.js, line 619

#### staticMatrix3.getElementIndex(row, column) → Number

  Computes the array index of the element at the provided row and column.

  Name | Type | Description
  --- | --- | ---
  `row` | Number | The zero-based index of the row.
  `column` | Number | The zero-based index of the column.

  ##### Returns:

  The index of the element at the provided row and column.

  ##### Throws:

  - DeveloperError : row must be 0, 1, or 2.
  - DeveloperError : column must be 0, 1, or 2.

  ##### Example:

      var myMatrix = new Cesium.Matrix3();
      var column1Row0Index = Cesium.Matrix3.getElementIndex(1, 0);
      var column1Row0 = myMatrix[column1Row0Index]
      myMatrix[column1Row0Index] = 10.0;

  Source: Core/Matrix3.js, line 596

#### staticMatrix3.getMaximumScale(matrix) → Number

  Computes the maximum scale assuming the matrix is an affine transformation. The maximum scale is the maximum length of the column vectors.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix.

  ##### Returns:

  The maximum scale.
  Source: Core/Matrix3.js, line 780

#### staticMatrix3.getRow(matrix, index, result) → Cartesian3

  Retrieves a copy of the matrix row at the provided index as a Cartesian3 instance.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to use.
  `index` | Number | The zero-based index of the row to retrieve.
  `result` | Cartesian3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### Throws:

  - DeveloperError : index must be 0, 1, or 2.
  Source: Core/Matrix3.js, line 689

#### staticMatrix3.getScale(matrix, result) → Cartesian3

  Extracts the non-uniform scale assuming the matrix is an affine transformation.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix.
  `result` | Cartesian3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Matrix3.js, line 755

#### staticMatrix3.inverse(matrix, result) → Matrix3

  Computes the inverse of the provided matrix.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to invert.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### Throws:

  - DeveloperError : matrix is not invertible.
  Source: Core/Matrix3.js, line 1293

#### staticMatrix3.multiply(left, right, result) → Matrix3

  Computes the product of two matrices.

  Name | Type | Description
  --- | --- | ---
  `left` | Matrix3 | The first matrix.
  `right` | Matrix3 | The second matrix.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Matrix3.js, line 793

#### staticMatrix3.multiplyByScalar(matrix, scalar, result) → Matrix3

  Computes the product of a matrix and a scalar.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix.
  `scalar` | Number | The number to multiply by.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Matrix3.js, line 939

#### staticMatrix3.multiplyByScale(matrix, scale, result) → Matrix3

  Computes the product of a matrix times a (non-uniform) scale, as if the scale were a scale matrix.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix on the left-hand side.
  `scale` | Cartesian3 | The non-uniform scale on the right-hand side.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### Example:

      // Instead of Cesium.Matrix3.multiply(m, Cesium.Matrix3.fromScale(scale), m);
      Cesium.Matrix3.multiplyByScale(m, scale, m);

  ##### See:

  - Matrix3.fromScale
  - Matrix3.multiplyByUniformScale
  Source: Core/Matrix3.js, line 979

#### staticMatrix3.multiplyByVector(matrix, cartesian, result) → Cartesian3

  Computes the product of a matrix and a column vector.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix.
  `cartesian` | Cartesian3 | The column.
  `result` | Cartesian3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Matrix3.js, line 904

#### staticMatrix3.negate(matrix, result) → Matrix3

  Creates a negated copy of the provided matrix.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to negate.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Matrix3.js, line 1011

#### staticMatrix3.pack(value, array, startingIndex)

  Stores the provided instance into the provided array.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `value` | Matrix3 |  | The value to pack.
  `array` | Array.<Number> |  | The array to pack into.
  `startingIndex` | Number | `0` | optional The index into the array at which to start packing the elements.

  Source: Core/Matrix3.js, line 69

#### staticMatrix3.setColumn(matrix, index, cartesian, result) → Matrix3

  Computes a new matrix that replaces the specified column in the provided matrix with the provided Cartesian3 instance.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to use.
  `index` | Number | The zero-based index of the column to set.
  `cartesian` | Cartesian3 | The Cartesian whose values will be assigned to the specified column.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### Throws:

  - DeveloperError : index must be 0, 1, or 2.
  Source: Core/Matrix3.js, line 655

#### staticMatrix3.setRow(matrix, index, cartesian, result) → Matrix3

  Computes a new matrix that replaces the specified row in the provided matrix with the provided Cartesian3 instance.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to use.
  `index` | Number | The zero-based index of the row to set.
  `cartesian` | Cartesian3 | The Cartesian whose values will be assigned to the specified row.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### Throws:

  - DeveloperError : index must be 0, 1, or 2.
  Source: Core/Matrix3.js, line 723

#### staticMatrix3.subtract(left, right, result) → Matrix3

  Computes the difference of two matrices.

  Name | Type | Description
  --- | --- | ---
  `left` | Matrix3 | The first matrix.
  `right` | Matrix3 | The second matrix.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Matrix3.js, line 871

#### staticMatrix3.toArray(matrix, result) → Array.<Number>

  Creates an Array from the provided Matrix3 instance. The array will be in column-major order.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to use..
  `result` | Array.<Number> | optional The Array onto which to store the result.

  ##### Returns:

  The modified Array parameter or a new Array instance if one was not provided.
  Source: Core/Matrix3.js, line 558

#### staticMatrix3.transpose(matrix, result) → Matrix3

  Computes the transpose of the provided matrix.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The matrix to transpose.
  `result` | Matrix3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Matrix3.js, line 1040

#### staticMatrix3.unpack(array, startingIndex, result)

  Retrieves an instance from a packed array.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `array` | Array.<Number> |  | The packed array.
  `startingIndex` | Number | `0` | optional The starting index of the element to be unpacked.
  `result` | Matrix3 |  | optional The object into which to store the result.

  Source: Core/Matrix3.js, line 100