Matrix3

Matrix3

new

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

Parameters:
Name Type Argument Default Description
column0Row0 Number <optional>
0.0 The value for column 0, row 0.
column1Row0 Number <optional>
0.0 The value for column 1, row 0.
column2Row0 Number <optional>
0.0 The value for column 2, row 0.
column0Row1 Number <optional>
0.0 The value for column 0, row 1.
column1Row1 Number <optional>
0.0 The value for column 1, row 1.
column2Row1 Number <optional>
0.0 The value for column 2, row 1.
column0Row2 Number <optional>
0.0 The value for column 0, row 2.
column1Row2 Number <optional>
0.0 The value for column 1, row 2.
column2Row2 Number <optional>
0.0 The value for column 2, row 2.
See:
Source:

Members

<static>

The index into Matrix3 for column 0, row 0.

<static>

The index into Matrix3 for column 0, row 1.

<static>

The index into Matrix3 for column 0, row 2.

<static>

The index into Matrix3 for column 1, row 0.

<static>

The index into Matrix3 for column 1, row 1.

<static>

The index into Matrix3 for column 1, row 2.

<static>

The index into Matrix3 for column 2, row 0.

<static>

The index into Matrix3 for column 2, row 1.

<static>

The index into Matrix3 for column 2, row 2.

<static>

An immutable Matrix3 instance initialized to the identity matrix.

Methods

Duplicates the provided Matrix3 instance.

Parameters:
Name Type Argument Description
result Matrix3 <optional>
The object onto which to store the result.
Returns:
Matrix3 The modified result parameter or a new Matrix3 instance if one was not provided.

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

Parameters:
Name Type Argument Description
right Matrix3 <optional>
The right hand side matrix.
Returns:
Boolean true if they are equal, false otherwise.

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

Parameters:
Name Type Argument Description
right Matrix3 <optional>
The right hand side matrix.
epsilon Number The epsilon to use for equality testing.
Returns:
Boolean true if they are within the provided epsilon, false otherwise.

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

Returns:
String A string representing the provided Matrix with each row being on a separate line and in the format '(column0, column1, column2)'.

<static>

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

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix with signed elements.
result Matrix3 <optional>
The object onto which to store the result.
Returns:
Matrix3 The modified result parameter or a new Matrix3 instance if one was not provided.

<static>

Duplicates a Matrix3 instance.

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix to duplicate.
result Matrix3 <optional>
The object onto which to store the result.
Returns:
Matrix3 The modified result parameter or a new Matrix3 instance if one was not provided. (Returns undefined if matrix is undefined)

<static>

Computes the determinant of the provided matrix.

Parameters:
Name Type Description
matrix Matrix3 The matrix to use.
Returns:
Number The value of the determinant of the matrix.

<static>

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

Parameters:
Name Type Argument Description
left Matrix3 <optional>
The first matrix.
right Matrix3 <optional>
The second matrix.
Returns:
Boolean true if left and right are equal, false otherwise.

<static>

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

Parameters:
Name Type Argument Description
left Matrix3 <optional>
The first matrix.
right Matrix3 <optional>
The second matrix.
epsilon Number The epsilon to use for equality testing.
Returns:
Boolean true if left and right are within the provided epsilon, false otherwise.

<static>

Creates a Matrix3 from 9 consecutive elements in an array.

Parameters:
Name Type Argument Default Description
array Array The array whose 9 consecutive elements correspond to the positions of the matrix. Assumes column-major order.
startingIndex Number <optional>
0 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:
Matrix3 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);

<static>

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

Parameters:
Name Type Argument Description
values Array 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>

Computes a 3x3 rotation matrix from the provided quaternion.

Parameters:
Name Type Description
quaternion Quaternion the quaternion to use.
Returns:
Matrix3 The 3x3 rotation matrix from this quaternion.

<static>

Creates a rotation matrix around the x-axis.

Parameters:
Name Type Argument 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);

<static>

Creates a rotation matrix around the y-axis.

Parameters:
Name Type Argument 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);

<static>

Creates a rotation matrix around the z-axis.

Parameters:
Name Type Argument 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);

<static>

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

Parameters:
Name Type Argument Description
values Array 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>

Computes a Matrix3 instance representing a non-uniform scale.

Parameters:
Name Type Argument 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));

<static>

Computes a Matrix3 instance representing a uniform scale.

Parameters:
Name Type Argument 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);

<static>

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

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix to use.
index Number The zero-based index of the column to retrieve.
result Cartesian3 <optional>
The object onto which to store the result.
Throws:
DeveloperError : index must be 0, 1, or 2.
Returns:
Cartesian3 The modified result parameter or a new Cartesian3 instance if one was not provided.
See:

<static>

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.

Parameters:
Name Type Argument 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:
Object 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.getEigenDecomposition(a, result);

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

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

<static>

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

Parameters:
Name Type Description
row Number The zero-based index of the row.
column Number The zero-based index of the column.
Throws:
Returns:
Number The index of the element at the provided row and column.
Example
var myMatrix = new Cesium.Matrix3();
var column1Row0Index = Cesium.Matrix3.getElementIndex(1, 0);
var column1Row0 = myMatrix[column1Row0Index]
myMatrix[column1Row0Index] = 10.0;

<static>

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

Parameters:
Name Type Description
matrix Matrix3 The matrix.
Returns:
Number The maximum scale.

<static>

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

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix to use.
index Number The zero-based index of the row to retrieve.
result Cartesian3 <optional>
The object onto which to store the result.
Throws:
DeveloperError : index must be 0, 1, or 2.
Returns:
Cartesian3 The modified result parameter or a new Cartesian3 instance if one was not provided.
See:

<static>

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

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix.
result Cartesian3 <optional>
The object onto which to store the result.
Returns:
Cartesian3 The modified result parameter or a new Cartesian3 instance if one was not provided.

<static>

Computes the inverse of the provided matrix.

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix to invert.
result Matrix3 <optional>
The object onto which to store the result.
Throws:
DeveloperError : matrix is not invertible.
Returns:
Matrix3 The modified result parameter or a new Matrix3 instance if one was not provided.

<static>

Computes the product of two matrices.

Parameters:
Name Type Argument Description
left Matrix3 The first matrix.
right Matrix3 The second matrix.
result Matrix3 <optional>
The object onto which to store the result.
Returns:
Matrix3 The modified result parameter or a new Matrix3 instance if one was not provided.

<static>

Computes the product of a matrix and a scalar.

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix.
scalar Number The number to multiply by.
result Matrix3 <optional>
The object onto which to store the result.
Returns:
Matrix3 The modified result parameter or a new Cartesian3 instance if one was not provided.

<static>

Computes the product of a matrix and a column vector.

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix.
cartesian Cartesian3 The column.
result Cartesian3 <optional>
The object onto which to store the result.
Returns:
Cartesian3 The modified result parameter or a new Cartesian3 instance if one was not provided.

<static>

Creates a negated copy of the provided matrix.

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix to negate.
result Matrix3 <optional>
The object onto which to store the result.
Returns:
Matrix3 The modified result parameter or a new Matrix3 instance if one was not provided.

<static>

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

Parameters:
Name Type Argument 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 Cartesian3 <optional>
The object onto which to store the result.
Throws:
DeveloperError : index must be 0, 1, or 2.
Returns:
Matrix3 The modified result parameter or a new Matrix3 instance if one was not provided.
See:

<static>

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

Parameters:
Name Type Argument 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 Cartesian3 <optional>
The object onto which to store the result.
Throws:
DeveloperError : index must be 0, 1, or 2.
Returns:
Matrix3 The modified result parameter or a new Matrix3 instance if one was not provided.
See:

<static>

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

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix to use..
result Array <optional>
The Array onto which to store the result.
Returns:
Array The modified Array parameter or a new Array instance if one was not provided.

<static>

Computes the transpose of the provided matrix.

Parameters:
Name Type Argument Description
matrix Matrix3 The matrix to transpose.
result Matrix3 <optional>
The object onto which to store the result.
Returns:
Matrix3 The modified result parameter or a new Matrix3 instance if one was not provided.