Class: Matrix3

Matrix3

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

一个 3x3 矩阵,可按列优先顺序数组进行索引。为便于代码阅读,构造函数参数以行优先顺序排列‌。

Name Type Default Description
column0Row0 Number 0.0 可选

第 0 列第 0 行的值。

column1Row0 Number 0.0 可选

第 1 列第 0 行的值。

column2Row0 Number 0.0 可选

第 2 列第 0 行的值。

column0Row1 Number 0.0 可选

第 0 列第 1 行的值。

column1Row1 Number 0.0 可选

第 1 列第 1 行的值。

column2Row1 Number 0.0 可选

第 2 列第 1 行的值。

column0Row2 Number 0.0 可选

第 0 列第 2 行的值。

column1Row2 Number 0.0 可选

第 1 列第 2 行的值。

column2Row2 Number 0.0 可选

第 2 列第 2 行的值。

See:

Members

lengthNumber

用于将对象打包到数组中的元素数

(static, constant) COLUMN0ROW0Number

Matrix3 中第 0 列第 0 行的索引。

(static, constant) COLUMN0ROW1Number

Matrix3 中第 0 列第 1 行的索引。

(static, constant) COLUMN0ROW2Number

Matrix3 中第 0 列第 2 行的索引。

(static, constant) COLUMN1ROW0Number

Matrix3 中第 1 列第 0 行的索引。

(static, constant) COLUMN1ROW1Number

Matrix3 中第 1 列第 1 行的索引。

(static, constant) COLUMN1ROW2Number

Matrix3 中第 1 列第 2 行的索引。

(static, constant) COLUMN2ROW0Number

Matrix3 中第 2 列第 0 行的索引。

(static, constant) COLUMN2ROW1Number

第 2 列第 1 行的 Matrix3 索引。

(static, constant) COLUMN2ROW2Number

第 2 列第 2 行的 Matrix3 索引。

(static, constant) IDENTITYMatrix3

初始化为单位矩阵的不可变 Matrix3 实例。

static packedLengthNumber

用于将对象打包到数组中的元素数。

(static, constant) ZEROMatrix3

一个不可变的 Matrix3 实例,初始化为零矩阵。

Methods

clone(result){Matrix3}

复制提供的 Matrix3 实例。

Name Type Description
result Matrix3 可选

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数或新的 Matrix3 实例(如果未提供)。

equals(right){Boolean}

将此矩阵与提供的矩阵进行比较,如果它们相等则返回 true ,否则返回 false 。

Name Type Description
right Matrix3 可选

右手矩阵。

Returns:
Type Description
Boolean 如果它们相等,则为 true ,否则为 false 。

equalsEpsilon(right, epsilon){Boolean}

将此矩阵与提供的矩阵按分量进行比较,如果它们在提供的 epsilon 内,则返回 true ,否则返回 false 。

Name Type Description
right Matrix3 可选

右手矩阵。

epsilon Number

用于相等性测试的 epsilon。

Returns:
Type Description
Boolean 如果它们在提供的 epsilon 内,则为 true ,否则为 false 。

toString(){String}

创建一个表示此矩阵的字符串,每行位于单独的行上,格式为'(column0,column1,column2)'。

Returns:
Type Description
String 表示提供的矩阵的字符串,每行位于单独的行上,格式为'(column0,column1,column2)'。

static abs(matrix, result){Matrix3}

计算一个矩阵,其中包含所提供矩阵元素的绝对(无符号)值。

Name Type Description
matrix Matrix3

带有符号元素的矩阵。

result Matrix3

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数。

static add(left, right, result){Matrix3}

计算两个矩阵的和。

Name Type Description
left Matrix3

第一个矩阵。

right Matrix3

第二个矩阵。

result Matrix3

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数。

static clone(matrix, result){Matrix3}

复制 Matrix3 实例。

Name Type Description
matrix Matrix3

要复制的矩阵。

result Matrix3 可选

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数或新的 Matrix3 实例(如果未提供)。 (如果矩阵未定义,则返回未定义)

static computeEigenDecomposition(matrix, result){Object}

计算对称矩阵的特征向量和特征值。

返回一个对角矩阵和酉矩阵,例如: matrix = unitary matrix * diagonal matrix * transpose(unitary matrix)

沿对角矩阵的对角线的值是特征值。酉矩阵的列是对应的特征向量。

Name Type Description
matrix Matrix3

要分解成对角矩阵和单元矩阵的矩阵。预计为对称矩阵。

result Object 可选

一个具有单元和对角属性的对象,是用来存储结果的矩阵。

Returns:
Type Description
Object 具有单元和对角属性的对象,分别是单元矩阵和对角矩阵。
Example
var a = //... symetric matrix
var result = {
    unitary : new SuperMap3D.Matrix3(),
    diagonal : new SuperMap3D.Matrix3()
};
SuperMap3D.Matrix3.computeEigenDecomposition(a, result);

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

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

static determinant(matrix){Number}

计算提供的矩阵的行列式。

Name Type Description
matrix Matrix3

要使用的矩阵。

Returns:
Type Description
Number 矩阵行列式的值。

static equals(left, right){Boolean}

逐个比较提供的矩阵,如果它们相等则返回 true ,否则返回 false 。

Name Type Description
left Matrix3 可选

第一个矩阵。

right Matrix3 可选

第二个矩阵。

Returns:
Type Description
Boolean 如果相等,则为 true ,否则为 false 。

static equalsEpsilon(left, right, epsilon){Boolean}

逐个比较提供的矩阵,如果它们在提供的 epsilon 内,则返回 true ,否则返回 false 。

Name Type Description
left Matrix3 可选

第一个矩阵。

right Matrix3 可选

第二个矩阵。

epsilon Number

用于相等性测试的 epsilon。

Returns:
Type Description
Boolean 如果它们在提供的 epsilon 内,则为 true,否则为 false 。

static fromArray(array, startingIndex, result){Matrix3}

从数组中的 9 个连续元素创建一个 Matrix3。

Name Type Default Description
array Array.<Number>

其 9 个连续元素对应于矩阵的位置的数组。假定列优先顺序。

startingIndex Number 0 可选

第一个元素在数组中的偏移量,对应于矩阵中第一列第一行的位置。

result Matrix3 可选

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数或新的 Matrix3 实例(如果未提供)。
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 = SuperMap3D.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 = SuperMap3D.Matrix3.fromArray(v2, 2);

static fromColumnMajorArray(values, result){Matrix3}

从列主顺序数组创建一个 Matrix3 实例。

Name Type Description
values Array.<Number>

列主要顺序数组。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 修改后的结果参数,如果未提供,则为新的 Matrix3 实例。

static fromCrossProduct(vector, result){Matrix3}

计算一个表示 Cartesian3 向量的叉积等效矩阵的 Matrix3 实例。

Name Type Description
vector Cartesian3

叉积运算左侧的向量。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 修改后的结果参数,如果未提供,则为新的 Matrix3 实例。
Example
// Creates
//   [0.0, -9.0,  8.0]
//   [9.0,  0.0, -7.0]
//   [-8.0, 7.0,  0.0]
var m = SuperMap3D.Matrix3.fromCrossProduct(new SuperMap3D.Cartesian3(7.0, 8.0, 9.0));

static fromHeadingPitchRoll(headingPitchRoll, result){Matrix3}

从提供的 headingPitchRoll 计算 3x3 旋转矩阵。(参见 http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles )

Name Type Description
headingPitchRoll HeadingPitchRoll

要使用的方位俯仰旋转。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 该方位俯仰旋转的 3x3 旋转矩阵。

static fromQuaternion(quaternion, result){Matrix3}

根据提供的四元数计算 3x3 旋转矩阵。

Name Type Description
quaternion Quaternion

要使用的四元数。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 这个四元数的 3x3 旋转矩阵。

static fromRotationX(angle, result){Matrix3}

创建一个围绕 x 轴的旋转矩阵。

Name Type Description
angle Number

旋转的角度,以弧度为单位。正角是逆时针的。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 修改后的结果参数,如果未提供,则为新的 Matrix3 实例。
Example
// Rotate a point 45 degrees counterclockwise around the x-axis.
var p = new SuperMap3D.Cartesian3(5, 6, 7);
var m = SuperMap3D.Matrix3.fromRotationX(SuperMap3D.Math.toRadians(45.0));
var rotated = SuperMap3D.Matrix3.multiplyByVector(m, p, new SuperMap3D.Cartesian3());

static fromRotationY(angle, result){Matrix3}

创建一个围绕 y 轴的旋转矩阵。

Name Type Description
angle Number

旋转的角度,以弧度为单位。正角是逆时针的。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 修改后的结果参数,如果未提供,则为新的 Matrix3 实例。
Example
// Rotate a point 45 degrees counterclockwise around the y-axis.
var p = new SuperMap3D.Cartesian3(5, 6, 7);
var m = SuperMap3D.Matrix3.fromRotationY(SuperMap3D.Math.toRadians(45.0));
var rotated = SuperMap3D.Matrix3.multiplyByVector(m, p, new SuperMap3D.Cartesian3());

static fromRotationZ(angle, result){Matrix3}

围绕 z 轴创建一个旋转矩阵。

Name Type Description
angle Number

旋转的角度,以弧度为单位。正角是逆时针的。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 修改后的结果参数,如果未提供,则为新的 Matrix3 实例。
Example
// Rotate a point 45 degrees counterclockwise around the z-axis.
var p = new SuperMap3D.Cartesian3(5, 6, 7);
var m = SuperMap3D.Matrix3.fromRotationZ(SuperMap3D.Math.toRadians(45.0));
var rotated = SuperMap3D.Matrix3.multiplyByVector(m, p, new SuperMap3D.Cartesian3());

static fromRowMajorArray(values, result){Matrix3}

从行主要顺序数组创建一个 Matrix3 实例。生成的矩阵将按列优先顺序排列。

Name Type Description
values Array.<Number>

行主要顺序数组。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 修改后的结果参数,如果未提供,则为新的 Matrix3 实例。

static fromScale(scale, result){Matrix3}

计算一个表示非均匀比例的 Matrix3 实例。

Name Type Description
scale Cartesian3

x、y 和 z 比例因子。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 修改后的结果参数,如果未提供,则为新的 Matrix3 实例。
Example
// Creates
//   [7.0, 0.0, 0.0]
//   [0.0, 8.0, 0.0]
//   [0.0, 0.0, 9.0]
var m = SuperMap3D.Matrix3.fromScale(new SuperMap3D.Cartesian3(7.0, 8.0, 9.0));

static fromUniformScale(scale, result){Matrix3}

计算一个表示统一比例的 Matrix3 实例。

Name Type Description
scale Number

统一比例因子。

result Matrix3 可选

存储结果的对象,如果未定义,将创建一个新实例。

Returns:
Type Description
Matrix3 修改后的结果参数,如果未提供,则为新的 Matrix3 实例。
Example
// Creates
//   [2.0, 0.0, 0.0]
//   [0.0, 2.0, 0.0]
//   [0.0, 0.0, 2.0]
var m = SuperMap3D.Matrix3.fromUniformScale(2.0);

static getColumn(matrix, index, result){Cartesian3}

以 Cartesian3 实例的形式读取所提供索引处矩阵列的副本。

Name Type Description
matrix Matrix3

使用的矩阵。

index Number

要检索的列的零基索引。

result Cartesian3

存储结果的对象。

Throws:

索引必须为 0、1 或 2。

Type
DeveloperError
Returns:
Type Description
Cartesian3 修改后的结果参数。

static getElementIndex(row, column){Number}

计算提供的行和列的元素的数组索引。

Name Type Description
row Number

该行的零基索引。

column Number

列的零基索引。

Throws:
  • 行必须为 0、1 或 2。

    Type
    DeveloperError
  • 列必须为 0、1 或 2。

    Type
    DeveloperError
Returns:
Type Description
Number 所提供行和列上元素的索引。
Example
var myMatrix = new SuperMap3D.Matrix3();
var column1Row0Index = SuperMap3D.Matrix3.getElementIndex(1, 0);
var column1Row0 = myMatrix[column1Row0Index]
myMatrix[column1Row0Index] = 10.0;

static getMaximumScale(matrix){Number}

假设矩阵是仿射变换,计算最大比例。最大比例是列向量的最大长度。

Name Type Description
matrix Matrix3

矩阵。

Returns:
Type Description
Number 最大比例。

static getRow(matrix, index, result){Cartesian3}

以 Cartesian3 实例的形式读取所提供索引处矩阵行的副本。

Name Type Description
matrix Matrix3

使用的矩阵。

index Number

要检索的记录的零基索引。

result Cartesian3

存储结果的对象。

Throws:

索引必须为 0、1 或 2。

Type
DeveloperError
Returns:
Type Description
Cartesian3 修改后的结果参数。

static getScale(matrix, result){Cartesian3}

假设矩阵是仿射变换,提取非均匀比例。

Name Type Description
matrix Matrix3

矩阵。

result Cartesian3

存储结果的对象。

Returns:
Type Description
Cartesian3 修改后的结果参数。

static inverse(matrix, result){Matrix3}

计算提供的矩阵的逆矩阵。

Name Type Description
matrix Matrix3

要反转的矩阵。

result Matrix3

存储结果的对象。

Throws:

矩阵不可逆。

Type
DeveloperError
Returns:
Type Description
Matrix3 修改后的结果参数。

static multiply(left, right, result){Matrix3}

计算两个矩阵的乘积。

Name Type Description
left Matrix3

第一个矩阵。

right Matrix3

第二个矩阵。

result Matrix3

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数。

static multiplyByScalar(matrix, scalar, result){Matrix3}

计算矩阵和标量的乘积。

Name Type Description
matrix Matrix3

矩阵。

scalar Number

要乘以的数值。

result Matrix3

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数。

static multiplyByScale(matrix, scale, result){Matrix3}

计算矩阵乘以(非均匀)比例的乘积。

Name Type Description
matrix Matrix3

左手矩阵。

scale Cartesian3

右手非均匀比例。

result Matrix3

存储结果的对象。

See:
Returns:
Type Description
Matrix3 修改后的结果参数。
Example
// Instead of SuperMap3D.Matrix3.multiply(m, SuperMap3D.Matrix3.fromScale(scale), m);
SuperMap3D.Matrix3.multiplyByScale(m, scale, m);

static multiplyByVector(matrix, cartesian, result){Cartesian3}

计算矩阵和列向量的乘积。

Name Type Description
matrix Matrix3

矩阵。

cartesian Cartesian3

专栏。

result Cartesian3

存储结果的对象。

Returns:
Type Description
Cartesian3 修改后的结果参数。

static negate(matrix, result){Matrix3}

创建所提供矩阵的否定副本。

Name Type Description
matrix Matrix3

要否定的矩阵。

result Matrix3

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数。

static pack(value, array, startingIndex){Array.<Number>}

将提供的实例存储到提供的数组中。

Name Type Default Description
value Matrix3

要打包的值。

array Array.<Number>

要打包的数组。

startingIndex Number 0 可选

开始打包元素的数组索引。

Returns:
Type Description
Array.<Number> 装入的数组。

static setColumn(matrix, index, cartesian, result){Matrix3}

计算一个新矩阵,用所提供的 Cartesian3 实例替换所提供矩阵中的指定列。

Name Type Description
matrix Matrix3

使用的矩阵。

index Number

要设置的列的零基索引。

cartesian Cartesian3

Cartesian其值将分配给指定列。

result Matrix3

存储结果的对象。

Throws:

索引必须为 0、1 或 2。

Type
DeveloperError
Returns:
Type Description
Matrix3 修改后的结果参数。

static 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

使用的矩阵。

index Number

要设置的行的零基索引。

cartesian Cartesian3

The Cartesian whose values will be assigned to the specified row.

result Matrix3

存储结果的对象。

Throws:

索引必须为 0、1 或 2。

Type
DeveloperError
Returns:
Type Description
Matrix3 修改后的结果参数。

static subtract(left, right, result){Matrix3}

计算两个矩阵的差。

Name Type Description
left Matrix3

第一个矩阵。

right Matrix3

第二个矩阵。

result Matrix3

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数。

static toArray(matrix, result){Array.<Number>}

从提供的 Matrix3 实例创建一个 Array。该数组将按列优先顺序排列。

Name Type Description
matrix Matrix3

要使用的矩阵。

result Array.<Number> 可选

存储结果的数组。

Returns:
Type Description
Array.<Number> 修改后的 Array 参数或新的 Array 实例(如果未提供)。

static transpose(matrix, result){Matrix3}

计算提供的矩阵的转置。

Name Type Description
matrix Matrix3

要转置的矩阵。

result Matrix3

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数。

static unpack(array, startingIndex, result){Matrix3}

从打包数组中检索实例。

Name Type Default Description
array Array.<Number>

打包的数组。

startingIndex Number 0 可选

要解包的元素的起始索引。

result Matrix3 可选

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数或新的 Matrix3 实例(如果未提供)。