Matrix3

3x3矩阵,可作为列主顺序数组进行索引。对于代码可读性,构造函数参数按行主顺序排列。
new Matrix3(column0Row0, column1Row0, column2Row0, column0Row1, column1Row1, column2Row1, column0Row2, column1Row2, column2Row2)
Parameters:
column0Row0 (Number) (default 0.0) 第0列第0行的值。
column1Row0 (Number) (default 0.0) 第1列第0行的值。
column2Row0 (Number) (default 0.0) 第2列第0行的值。
column0Row1 (Number) (default 0.0) 第0列第1行的值。
column1Row1 (Number) (default 0.0) 第1列第1行的值。
column2Row1 (Number) (default 0.0) 第2列第1行的值。
column0Row2 (Number) (default 0.0) 第0列第2行的值。
column1Row2 (Number) (default 0.0) 第1列第2行的值。
column2Row2 (Number) (default 0.0) 第2列第2行的值。
See:

Members

length : Number

获取集合中的项数。

(static, constant) COLUMN0ROW0 : Number

第0列第0行的Matrix3索引。

(static, constant) COLUMN0ROW1 : Number

第1行第0列的Matrix3索引。

(static, constant) COLUMN0ROW2 : Number

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

(static, constant) COLUMN1ROW0 : Number

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

(static, constant) COLUMN1ROW1 : Number

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

(static, constant) COLUMN1ROW2 : Number

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

(static, constant) COLUMN2ROW0 : Number

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

(static, constant) COLUMN2ROW1 : Number

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

(static, constant) COLUMN2ROW2 : Number

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

(static, constant) IDENTITY : Matrix3

初始化为标识矩阵的不可变矩阵3实例。

(static) packedLength : Number

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

(static, constant) ZERO : Matrix3

初始化为零矩阵的不可变矩阵3实例。

Methods

clone(result) → {Matrix3}
复制提供的Matrix3实例。
Parameters:
result (Matrix3) 存储结果的对象。
equals(right) → {Boolean}
将此矩阵与提供的矩阵组件进行比较,如果相等,则返回true,否则返回false
Parameters:
right (Matrix3) 右侧矩阵。
equalsEpsilon(right, epsilon) → {Boolean}
将此矩阵与提供的矩阵组件进行比较,如果它们在提供的epsilon中,则返回true,否则返回false
Parameters:
right (Matrix3) 右侧矩阵。
epsilon (Number) 用于相等性测试的epsilon。
toString() → {String}
创建一个表示此矩阵的字符串,其中每一行位于单独的行上,格式为“(第0列,第1列,第2列)”。
(static) abs(matrix, result) → {Matrix3}
计算包含所提供矩阵元素的绝对(无符号)值的矩阵。
Parameters:
matrix (Matrix3) 带符号元素的矩阵。
result (Matrix3) 存储结果的对象。
(static) add(left, right, result) → {Matrix3}
计算两个矩阵的和。
Parameters:
left (Matrix3) 第一个矩阵。
right (Matrix3) 第二个矩阵。
result (Matrix3) 存储结果的对象。
(static) clone(matrix, result) → {Matrix3}
复制Matrix3实例。
Parameters:
matrix (Matrix3) 要复制的矩阵。
result (Matrix3) 存储结果的对象。
(static) computeEigenDecomposition(matrix, result) → {Object}
计算对称矩阵的特征向量和特征值。

返回一个对角矩阵和一元矩阵,这样:matrix = unitary matrix * diagonal matrix * transpose(unitary matrix)

沿对角矩阵的值是特征值。单位矩阵的列是相应的特征向量。

Parameters:
matrix (Matrix3) 矩阵分解成对角矩阵和幺正矩阵。应为对称。
result (Object) 一种具有单位和对角属性的对象,这些属性是用来存储结果的矩阵。
Example
var a = //... symetric matrix
var result = {
    unitary : new bmgl.Matrix3(),
    diagonal : new bmgl.Matrix3()
};
bmgl.Matrix3.computeEigenDecomposition(a, result);

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

var lambda = bmgl.Matrix3.getColumn(result.diagonal, 0, new bmgl.Cartesian3()).x;  // first eigenvalue
var v = bmgl.Matrix3.getColumn(result.unitary, 0, new bmgl.Cartesian3());          // first eigenvector
var c = bmgl.Cartesian3.multiplyByScalar(v, lambda, new bmgl.Cartesian3());        // equal to bmgl.Matrix3.multiplyByVector(a, v)
(static) determinant(matrix) → {Number}
计算所提供矩阵的行列式。
Parameters:
matrix (Matrix3) 要使用的矩阵。
(static) equals(left, right) → {Boolean}
比较提供的矩阵组件,如果它们相等,则返回true,否则返回false
Parameters:
left (Matrix3) 第一个矩阵。
right (Matrix3) 第二个矩阵。
(static) equalsEpsilon(left, right, epsilon) → {Boolean}
比较提供的矩阵组件,如果它们在提供的epsilon中,则返回true,否则返回false
Parameters:
left (Matrix3) 第一个矩阵。
right (Matrix3) 第二个矩阵。
epsilon (Number) 用于相等性测试的epsilon。
(static) fromArray(array, startingIndex, result) → {Matrix3}
从数组中的9个连续元素创建矩阵3。
Parameters:
array (Array.<Number>) 其9个连续元素对应于矩阵位置的数组。假定列主顺序。
startingIndex (Number) (default 0) 第一个元素数组中的偏移量,它对应于矩阵中第一列第一行的位置。
result (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 = bmgl.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 = bmgl.Matrix3.fromArray(v2, 2);
(static) fromColumnMajorArray(values, result) → {Matrix3}
从列主顺序数组创建Matrix3实例。
Parameters:
values (Array.<Number>) 列主顺序数组。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
(static) fromCrossProduct(vector, result) → {Matrix3}
计算表示cartesian3向量的叉积等价矩阵的matrix3实例。
Parameters:
vector (Cartesian3) 交叉积运算左侧的向量。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
Example
// Creates
//   [0.0, -9.0,  8.0]
//   [9.0,  0.0, -7.0]
//   [-8.0, 7.0,  0.0]
var m = bmgl.Matrix3.fromCrossProduct(new bmgl.Cartesian3(7.0, 8.0, 9.0));
(static) fromHeadingPitchRoll(headingPitchRoll, result) → {Matrix3}
从所提供的头部俯仰滚轴计算3x3旋转矩阵。(参见http://en.wikipedia.org/wiki/conversion_quaternions_和_euler_angles之间的转换)
Parameters:
headingPitchRoll (HeadingPitchRoll) 要使用的标题栏。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
(static) fromQuaternion(quaternion, result) → {Matrix3}
从提供的四元数计算3x3旋转矩阵。
Parameters:
quaternion (Quaternion) 要使用的四元数。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
(static) fromRotationX(angle, result) → {Matrix3}
围绕X轴创建旋转矩阵。
Parameters:
angle (Number) 以弧度表示的旋转角度。正角度是逆时针的。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
Example
// Rotate a point 45 degrees counterclockwise around the x-axis.
var p = new bmgl.Cartesian3(5, 6, 7);
var m = bmgl.Matrix3.fromRotationX(bmgl.Math.toRadians(45.0));
var rotated = bmgl.Matrix3.multiplyByVector(m, p, new bmgl.Cartesian3());
(static) fromRotationY(angle, result) → {Matrix3}
围绕Y轴创建旋转矩阵。
Parameters:
angle (Number) 以弧度表示的旋转角度。正角度是逆时针的。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
Example
// Rotate a point 45 degrees counterclockwise around the y-axis.
var p = new bmgl.Cartesian3(5, 6, 7);
var m = bmgl.Matrix3.fromRotationY(bmgl.Math.toRadians(45.0));
var rotated = bmgl.Matrix3.multiplyByVector(m, p, new bmgl.Cartesian3());
(static) fromRotationZ(angle, result) → {Matrix3}
围绕Z轴创建旋转矩阵。
Parameters:
angle (Number) 以弧度表示的旋转角度。正角度是逆时针的。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
Example
// Rotate a point 45 degrees counterclockwise around the z-axis.
var p = new bmgl.Cartesian3(5, 6, 7);
var m = bmgl.Matrix3.fromRotationZ(bmgl.Math.toRadians(45.0));
var rotated = bmgl.Matrix3.multiplyByVector(m, p, new bmgl.Cartesian3());
(static) fromRowMajorArray(values, result) → {Matrix3}
从行主顺序数组创建Matrix3实例。生成的矩阵将按主列顺序排列。
Parameters:
values (Array.<Number>) 行主顺序数组。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
(static) fromScale(scale, result) → {Matrix3}
计算表示非均匀比例的Matrix3实例。
Parameters:
scale (Cartesian3) X、Y和Z比例因子。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
Example
// Creates
//   [7.0, 0.0, 0.0]
//   [0.0, 8.0, 0.0]
//   [0.0, 0.0, 9.0]
var m = bmgl.Matrix3.fromScale(new bmgl.Cartesian3(7.0, 8.0, 9.0));
(static) fromUniformScale(scale, result) → {Matrix3}
计算表示统一比例的Matrix3实例。
Parameters:
scale (Number) 均匀比例因子。
result (Matrix3) 将在其中存储结果的对象,如果未定义,将创建新实例。
Example
// Creates
//   [2.0, 0.0, 0.0]
//   [0.0, 2.0, 0.0]
//   [0.0, 0.0, 2.0]
var m = bmgl.Matrix3.fromUniformScale(2.0);
(static) getColumn(matrix, index, result) → {Cartesian3}
以cartesian3实例的形式检索所提供索引处的矩阵列的副本。
Parameters:
matrix (Matrix3) 要使用的矩阵。
index (Number) 要检索的列的从零开始的索引。
result (Cartesian3) 存储结果的对象。
Throws
(static) getElementIndex(row, column) → {Number}
在提供的行和列处计算元素的数组索引。
Parameters:
row (Number) 行的从零开始的索引。
column (Number) 列的从零开始的索引。
Example
var myMatrix = new bmgl.Matrix3();
var column1Row0Index = bmgl.Matrix3.getElementIndex(1, 0);
var column1Row0 = myMatrix[column1Row0Index]
myMatrix[column1Row0Index] = 10.0;
Throws
(static) getMaximumScale(matrix) → {Number}
假设矩阵是仿射变换,则计算最大比例。最大比例是列向量的最大长度。
Parameters:
matrix (Matrix3) 矩阵。
(static) getRotation(matrix, result) → {Matrix3}
提取假设矩阵是仿射变换的旋转。
Parameters:
matrix (Matrix3) 矩阵。
result (Matrix3) 存储结果的对象。
(static) getRow(matrix, index, result) → {Cartesian3}
以cartesian3实例的形式检索所提供索引处的矩阵行的副本。
Parameters:
matrix (Matrix3) 要使用的矩阵。
index (Number) 要检索的行的从零开始的索引。
result (Cartesian3) 存储结果的对象。
Throws
(static) getScale(matrix, result) → {Cartesian3}
假设矩阵是仿射变换,则提取不均匀尺度。
Parameters:
matrix (Matrix3) 矩阵。
result (Cartesian3) 存储结果的对象。
(static) inverse(matrix, result) → {Matrix3}
计算所提供矩阵的倒数。
Parameters:
matrix (Matrix3) 要反转的矩阵。
result (Matrix3) 存储结果的对象。
Throws
(static) multiply(left, right, result) → {Matrix3}
计算两个矩阵的乘积。
Parameters:
left (Matrix3) 第一个矩阵。
right (Matrix3) 第二个矩阵。
result (Matrix3) 存储结果的对象。
(static) multiplyByScalar(matrix, scalar, result) → {Matrix3}
计算矩阵和标量的乘积。
Parameters:
matrix (Matrix3) 矩阵。
scalar (Number) 要乘以的数字。
result (Matrix3) 存储结果的对象。
(static) multiplyByScale(matrix, scale, result) → {Matrix3}
计算矩阵乘以(非均匀)比例的乘积,就像比例是比例矩阵一样。
Parameters:
matrix (Matrix3) 左边的矩阵。
scale (Cartesian3) 右侧的不均匀刻度。
result (Matrix3) 存储结果的对象。
Example
// Instead of bmgl.Matrix3.multiply(m, bmgl.Matrix3.fromScale(scale), m);
bmgl.Matrix3.multiplyByScale(m, scale, m);
See:
(static) multiplyByVector(matrix, cartesian, result) → {Cartesian3}
计算矩阵和列向量的乘积。
Parameters:
matrix (Matrix3) 矩阵。
cartesian (Cartesian3) 列。
result (Cartesian3) 存储结果的对象。
(static) negate(matrix, result) → {Matrix3}
创建所提供矩阵的否定副本。
Parameters:
matrix (Matrix3) 要求反的矩阵。
result (Matrix3) 存储结果的对象。
(static) pack(value, array, startingIndex) → {Array.<Number>}
将提供的实例存储到提供的数组中。
Parameters:
value (Matrix3) 要打包的值。
array (Array.<Number>) 要打包的数组。
startingIndex (Number) (default 0) 数组中开始打包元素的索引。
(static) setColumn(matrix, index, cartesian, result) → {Matrix3}
计算用提供的cartesian3实例替换所提供矩阵中指定列的新矩阵。
Parameters:
matrix (Matrix3) 要使用的矩阵。
index (Number) 要设置的列的从零开始的索引。
cartesian (Cartesian3) 值将分配给指定列的笛卡尔。
result (Matrix3) 存储结果的对象。
Throws
(static) setRow(matrix, index, cartesian, result) → {Matrix3}
计算用提供的cartesian3实例替换所提供矩阵中指定行的新矩阵。
Parameters:
matrix (Matrix3) 要使用的矩阵。
index (Number) 要设置的行的从零开始的索引。
cartesian (Cartesian3) 值将分配给指定行的笛卡尔。
result (Matrix3) 存储结果的对象。
Throws
(static) subtract(left, right, result) → {Matrix3}
计算两个矩阵的差。
Parameters:
left (Matrix3) 第一个矩阵。
right (Matrix3) 第二个矩阵。
result (Matrix3) 存储结果的对象。
(static) toArray(matrix, result) → {Array.<Number>}
从提供的Matrix3实例创建数组。数组将按列主顺序排列。
Parameters:
matrix (Matrix3) 要使用的矩阵。
result (Array.<Number>) 存储结果的数组。
(static) transpose(matrix, result) → {Matrix3}
计算所提供矩阵的转置。
Parameters:
matrix (Matrix3) 要转置的矩阵。
result (Matrix3) 存储结果的对象。
(static) unpack(array, startingIndex, result) → {Matrix3}
从压缩数组中检索实例。
Parameters:
array (Array.<Number>) 压缩数组。
startingIndex (Number) (default 0) 要解包的元素的起始索引。
result (Matrix3) 存储结果的对象。