new LSGlobe.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行的值。 |
Members
获取集合中的项目数。
列0,行0到Matrix3的索引。
列0第1行进入Matrix3的索引。
列0第2行进入Matrix3的索引。
第1列第0行进入Matrix3的索引。
第1列第1行进入Matrix3的索引。
第1列第2行进入Matrix3的索引。
第2列第0行进入Matrix3的索引。
第2列第1行进入Matrix3的索引。
第2列第2行进入Matrix3的索引。
static constant LSGlobe.Matrix3.IDENTITY : Matrix3
一个不变的Matrix3实例,初始化为单位矩阵。
用于将对象打包到数组中的元素数。
static constant LSGlobe.Matrix3.ZERO : Matrix3
不变的Matrix3实例初始化为零矩阵。
Methods
clone ( result ) → Matrix3
复制提供的Matrix3实例。
Name | Type | Description |
---|---|---|
result
|
Matrix3 | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数;如果未提供,则为新的Matrix3实例。
将此矩阵与提供的矩阵进行逐项比较,然后返回如果相等,则为
true
,否则为
false
。
Name | Type | Description |
---|---|---|
right
|
Matrix3 | 可选 右侧矩阵。 |
Returns:
真正
如果相等,
假
除此以外。
将此矩阵与提供的矩阵进行逐项比较,然后返回
true
(如果它们在提供的epsilon内),否则为
false
。
Name | Type | Default | Description |
---|---|---|---|
right
|
Matrix3 | 可选 右侧矩阵。 | |
epsilon
|
Number |
0
|
可选 用于相等性测试的epsilon。 |
Returns:
真正
如果它们在提供的epsilon中,
假
除此以外。
创建一个表示此Matrix的字符串,每一行为在单独的行上,格式为'(column0,column1,column2)'。
Returns:
一个字符串,表示提供的Matrix,每行在单独的一行上,格式为'(column0,column1,column2)'。
static LSGlobe.Matrix3.abs (matrix, result) → Matrix3
计算一个矩阵,其中包含提供的矩阵元素的绝对(无符号)值。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 具有符号元素的矩阵。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix3.add (left, right, result) → Matrix3
计算两个矩阵的总和。
Name | Type | Description |
---|---|---|
left
|
Matrix3 | 第一个矩阵。 |
right
|
Matrix3 | 第二个矩阵。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix3.clone (matrix, result ) → Matrix3
复制一个Matrix3实例。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 要复制的矩阵。 |
result
|
Matrix3 | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数;如果未提供,则为新的Matrix3实例。 (如果矩阵未定义,则返回未定义)
计算对称矩阵的特征向量和特征值。
返回对角矩阵和unit矩阵,使得:
矩阵= ary矩阵*对角矩阵*转置(unit矩阵)
沿对角矩阵对角线的值是特征值。列unit矩阵的是对应的特征向量。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 分解为对角矩阵和unit矩阵的矩阵。应该是对称的。 |
result
|
Object | 可选 具有单一和对角线属性的对象,这些属性是将结果存储到其上的矩阵。 |
Returns:
具有unit和对角属性的对象,分别是are和对角矩阵。
Example:
var a = //... symetric matrix
var result = {
unitary : new LSGlobe.Matrix3(),
diagonal : new LSGlobe.Matrix3()
};
LSGlobe.Matrix3.computeEigenDecomposition(a, result);
var unitaryTranspose = LSGlobe.Matrix3.transpose(result.unitary, new LSGlobe.Matrix3());
var b = LSGlobe.Matrix3.multiply(result.unitary, result.diagonal, new LSGlobe.Matrix3());
LSGlobe.Matrix3.multiply(b, unitaryTranspose, b); // b is now equal to a
var lambda = LSGlobe.Matrix3.getColumn(result.diagonal, 0, new LSGlobe.Cartesian3()).x; // first eigenvalue
var v = LSGlobe.Matrix3.getColumn(result.unitary, 0, new LSGlobe.Cartesian3()); // first eigenvector
var c = LSGlobe.Cartesian3.multiplyByScalar(v, lambda, new LSGlobe.Cartesian3()); // equal to LSGlobe.Matrix3.multiplyByVector(a, v)
计算所提供矩阵的行列式。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 使用的矩阵。 |
Returns:
矩阵行列式的值。
按组件比较提供的矩阵并返回如果相等,则为
true
,否则为
false
。
Name | Type | Description |
---|---|---|
left
|
Matrix3 | 可选 第一个矩阵。 |
right
|
Matrix3 | 可选 第二个矩阵。 |
Returns:
真正
如果左右相等
假
除此以外。
按组件比较提供的矩阵并返回
true
(如果它们在提供的epsilon内),否则为
false
。
Name | Type | Default | Description |
---|---|---|---|
left
|
Matrix3 | 可选 第一个矩阵。 | |
right
|
Matrix3 | 可选 第二个矩阵。 | |
epsilon
|
Number |
0
|
可选 用于相等性测试的epsilon。 |
Returns:
真正
如果左右在提供的epsilon之内,
假
除此以外。
static LSGlobe.Matrix3.fromArray (array, startingIndex , result ) → Matrix3
从数组中的9个连续元素创建Matrix3。
Name | Type | Default | Description |
---|---|---|---|
array
|
Array.<Number> | 其9个连续元素对应于矩阵位置的数组。假定列为主要顺序。 | |
startingIndex
|
Number |
0
|
可选 第一个元素的数组中的偏移量,它对应于矩阵中第一列第一行的位置。 |
result
|
Matrix3 | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数;如果未提供,则为新的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 = LSGlobe.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 = LSGlobe.Matrix3.fromArray(v2, 2);
static LSGlobe.Matrix3.fromColumnMajorArray (values, result ) → Matrix3
从列优先顺序数组创建Matrix3实例。
Name | Type | Description |
---|---|---|
values
|
Array.<Number> | 列为主要顺序的数组。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix3实例。
static LSGlobe.Matrix3.fromCrossProduct (vector, result ) → Matrix3
计算表示Cartesian3向量的叉积等效矩阵的Matrix3实例。
Name | Type | Description |
---|---|---|
vector
|
Cartesian3 | 叉积运算左侧的向量。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix3实例。
Example:
// Creates
// [0.0, -9.0, 8.0]
// [9.0, 0.0, -7.0]
// [-8.0, 7.0, 0.0]
var m = LSGlobe.Matrix3.fromCrossProduct(new LSGlobe.Cartesian3(7.0, 8.0, 9.0));
static LSGlobe.Matrix3.fromHeadingPitchRoll (headingPitchRoll, result ) → Matrix3
根据提供的headingPitchRoll计算3x3旋转矩阵。 (请参阅http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles)
Name | Type | Description |
---|---|---|
headingPitchRoll
|
HeadingPitchRoll | 要使用的headingPitchRoll。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
此headingPitchRoll的3x3旋转矩阵。
static LSGlobe.Matrix3.fromQuaternion (quaternion, result ) → Matrix3
根据提供的四元数计算3x3旋转矩阵。
Name | Type | Description |
---|---|---|
quaternion
|
Quaternion | 使用的四元数。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
此四元数的3x3旋转矩阵。
static LSGlobe.Matrix3.fromRotationX (angle, result ) → Matrix3
创建围绕x轴的旋转矩阵。
Name | Type | Description |
---|---|---|
angle
|
Number | 旋转角度,以弧度为单位。正角是逆时针方向。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix3实例。
Example:
// Rotate a point 45 degrees counterclockwise around the x-axis.
var p = new LSGlobe.Cartesian3(5, 6, 7);
var m = LSGlobe.Matrix3.fromRotationX(LSGlobe.Math.toRadians(45.0));
var rotated = LSGlobe.Matrix3.multiplyByVector(m, p, new LSGlobe.Cartesian3());
static LSGlobe.Matrix3.fromRotationY (angle, result ) → Matrix3
创建围绕y轴的旋转矩阵。
Name | Type | Description |
---|---|---|
angle
|
Number | 旋转角度,以弧度为单位。正角是逆时针方向。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix3实例。
Example:
// Rotate a point 45 degrees counterclockwise around the y-axis.
var p = new LSGlobe.Cartesian3(5, 6, 7);
var m = LSGlobe.Matrix3.fromRotationY(LSGlobe.Math.toRadians(45.0));
var rotated = LSGlobe.Matrix3.multiplyByVector(m, p, new LSGlobe.Cartesian3());
static LSGlobe.Matrix3.fromRotationZ (angle, result ) → Matrix3
创建围绕z轴的旋转矩阵。
Name | Type | Description |
---|---|---|
angle
|
Number | 旋转角度,以弧度为单位。正角是逆时针方向。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix3实例。
Example:
// Rotate a point 45 degrees counterclockwise around the z-axis.
var p = new LSGlobe.Cartesian3(5, 6, 7);
var m = LSGlobe.Matrix3.fromRotationZ(LSGlobe.Math.toRadians(45.0));
var rotated = LSGlobe.Matrix3.multiplyByVector(m, p, new LSGlobe.Cartesian3());
static LSGlobe.Matrix3.fromRowMajorArray (values, result ) → Matrix3
从行优先顺序数组创建Matrix3实例。所得矩阵将按列优先顺序排列。
Name | Type | Description |
---|---|---|
values
|
Array.<Number> | 行优先顺序数组。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix3实例。
static LSGlobe.Matrix3.fromScale (scale, result ) → Matrix3
计算表示不均匀比例的Matrix3实例。
Name | Type | Description |
---|---|---|
scale
|
Cartesian3 | x,y和z比例因子。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix3实例。
Example:
// Creates
// [7.0, 0.0, 0.0]
// [0.0, 8.0, 0.0]
// [0.0, 0.0, 9.0]
var m = LSGlobe.Matrix3.fromScale(new LSGlobe.Cartesian3(7.0, 8.0, 9.0));
static LSGlobe.Matrix3.fromUniformScale (scale, result ) → Matrix3
计算表示统一比例尺的Matrix3实例。
Name | Type | Description |
---|---|---|
scale
|
Number | 统一比例因子。 |
result
|
Matrix3 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix3实例。
Example:
// Creates
// [2.0, 0.0, 0.0]
// [0.0, 2.0, 0.0]
// [0.0, 0.0, 2.0]
var m = LSGlobe.Matrix3.fromUniformScale(2.0);
static LSGlobe.Matrix3.getColumn (matrix, index, result) → Cartesian3
在提供的索引处作为Cartesian3实例检索矩阵列的副本。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 使用的矩阵。 |
index
|
Number | 要检索的列的从零开始的索引。 |
result
|
Cartesian3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :索引必须为0、1或2。
计算提供的行和列处元素的数组索引。
Name | Type | Description |
---|---|---|
row
|
Number | 该行从零开始的索引。 |
column
|
Number | 列的从零开始的索引。 |
Returns:
元素在提供的行和列处的索引。
Throws:
-
DeveloperError :行必须为0、1或2。
-
DeveloperError :列必须为0、1或2。
Example:
var myMatrix = new LSGlobe.Matrix3();
var column1Row0Index = LSGlobe.Matrix3.getElementIndex(1, 0);
var column1Row0 = myMatrix[column1Row0Index]
myMatrix[column1Row0Index] = 10.0;
假设矩阵是仿射变换,则计算最大比例。最大比例是列向量的最大长度。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 矩阵。 |
Returns:
最大规模。
static LSGlobe.Matrix3.getRotation (matrix, result) → Matrix3
假设矩阵是仿射变换,则提取旋转。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 矩阵。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数
static LSGlobe.Matrix3.getRow (matrix, index, result) → Cartesian3
在提供的索引处作为Cartesian3实例检索矩阵行的副本。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 使用的矩阵。 |
index
|
Number | 要检索的行的从零开始的索引。 |
result
|
Cartesian3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :索引必须为0、1或2。
static LSGlobe.Matrix3.getScale (matrix, result) → Cartesian3
假设矩阵是仿射变换,则提取非均匀比例。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 矩阵。 |
result
|
Cartesian3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix3.inverse (matrix, result) → Matrix3
计算所提供矩阵的逆。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 要求逆的矩阵。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :矩阵不可逆。
static LSGlobe.Matrix3.multiply (left, right, result) → Matrix3
计算两个矩阵的乘积。
Name | Type | Description |
---|---|---|
left
|
Matrix3 | 第一个矩阵。 |
right
|
Matrix3 | 第二个矩阵。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix3.multiplyByScalar (matrix, scalar, result) → Matrix3
计算矩阵与标量的乘积。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 矩阵。 |
scalar
|
Number | 要乘以的数字。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix3.multiplyByScale (matrix, scale, result) → Matrix3
计算矩阵乘以(非均匀)标度的乘积,就好像该标度是一个标度矩阵一样。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 左侧的矩阵。 |
scale
|
Cartesian3 | 比例尺在右侧。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
- Matrix3.fromScale
- Matrix3.multiplyByUniformScale
Example:
// Instead of LSGlobe.Matrix3.multiply(m, LSGlobe.Matrix3.fromScale(scale), m);
LSGlobe.Matrix3.multiplyByScale(m, scale, m);
See:
static LSGlobe.Matrix3.multiplyByVector (matrix, cartesian, result) → Cartesian3
计算矩阵与列向量的乘积。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 矩阵。 |
cartesian
|
Cartesian3 | 列。 |
result
|
Cartesian3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix3.negate (matrix, result) → Matrix3
创建所提供矩阵的求反副本。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 求反的矩阵。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
将提供的实例存储到提供的数组中。
Name | Type | Default | Description |
---|---|---|---|
value
|
Matrix3 | 要打包的值。 | |
array
|
Array.<Number> | 要打包的数组。 | |
startingIndex
|
Number |
0
|
可选 开始打包元素的数组索引。 |
Returns:
打包到的数组
static LSGlobe.Matrix3.setColumn (matrix, index, cartesian, result) → Matrix3
计算一个新矩阵,该矩阵用提供的Cartesian3实例替换提供的矩阵中的指定列。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 使用的矩阵。 |
index
|
Number | 要设置的列的从零开始的索引。 |
cartesian
|
Cartesian3 | 直角坐标系,其值将分配给指定的列。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :索引必须为0、1或2。
static LSGlobe.Matrix3.setRow (matrix, index, cartesian, result) → Matrix3
计算一个新矩阵,用提供的Cartesian3实例替换提供的矩阵中的指定行。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 使用的矩阵。 |
index
|
Number | 要设置的行的从零开始的索引。 |
cartesian
|
Cartesian3 | 直角坐标系,其值将分配给指定的行。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :索引必须为0、1或2。
static LSGlobe.Matrix3.subtract (left, right, result) → Matrix3
计算两个矩阵的差。
Name | Type | Description |
---|---|---|
left
|
Matrix3 | 第一个矩阵。 |
right
|
Matrix3 | 第二个矩阵。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
从提供的Matrix3实例创建一个数组。该数组将按列优先顺序排列。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 要使用的矩阵。 |
result
|
Array.<Number> | 可选 将结果存储到的数组。 |
Returns:
修改后的Array参数或新的Array实例(如果未提供)。
static LSGlobe.Matrix3.transpose (matrix, result) → Matrix3
计算提供的矩阵的转置。
Name | Type | Description |
---|---|---|
matrix
|
Matrix3 | 要转置的矩阵。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix3.unpack (array, startingIndex , result ) → Matrix3
从压缩数组中检索实例。
Name | Type | Default | Description |
---|---|---|---|
array
|
Array.<Number> | 压缩数组。 | |
startingIndex
|
Number |
0
|
可选 要解压缩的元素的起始索引。 |
result
|
Matrix3 | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数;如果未提供,则为新的Matrix3实例。