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
)
要解包的元素的起始索引。