# Matrix3

#### new Cesium.Matrix3(column0Row0, column1Row0, column2Row0, column0Row1, column1Row1, column2Row1, column0Row2, column1Row2, column2Row2)
engine/Source/Core/Matrix3.js 38

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.fromArray
- Matrix3.fromColumnMajorArray
- Matrix3.fromRowMajorArray
- Matrix3.fromQuaternion
- Matrix3.fromHeadingPitchRoll
- Matrix3.fromScale
- Matrix3.fromUniformScale
- Matrix3.fromCrossProduct
- Matrix3.fromRotationX
- Matrix3.fromRotationY
- Matrix3.fromRotationZ
- Matrix2
- Matrix4

### Members

#### length : number
engine/Source/Core/Matrix3.js 1767

Gets the number of items in the collection.

#### static constant Cesium.Matrix3.COLUMN0ROW0 : number
engine/Source/Core/Matrix3.js 1694

The index into Matrix3 for column 0, row 0.

#### static constant Cesium.Matrix3.COLUMN0ROW1 : number
engine/Source/Core/Matrix3.js 1702

The index into Matrix3 for column 0, row 1.

#### static constant Cesium.Matrix3.COLUMN0ROW2 : number
engine/Source/Core/Matrix3.js 1710

The index into Matrix3 for column 0, row 2.

#### static constant Cesium.Matrix3.COLUMN1ROW0 : number
engine/Source/Core/Matrix3.js 1718

The index into Matrix3 for column 1, row 0.

#### static constant Cesium.Matrix3.COLUMN1ROW1 : number
engine/Source/Core/Matrix3.js 1726

The index into Matrix3 for column 1, row 1.

#### static constant Cesium.Matrix3.COLUMN1ROW2 : number
engine/Source/Core/Matrix3.js 1734

The index into Matrix3 for column 1, row 2.

#### static constant Cesium.Matrix3.COLUMN2ROW0 : number
engine/Source/Core/Matrix3.js 1742

The index into Matrix3 for column 2, row 0.

#### static constant Cesium.Matrix3.COLUMN2ROW1 : number
engine/Source/Core/Matrix3.js 1750

The index into Matrix3 for column 2, row 1.

#### static constant Cesium.Matrix3.COLUMN2ROW2 : number
engine/Source/Core/Matrix3.js 1758

The index into Matrix3 for column 2, row 2.

#### static constant Cesium.Matrix3.IDENTITY : Matrix3
engine/Source/Core/Matrix3.js 1674

An immutable Matrix3 instance initialized to the identity matrix.

#### static Cesium.Matrix3.packedLength : number
engine/Source/Core/Matrix3.js 64

The number of elements used to pack the object into an array.

#### static constant Cesium.Matrix3.ZERO : Matrix3
engine/Source/Core/Matrix3.js 1684

An immutable Matrix3 instance initialized to the zero matrix.

### Methods

#### clone(result) → Matrix3
engine/Source/Core/Matrix3.js 1780

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.

#### equals(right) → boolean
engine/Source/Core/Matrix3.js 1791

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.

#### equalsEpsilon(right, epsilon) → boolean
engine/Source/Core/Matrix3.js 1821

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

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

##### Returns:

`true` if they are within the provided epsilon, `false` otherwise.

#### toString() → string
engine/Source/Core/Matrix3.js 1831

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)'.

#### static Cesium.Matrix3.abs(matrix, result) → Matrix3
engine/Source/Core/Matrix3.js 1499

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.

#### static Cesium.Matrix3.add(left, right, result) → Matrix3
engine/Source/Core/Matrix3.js 1090

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.

#### static Cesium.Matrix3.clone(matrix, result) → Matrix3
engine/Source/Core/Matrix3.js 197

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)

#### static Cesium.Matrix3.computeEigenDecomposition(matrix, result) → object
engine/Source/Core/Matrix3.js 1450

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:

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

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

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

#### static Cesium.Matrix3.determinant(matrix) → number
engine/Source/Core/Matrix3.js 1524

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.

#### static Cesium.Matrix3.equals(left, right) → boolean
engine/Source/Core/Matrix3.js 1622

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.

#### static Cesium.Matrix3.equalsEpsilon(left, right, epsilon) → boolean
engine/Source/Core/Matrix3.js 1649

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

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

##### Returns:

`true` if left and right are within the provided epsilon, `false` otherwise.

#### static Cesium.Matrix3.fromArray(array, startingIndex, result) → Matrix3
engine/Source/Core/Matrix3.js 248

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]

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

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

#### static Cesium.Matrix3.fromColumnMajorArray(values, result) → Matrix3
engine/Source/Core/Matrix3.js 257

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.

#### static Cesium.Matrix3.fromCrossProduct(vector, result) → Matrix3
engine/Source/Core/Matrix3.js 483

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

Name | Type | Description
--- | --- | ---
`vector` | Cartesian3 | the 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]
    const m = Cesium.Matrix3.fromCrossProduct(new Cesium.Cartesian3(7.0, 8.0, 9.0));

#### static Cesium.Matrix3.fromHeadingPitchRoll(headingPitchRoll, result) → Matrix3
engine/Source/Core/Matrix3.js 360

Computes a 3x3 rotation matrix from the provided headingPitchRoll. (see http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles )

Name | Type | Description
--- | --- | ---
`headingPitchRoll` | HeadingPitchRoll | the headingPitchRoll to use.
`result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

##### Returns:

The 3x3 rotation matrix from this headingPitchRoll.

#### static Cesium.Matrix3.fromQuaternion(quaternion, result) → Matrix3
engine/Source/Core/Matrix3.js 310

Computes a 3x3 rotation matrix from the provided quaternion.

Name | Type | Description
--- | --- | ---
`quaternion` | Quaternion | the quaternion to use.
`result` | Matrix3 | optional The object in which the result will be stored, if undefined a new instance will be created.

##### Returns:

The 3x3 rotation matrix from this quaternion.

#### static Cesium.Matrix3.fromRotationX(angle, result) → Matrix3
engine/Source/Core/Matrix3.js 527

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.
    const p = new Cesium.Cartesian3(5, 6, 7);
    const m = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(45.0));
    const rotated = Cesium.Matrix3.multiplyByVector(m, p, new Cesium.Cartesian3());

#### static Cesium.Matrix3.fromRotationY(angle, result) → Matrix3
engine/Source/Core/Matrix3.js 575

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.
    const p = new Cesium.Cartesian3(5, 6, 7);
    const m = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(45.0));
    const rotated = Cesium.Matrix3.multiplyByVector(m, p, new Cesium.Cartesian3());

#### static Cesium.Matrix3.fromRotationZ(angle, result) → Matrix3
engine/Source/Core/Matrix3.js 623

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.
    const p = new Cesium.Cartesian3(5, 6, 7);
    const m = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(45.0));
    const rotated = Cesium.Matrix3.multiplyByVector(m, p, new Cesium.Cartesian3());

#### static Cesium.Matrix3.fromRowMajorArray(values, result) → Matrix3
engine/Source/Core/Matrix3.js 273

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.

#### static Cesium.Matrix3.fromScale(scale, result) → Matrix3
engine/Source/Core/Matrix3.js 413

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]
    const m = Cesium.Matrix3.fromScale(new Cesium.Cartesian3(7.0, 8.0, 9.0));

#### static Cesium.Matrix3.fromUniformScale(scale, result) → Matrix3
engine/Source/Core/Matrix3.js 448

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]
    const m = Cesium.Matrix3.fromUniformScale(2.0);

#### static Cesium.Matrix3.getColumn(matrix, index, result) → Cartesian3
engine/Source/Core/Matrix3.js 733

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.

#### static Cesium.Matrix3.getElementIndex(column, row) → number
engine/Source/Core/Matrix3.js 712

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

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

##### 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:

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

#### static Cesium.Matrix3.getMaximumScale(matrix) → number
engine/Source/Core/Matrix3.js 964

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.

#### static Cesium.Matrix3.getRotation(matrix, result) → Matrix3
engine/Source/Core/Matrix3.js 1013

Extracts the rotation matrix assuming the matrix is an affine transformation.

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

##### Returns:

The modified result parameter.

##### See:

- Matrix3.setRotation

#### static Cesium.Matrix3.getRow(matrix, index, result) → Cartesian3
engine/Source/Core/Matrix3.js 790

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.

#### static Cesium.Matrix3.getScale(matrix, result) → Cartesian3
engine/Source/Core/Matrix3.js 937

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.

##### See:

- Matrix3.multiplyByScale
- Matrix3.multiplyByUniformScale
- Matrix3.fromScale
- Matrix3.fromUniformScale
- Matrix3.setScale
- Matrix3.setUniformScale

#### static Cesium.Matrix3.inverse(matrix, result) → Matrix3
engine/Source/Core/Matrix3.js 1555

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.

#### static Cesium.Matrix3.inverseTranspose(matrix, result) → Matrix3
engine/Source/Core/Matrix3.js 1602

Computes the inverse transpose of a matrix.

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

##### Returns:

The modified result parameter.

#### static Cesium.Matrix3.multiply(left, right, result) → Matrix3
engine/Source/Core/Matrix3.js 1042

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.

#### static Cesium.Matrix3.multiplyByScalar(matrix, scalar, result) → Matrix3
engine/Source/Core/Matrix3.js 1173

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.

#### static Cesium.Matrix3.multiplyByScale(matrix, scale, result) → Matrix3
engine/Source/Core/Matrix3.js 1212

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.multiplyByUniformScale
- Matrix3.fromScale
- Matrix3.fromUniformScale
- Matrix3.setScale
- Matrix3.setUniformScale
- Matrix3.getScale

#### static Cesium.Matrix3.multiplyByUniformScale(matrix, scale, result) → Matrix3
engine/Source/Core/Matrix3.js 1251

Computes the product of a matrix times a uniform scale, as if the scale were a scale matrix.

Name | Type | Description
--- | --- | ---
`matrix` | Matrix3 | The matrix on the left-hand side.
`scale` | number | The 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.fromUniformScale(scale), m);
    Cesium.Matrix3.multiplyByUniformScale(m, scale, m);

##### See:

- Matrix3.multiplyByScale
- Matrix3.fromScale
- Matrix3.fromUniformScale
- Matrix3.setScale
- Matrix3.setUniformScale
- Matrix3.getScale

#### static Cesium.Matrix3.multiplyByVector(matrix, cartesian, result) → Cartesian3
engine/Source/Core/Matrix3.js 1144

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.

#### static Cesium.Matrix3.negate(matrix, result) → Matrix3
engine/Source/Core/Matrix3.js 1278

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.

#### static Cesium.Matrix3.pack(value, array, startingIndex) → Array.<number>
engine/Source/Core/Matrix3.js 75

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.

##### Returns:

The array that was packed into

#### static Cesium.Matrix3.packArray(array, result) → Array.<number>
engine/Source/Core/Matrix3.js 135

Flattens an array of Matrix3s into an array of components. The components are stored in column-major order.

Name | Type | Description
--- | --- | ---
`array` | Array.<Matrix3> | The array of matrices to pack.
`result` | Array.<number> | optional The array onto which to store the result. If this is a typed array, it must have array.length * 9 components, else a `DeveloperError` will be thrown. If it is a regular array, it will be resized to have (array.length * 9) elements.

##### Returns:

The packed array.

#### static Cesium.Matrix3.setColumn(matrix, index, cartesian, result) → Matrix3
engine/Source/Core/Matrix3.js 763

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.

#### static Cesium.Matrix3.setRotation(matrix, rotation, result) → Matrix3
engine/Source/Core/Matrix3.js 981

Sets the rotation assuming the matrix is an affine transformation.

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

##### Returns:

The modified result parameter.

##### See:

- Matrix3.getRotation

#### static Cesium.Matrix3.setRow(matrix, index, cartesian, result) → Matrix3
engine/Source/Core/Matrix3.js 819

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.

#### static Cesium.Matrix3.setScale(matrix, scale, result) → Matrix3
engine/Source/Core/Matrix3.js 853

Computes a new matrix that replaces the scale with the provided scale. This assumes the matrix is an affine transformation.

Name | Type | Description
--- | --- | ---
`matrix` | Matrix3 | The matrix to use.
`scale` | Cartesian3 | The scale that replaces the scale of the provided matrix.
`result` | Matrix3 | The object onto which to store the result.

##### Returns:

The modified result parameter.

##### See:

- Matrix3.setUniformScale
- Matrix3.fromScale
- Matrix3.fromUniformScale
- Matrix3.multiplyByScale
- Matrix3.multiplyByUniformScale
- Matrix3.getScale

#### static Cesium.Matrix3.setUniformScale(matrix, scale, result) → Matrix3
engine/Source/Core/Matrix3.js 896

Computes a new matrix that replaces the scale with the provided uniform scale. This assumes the matrix is an affine transformation.

Name | Type | Description
--- | --- | ---
`matrix` | Matrix3 | The matrix to use.
`scale` | number | The uniform scale that replaces the scale of the provided matrix.
`result` | Matrix3 | The object onto which to store the result.

##### Returns:

The modified result parameter.

##### See:

- Matrix3.setScale
- Matrix3.fromScale
- Matrix3.fromUniformScale
- Matrix3.multiplyByScale
- Matrix3.multiplyByUniformScale
- Matrix3.getScale

#### static Cesium.Matrix3.subtract(left, right, result) → Matrix3
engine/Source/Core/Matrix3.js 1117

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.

#### static Cesium.Matrix3.toArray(matrix, result) → Array.<number>
engine/Source/Core/Matrix3.js 666

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.

#### static Cesium.Matrix3.transpose(matrix, result) → Matrix3
engine/Source/Core/Matrix3.js 1303

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.

#### static Cesium.Matrix3.unpack(array, startingIndex, result) → Matrix3
engine/Source/Core/Matrix3.js 104

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.

##### Returns:

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

#### static Cesium.Matrix3.unpackArray(array, result) → Array.<Matrix3>
engine/Source/Core/Matrix3.js 167

Unpacks an array of column-major matrix components into an array of Matrix3s.

Name | Type | Description
--- | --- | ---
`array` | Array.<number> | The array of components to unpack.
`result` | Array.<Matrix3> | optional The array onto which to store the result.

##### Returns:

The unpacked array.

Need help? The fastest way to get answers is from the community and team on the Cesium Forum.