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行的值。
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:
将此矩阵与提供的矩阵组件进行比较,如果相等,则返回
true,否则返回false。
Parameters:
将此矩阵与提供的矩阵组件进行比较,如果它们在提供的epsilon中,则返回
true,否则返回false。
Parameters:
epsilon
(Number)
用于相等性测试的epsilon。
创建一个表示此矩阵的字符串,其中每一行位于单独的行上,格式为“(第0列,第1列,第2列)”。
计算包含所提供矩阵元素的绝对(无符号)值的矩阵。
Parameters:
计算两个矩阵的和。
Parameters:
复制Matrix3实例。
Parameters:
计算对称矩阵的特征向量和特征值。
返回一个对角矩阵和一元矩阵,这样:matrix = unitary matrix * diagonal matrix * transpose(unitary matrix)
沿对角矩阵的值是特征值。单位矩阵的列是相应的特征向量。
Parameters:
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)
计算所提供矩阵的行列式。
Parameters:
比较提供的矩阵组件,如果它们相等,则返回
true,否则返回false。
Parameters:
比较提供的矩阵组件,如果它们在提供的epsilon中,则返回
true,否则返回false。
Parameters:
从数组中的9个连续元素创建矩阵3。
Parameters:
array
(Array.<Number>)
其9个连续元素对应于矩阵位置的数组。假定列主顺序。
startingIndex
(Number)
(default 0)
第一个元素数组中的偏移量,它对应于矩阵中第一列第一行的位置。
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);
从列主顺序数组创建Matrix3实例。
Parameters:
values
(Array.<Number>)
列主顺序数组。
计算表示cartesian3向量的叉积等价矩阵的matrix3实例。
Parameters:
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));
从所提供的头部俯仰滚轴计算3x3旋转矩阵。(参见http://en.wikipedia.org/wiki/conversion_quaternions_和_euler_angles之间的转换)
Parameters:
从提供的四元数计算3x3旋转矩阵。
Parameters:
围绕X轴创建旋转矩阵。
Parameters:
angle
(Number)
以弧度表示的旋转角度。正角度是逆时针的。
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());
围绕Y轴创建旋转矩阵。
Parameters:
angle
(Number)
以弧度表示的旋转角度。正角度是逆时针的。
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());
围绕Z轴创建旋转矩阵。
Parameters:
angle
(Number)
以弧度表示的旋转角度。正角度是逆时针的。
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());
从行主顺序数组创建Matrix3实例。生成的矩阵将按主列顺序排列。
Parameters:
values
(Array.<Number>)
行主顺序数组。
计算表示非均匀比例的Matrix3实例。
Parameters:
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));
计算表示统一比例的Matrix3实例。
Parameters:
scale
(Number)
均匀比例因子。
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);
以cartesian3实例的形式检索所提供索引处的矩阵列的副本。
Parameters:
Throws
-
DeveloperError : 索引必须是0、1或2。
在提供的行和列处计算元素的数组索引。
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
-
DeveloperError : 行必须是0、1或2。
-
DeveloperError : 列必须是0、1或2。
假设矩阵是仿射变换,则计算最大比例。最大比例是列向量的最大长度。
Parameters:
提取假设矩阵是仿射变换的旋转。
Parameters:
以cartesian3实例的形式检索所提供索引处的矩阵行的副本。
Parameters:
Throws
-
DeveloperError : 索引必须是0、1或2。
假设矩阵是仿射变换,则提取不均匀尺度。
Parameters:
计算所提供矩阵的倒数。
Parameters:
Throws
-
DeveloperError : 矩阵不可逆。
计算两个矩阵的乘积。
Parameters:
计算矩阵和标量的乘积。
Parameters:
计算矩阵乘以(非均匀)比例的乘积,就像比例是比例矩阵一样。
Parameters:
Example
// Instead of bmgl.Matrix3.multiply(m, bmgl.Matrix3.fromScale(scale), m);
bmgl.Matrix3.multiplyByScale(m, scale, m);
- Matrix3.fromScale
- Matrix3.multiplyByUniformScale
See:
计算矩阵和列向量的乘积。
Parameters:
创建所提供矩阵的否定副本。
Parameters:
将提供的实例存储到提供的数组中。
Parameters:
array
(Array.<Number>)
要打包的数组。
startingIndex
(Number)
(default 0)
数组中开始打包元素的索引。
计算用提供的cartesian3实例替换所提供矩阵中指定列的新矩阵。
Parameters:
index
(Number)
要设置的列的从零开始的索引。
Throws
-
DeveloperError : 索引必须是0、1或2。
计算用提供的cartesian3实例替换所提供矩阵中指定行的新矩阵。
Parameters:
index
(Number)
要设置的行的从零开始的索引。
Throws
-
DeveloperError : 索引必须是0、1或2。
计算两个矩阵的差。
Parameters:
从提供的Matrix3实例创建数组。数组将按列主顺序排列。
Parameters:
result
(Array.<Number>)
存储结果的数组。
计算所提供矩阵的转置。
Parameters:
从压缩数组中检索实例。
Parameters:
array
(Array.<Number>)
压缩数组。
startingIndex
(Number)
(default 0)
要解包的元素的起始索引。