new LSGlobe.Matrix4 ( column0Row0 , column1Row0 , column2Row0 , column3Row0 , column0Row1 , column1Row1 , column2Row1 , column3Row1 , column0Row2 , column1Row2 , column2Row2 , column3Row2 , column0Row3 , column1Row3 , column2Row3 , column3Row3 )
一个4x4矩阵,可索引为列主序数组。构造函数参数按行顺序排列,以提高代码的可读性。
Name | Type | Default | Description |
---|---|---|---|
column0Row0
|
Number |
0.0
|
可选 列0,行0的值。 |
column1Row0
|
Number |
0.0
|
可选 第1列第0行的值。 |
column2Row0
|
Number |
0.0
|
可选 第2列第0行的值。 |
column3Row0
|
Number |
0.0
|
可选 第3列第0行的值。 |
column0Row1
|
Number |
0.0
|
可选 列0,第1行的值。 |
column1Row1
|
Number |
0.0
|
可选 第1列第1行的值。 |
column2Row1
|
Number |
0.0
|
可选 第2列第1行的值。 |
column3Row1
|
Number |
0.0
|
可选 第3列第1行的值。 |
column0Row2
|
Number |
0.0
|
可选 列0,第2行的值。 |
column1Row2
|
Number |
0.0
|
可选 第1列第2行的值。 |
column2Row2
|
Number |
0.0
|
可选 第2列第2行的值。 |
column3Row2
|
Number |
0.0
|
可选 第3列第2行的值。 |
column0Row3
|
Number |
0.0
|
可选 0列第3行的值。 |
column1Row3
|
Number |
0.0
|
可选 第1列第3行的值。 |
column2Row3
|
Number |
0.0
|
可选 第2列第3行的值。 |
column3Row3
|
Number |
0.0
|
可选 第3列第3行的值。 |
- Matrix4.fromColumnMajorArray
- Matrix4.fromRowMajorArray
- Matrix4.fromRotationTranslation
- Matrix4.fromTranslationRotationScale
- Matrix4.fromTranslationQuaternionRotationScale
- Matrix4.fromTranslation
- Matrix4.fromScale
- Matrix4.fromUniformScale
- Matrix4.fromCamera
- Matrix4.computePerspectiveFieldOfView
- Matrix4.computeOrthographicOffCenter
- Matrix4.computePerspectiveOffCenter
- Matrix4.computeInfinitePerspectiveOffCenter
- Matrix4.computeViewportTransformation
- Matrix4.computeView
- Matrix2
- Matrix3
- Packable
See:
Members
获取集合中的项目数。
列0,行0的Matrix4索引。
列0第1行进入Matrix4的索引。
列0第2行进入Matrix4的索引。
Matrix4的索引,列0,第3行。
第1列第0行进入Matrix4的索引。
第1列第1行进入Matrix4的索引。
第1列第2行进入Matrix4的索引。
第1列第3行进入Matrix4的索引。
第2列第0行进入Matrix4的索引。
第2列第1行进入Matrix4的索引。
第2列第2行进入Matrix4的索引。
第2列第3行进入Matrix4的索引。
第3列第0行进入Matrix4的索引。
第3列第1行进入Matrix4的索引。
第3列第2行进入Matrix4的索引。
第3列第3行进入Matrix4的索引。
static constant LSGlobe.Matrix4.IDENTITY : Matrix4
不变的Matrix4实例初始化为单位矩阵。
用于将对象打包到数组中的元素数。
static constant LSGlobe.Matrix4.ZERO : Matrix4
不变的Matrix4实例初始化为零矩阵。
Methods
clone ( result ) → Matrix4
复制提供的Matrix4实例。
Name | Type | Description |
---|---|---|
result
|
Matrix4 | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数;如果未提供,则为新的Matrix4实例。
将此矩阵与提供的矩阵进行逐项比较,然后返回如果相等,则为
true
,否则为
false
。
Name | Type | Description |
---|---|---|
right
|
Matrix4 | 可选 右侧矩阵。 |
Returns:
真正
如果相等,
假
除此以外。
将此矩阵与提供的矩阵进行逐项比较,然后返回
true
(如果它们在提供的epsilon内),否则为
false
。
Name | Type | Default | Description |
---|---|---|---|
right
|
Matrix4 | 可选 右侧矩阵。 | |
epsilon
|
Number |
0
|
可选 用于相等性测试的epsilon。 |
Returns:
真正
如果它们在提供的epsilon中,
假
除此以外。
计算代表此Matrix的字符串,每一行为在单独的行上,格式为'(column0,column1,column2,column3)'。
Returns:
一个字符串,表示提供的Matrix,每行位于单独的一行上,格式为'(column0,column1,column2,column3)'。
static LSGlobe.Matrix4.abs (matrix, result) → Matrix4
计算一个矩阵,其中包含提供的矩阵元素的绝对(无符号)值。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 具有符号元素的矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.add (left, right, result) → Matrix4
计算两个矩阵的总和。
Name | Type | Description |
---|---|---|
left
|
Matrix4 | 第一个矩阵。 |
right
|
Matrix4 | 第二个矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.clone (matrix, result ) → Matrix4
复制一个Matrix4实例。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 要复制的矩阵。 |
result
|
Matrix4 | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数;如果未提供,则为新的Matrix4实例。 (如果矩阵未定义,则返回未定义)
static LSGlobe.Matrix4.computeInfinitePerspectiveOffCenter (left, right, bottom, top, near, result) → Matrix4
计算表示无限偏心透视转换的Matrix4实例。
Name | Type | Description |
---|---|---|
left
|
Number | 可以看到的相机左侧的米数。 |
right
|
Number | 可以看到的相机右侧的米数。 |
bottom
|
Number | 可以看到的相机下方的米数。 |
top
|
Number | 可以看到的相机上方的米数。 |
near
|
Number | 到附近飞机的距离,以米为单位。 |
result
|
Matrix4 | 结果将存储在其中的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.computeOrthographicOffCenter (left, right, bottom, top, near, far, result) → Matrix4
计算表示正交变换矩阵的Matrix4实例。
Name | Type | Description |
---|---|---|
left
|
Number | 可以看到的相机左侧的米数。 |
right
|
Number | 可以看到的相机右侧的米数。 |
bottom
|
Number | 可以看到的相机下方的米数。 |
top
|
Number | 可以看到的相机上方的米数。 |
near
|
Number | 到附近飞机的距离,以米为单位。 |
far
|
Number | 到远平面的距离,以米为单位。 |
result
|
Matrix4 | 结果将存储在其中的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.computePerspectiveFieldOfView (fovY, aspectRatio, near, far, result) → Matrix4
计算表示透视变换矩阵的Matrix4实例。
Name | Type | Description |
---|---|---|
fovY
|
Number | 沿Y轴的弧度视场。 |
aspectRatio
|
Number | 长宽比。 |
near
|
Number | 到附近飞机的距离,以米为单位。 |
far
|
Number | 到远平面的距离,以米为单位。 |
result
|
Matrix4 | 结果将存储在其中的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :fovY必须位于(0,PI]中。
-
DeveloperError :aspectRatio必须大于零。
-
DeveloperError :near必须大于零。
-
DeveloperError :far必须大于零。
static LSGlobe.Matrix4.computePerspectiveOffCenter (left, right, bottom, top, near, far, result) → Matrix4
计算表示偏心透视转换的Matrix4实例。
Name | Type | Description |
---|---|---|
left
|
Number | 可以看到的相机左侧的米数。 |
right
|
Number | 可以看到的相机右侧的米数。 |
bottom
|
Number | 可以看到的相机下方的米数。 |
top
|
Number | 可以看到的相机上方的米数。 |
near
|
Number | 到附近飞机的距离,以米为单位。 |
far
|
Number | 到远平面的距离,以米为单位。 |
result
|
Matrix4 | 结果将存储在其中的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.computeView (position, direction, up, right, result) → Matrix4
计算从世界空间转换为视图空间的Matrix4实例。
Name | Type | Description |
---|---|---|
position
|
Cartesian3 | 相机的位置。 |
direction
|
Cartesian3 | 前进的方向。 |
up
|
Cartesian3 | 向上的方向。 |
right
|
Cartesian3 | 正确的方向。 |
result
|
Matrix4 | 结果将存储在其中的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.computeViewportTransformation ( viewport , nearDepthRange , farDepthRange , result ) → Matrix4
计算从规范化的设备坐标转换为窗口坐标的Matrix4实例。
Name | Type | Default | Description |
---|---|---|---|
viewport
|
Object |
{ x : 0.0, y : 0.0, width : 0.0, height : 0.0 }
|
可选 视口的角如示例1所示。 |
nearDepthRange
|
Number |
0.0
|
可选 窗口坐标中的近平面距离。 |
farDepthRange
|
Number |
1.0
|
可选 窗口坐标中的远平面距离。 |
result
|
Matrix4 | 可选 结果将存储在其中的对象。 |
Returns:
修改后的结果参数。
Example:
// Create viewport transformation using an explicit viewport and depth range.
var m = LSGlobe.Matrix4.computeViewportTransformation({
x : 0.0,
y : 0.0,
width : 1024.0,
height : 768.0
}, 0.0, 1.0, new LSGlobe.Matrix4());
按组件比较提供的矩阵并返回如果相等,则为
true
,否则为
false
。
Name | Type | Description |
---|---|---|
left
|
Matrix4 | 可选 第一个矩阵。 |
right
|
Matrix4 | 可选 第二个矩阵。 |
Returns:
真正
如果左右相等
假
除此以外。
Example:
//compares two Matrix4 instances
// a = [10.0, 14.0, 18.0, 22.0]
// [11.0, 15.0, 19.0, 23.0]
// [12.0, 16.0, 20.0, 24.0]
// [13.0, 17.0, 21.0, 25.0]
// b = [10.0, 14.0, 18.0, 22.0]
// [11.0, 15.0, 19.0, 23.0]
// [12.0, 16.0, 20.0, 24.0]
// [13.0, 17.0, 21.0, 25.0]
if(LSGlobe.Matrix4.equals(a,b)) {
console.log("Both matrices are equal");
} else {
console.log("They are not equal");
}
//Prints "Both matrices are equal" on the console
按组件比较提供的矩阵并返回
true
(如果它们在提供的epsilon内),否则为
false
。
Name | Type | Default | Description |
---|---|---|---|
left
|
Matrix4 | 可选 第一个矩阵。 | |
right
|
Matrix4 | 可选 第二个矩阵。 | |
epsilon
|
Number |
0
|
可选 用于相等性测试的epsilon。 |
Returns:
真正
如果左右在提供的epsilon之内,
假
除此以外。
Example:
//compares two Matrix4 instances
// a = [10.5, 14.5, 18.5, 22.5]
// [11.5, 15.5, 19.5, 23.5]
// [12.5, 16.5, 20.5, 24.5]
// [13.5, 17.5, 21.5, 25.5]
// b = [10.0, 14.0, 18.0, 22.0]
// [11.0, 15.0, 19.0, 23.0]
// [12.0, 16.0, 20.0, 24.0]
// [13.0, 17.0, 21.0, 25.0]
if(LSGlobe.Matrix4.equalsEpsilon(a,b,0.1)){
console.log("Difference between both the matrices is less than 0.1");
} else {
console.log("Difference between both the matrices is not less than 0.1");
}
//Prints "Difference between both the matrices is not less than 0.1" on the console
static LSGlobe.Matrix4.fromArray (array, startingIndex , result ) → Matrix4
从数组中的16个连续元素创建Matrix4。
Name | Type | Default | Description |
---|---|---|---|
array
|
Array.<Number> | 其16个连续元素对应于矩阵位置的数组。假定列为主要顺序。 | |
startingIndex
|
Number |
0
|
可选 第一个元素的数组中的偏移量,它对应于矩阵中第一列第一行的位置。 |
result
|
Matrix4 | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数;如果未提供,则为新的Matrix4实例。
Example:
// Create the Matrix4:
// [1.0, 2.0, 3.0, 4.0]
// [1.0, 2.0, 3.0, 4.0]
// [1.0, 2.0, 3.0, 4.0]
// [1.0, 2.0, 3.0, 4.0]
var v = [1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0];
var m = LSGlobe.Matrix4.fromArray(v);
// Create same Matrix4 with using an offset into an array
var v2 = [0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0];
var m2 = LSGlobe.Matrix4.fromArray(v2, 2);
static LSGlobe.Matrix4.fromCamera (camera, result ) → Matrix4
从Camera计算Matrix4实例。
Name | Type | Description |
---|---|---|
camera
|
Camera | 要使用的相机。 |
result
|
Matrix4 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix4实例。
static LSGlobe.Matrix4.fromColumnMajorArray (values, result ) → Matrix4
从列优先顺序数组计算Matrix4实例。
Name | Type | Description |
---|---|---|
values
|
Array.<Number> | 列为主要顺序的数组。 |
result
|
Matrix4 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix4实例。
static LSGlobe.Matrix4.fromRotationTranslation (rotation, translation , result ) → Matrix4
从Matrix3计算代表旋转的Matrix4实例和代表翻译的Cartesian3。
Name | Type | Default | Description |
---|---|---|---|
rotation
|
Matrix3 | 矩阵的左上角代表旋转。 | |
translation
|
Cartesian3 |
Cartesian3.ZERO
|
可选 矩阵的右上角代表翻译。 |
result
|
Matrix4 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix4实例。
static LSGlobe.Matrix4.fromRowMajorArray (values, result ) → Matrix4
从行优先顺序数组计算Matrix4实例。所得矩阵将按列优先顺序排列。
Name | Type | Description |
---|---|---|
values
|
Array.<Number> | 行优先顺序数组。 |
result
|
Matrix4 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix4实例。
static LSGlobe.Matrix4.fromScale (scale, result ) → Matrix4
计算表示不均匀比例的Matrix4实例。
Name | Type | Description |
---|---|---|
scale
|
Cartesian3 | x,y和z比例因子。 |
result
|
Matrix4 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix4实例。
Example:
// Creates
// [7.0, 0.0, 0.0, 0.0]
// [0.0, 8.0, 0.0, 0.0]
// [0.0, 0.0, 9.0, 0.0]
// [0.0, 0.0, 0.0, 1.0]
var m = LSGlobe.Matrix4.fromScale(new LSGlobe.Cartesian3(7.0, 8.0, 9.0));
static LSGlobe.Matrix4.fromTranslation (translation, result ) → Matrix4
从笛卡尔3创建一个表示转换的Matrix4实例。
Name | Type | Description |
---|---|---|
translation
|
Cartesian3 | 矩阵的右上角代表翻译。 |
result
|
Matrix4 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix4实例。
static LSGlobe.Matrix4.fromTranslationQuaternionRotationScale (translation, rotation, scale, result ) → Matrix4
根据平移,旋转和缩放(TRS)计算Matrix4实例用四元数表示旋转。
Name | Type | Description |
---|---|---|
translation
|
Cartesian3 | 翻译转换。 |
rotation
|
Quaternion | 旋转变换。 |
scale
|
Cartesian3 | 非均匀尺度变换。 |
result
|
Matrix4 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix4实例。
Example:
var result = LSGlobe.Matrix4.fromTranslationQuaternionRotationScale(
new LSGlobe.Cartesian3(1.0, 2.0, 3.0), // translation
LSGlobe.Quaternion.IDENTITY, // rotation
new LSGlobe.Cartesian3(7.0, 8.0, 9.0), // scale
result);
static LSGlobe.Matrix4.fromTranslationRotationScale (translationRotationScale, result ) → Matrix4
从
TranslationRotationScale
实例创建Matrix4实例。
Name | Type | Description |
---|---|---|
translationRotationScale
|
TranslationRotationScale | 实例。 |
result
|
Matrix4 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix4实例。
static LSGlobe.Matrix4.fromUniformScale (scale, result ) → Matrix4
计算代表统一比例尺的Matrix4实例。
Name | Type | Description |
---|---|---|
scale
|
Number | 统一比例因子。 |
result
|
Matrix4 | 可选 存储结果的对象,如果未定义,将创建一个新实例。 |
Returns:
修改后的结果参数,如果未提供,则为新的Matrix4实例。
Example:
// Creates
// [2.0, 0.0, 0.0, 0.0]
// [0.0, 2.0, 0.0, 0.0]
// [0.0, 0.0, 2.0, 0.0]
// [0.0, 0.0, 0.0, 1.0]
var m = LSGlobe.Matrix4.fromUniformScale(2.0);
static LSGlobe.Matrix4.getColumn (matrix, index, result) → Cartesian4
在提供的索引处作为Cartesian4实例检索矩阵列的副本。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 使用的矩阵。 |
index
|
Number | 要检索的列的从零开始的索引。 |
result
|
Cartesian4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :索引必须为0、1、2或3。
Examples:
//returns a Cartesian4 instance with values from the specified column
// m = [10.0, 11.0, 12.0, 13.0]
// [14.0, 15.0, 16.0, 17.0]
// [18.0, 19.0, 20.0, 21.0]
// [22.0, 23.0, 24.0, 25.0]
//Example 1: Creates an instance of Cartesian
var a = LSGlobe.Matrix4.getColumn(m, 2, new LSGlobe.Cartesian4());
//Example 2: Sets values for Cartesian instance
var a = new LSGlobe.Cartesian4();
LSGlobe.Matrix4.getColumn(m, 2, a);
// a.x = 12.0; a.y = 16.0; a.z = 20.0; a.w = 24.0;
计算提供的行和列处元素的数组索引。
Name | Type | Description |
---|---|---|
row
|
Number | 该行从零开始的索引。 |
column
|
Number | 列的从零开始的索引。 |
Returns:
元素在提供的行和列处的索引。
Throws:
-
DeveloperError :行必须为0、1、2或3。
-
DeveloperError :列必须为0、1、2或3。
Example:
var myMatrix = new LSGlobe.Matrix4();
var column1Row0Index = LSGlobe.Matrix4.getElementIndex(1, 0);
var column1Row0 = myMatrix[column1Row0Index];
myMatrix[column1Row0Index] = 10.0;
static LSGlobe.Matrix4.getMatrix3 (matrix, result) → Matrix3
假设矩阵是仿射变换矩阵,则获取所提供矩阵的左上3x3旋转矩阵。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 使用的矩阵。 |
result
|
Matrix3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
// returns a Matrix3 instance from a Matrix4 instance
// m = [10.0, 14.0, 18.0, 22.0]
// [11.0, 15.0, 19.0, 23.0]
// [12.0, 16.0, 20.0, 24.0]
// [13.0, 17.0, 21.0, 25.0]
var b = new LSGlobe.Matrix3();
LSGlobe.Matrix4.getMatrix3(m,b);
// b = [10.0, 14.0, 18.0]
// [11.0, 15.0, 19.0]
// [12.0, 16.0, 20.0]
假设矩阵是仿射变换,则计算最大比例。最大比例是左上角列向量的最大长度3x3矩阵。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 矩阵。 |
Returns:
最大规模。
static LSGlobe.Matrix4.getRow (matrix, index, result) → Cartesian4
在提供的索引处作为Cartesian4实例检索矩阵行的副本。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 使用的矩阵。 |
index
|
Number | 要检索的行的从零开始的索引。 |
result
|
Cartesian4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :索引必须为0、1、2或3。
Examples:
//returns a Cartesian4 instance with values from the specified column
// m = [10.0, 11.0, 12.0, 13.0]
// [14.0, 15.0, 16.0, 17.0]
// [18.0, 19.0, 20.0, 21.0]
// [22.0, 23.0, 24.0, 25.0]
//Example 1: Returns an instance of Cartesian
var a = LSGlobe.Matrix4.getRow(m, 2, new LSGlobe.Cartesian4());
//Example 2: Sets values for a Cartesian instance
var a = new LSGlobe.Cartesian4();
LSGlobe.Matrix4.getRow(m, 2, a);
// a.x = 18.0; a.y = 19.0; a.z = 20.0; a.w = 21.0;
static LSGlobe.Matrix4.getScale (matrix, result) → Cartesian3
假设矩阵是仿射变换,则提取非均匀比例。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 矩阵。 |
result
|
Cartesian3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数
static LSGlobe.Matrix4.getTranslation (matrix, result) → Cartesian3
假设矩阵是仿射变换矩阵,则获取提供的矩阵的平移部分。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 使用的矩阵。 |
result
|
Cartesian3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.inverse (matrix, result) → Matrix4
使用Cramers规则计算所提供矩阵的逆。如果行列式为零,则矩阵无法求逆,并引发异常。如果矩阵是仿射变换矩阵,则效率更高使用
Matrix4.inverseTransformation
将其反转。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 要求逆的矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
RuntimeError :矩阵不可逆,因为其确定值为零。
static LSGlobe.Matrix4.inverseTransformation (matrix, result) → Matrix4
假设所提供的矩阵是仿射变换矩阵,其中左上3x3元素是旋转矩阵,第四个元素的前三个元素专栏是翻译。底行假定为[0,0,0,1]。矩阵未验证为正确形式。此方法比计算一般4x4的逆速度更快使用
Matrix4.inverse
的矩阵。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 要求逆的矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.multiply (left, right, result) → Matrix4
计算两个矩阵的乘积。
Name | Type | Description |
---|---|---|
left
|
Matrix4 | 第一个矩阵。 |
right
|
Matrix4 | 第二个矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.multiplyByMatrix3 (matrix, rotation, result) → Matrix4
乘以一个转换矩阵(底行为
[0.0,0.0,0.0,1.0]
)由3x3旋转矩阵组成。这是一个优化对于
Matrix4.multiply(m,Matrix4.fromRotationTranslation(rotation),m);
而言,分配和运算量较少。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 左侧的矩阵。 |
rotation
|
Matrix3 | 右侧的3x3旋转矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
// Instead of LSGlobe.Matrix4.multiply(m, LSGlobe.Matrix4.fromRotationTranslation(rotation), m);
LSGlobe.Matrix4.multiplyByMatrix3(m, rotation, m);
static LSGlobe.Matrix4.multiplyByPoint (matrix, cartesian, result) → Cartesian3
计算矩阵与
Cartesian3
的乘积。这等效于调用
Matrix4.multiplyByVector
且
Cartesian4
的
w
组件为1,但返回
Cartesian3
而不是
Cartesian4
。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 矩阵。 |
cartesian
|
Cartesian3 | 重点。 |
result
|
Cartesian3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
var p = new LSGlobe.Cartesian3(1.0, 2.0, 3.0);
var result = LSGlobe.Matrix4.multiplyByPoint(matrix, p, new LSGlobe.Cartesian3());
static LSGlobe.Matrix4.multiplyByPointAsVector (matrix, cartesian, result) → Cartesian3
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 矩阵。 |
cartesian
|
Cartesian3 | 重点。 |
result
|
Cartesian3 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
var p = new LSGlobe.Cartesian3(1.0, 2.0, 3.0);
var result = LSGlobe.Matrix4.multiplyByPointAsVector(matrix, p, new LSGlobe.Cartesian3());
// A shortcut for
// Cartesian3 p = ...
// LSGlobe.Matrix4.multiplyByVector(matrix, new LSGlobe.Cartesian4(p.x, p.y, p.z, 0.0), result);
static LSGlobe.Matrix4.multiplyByScalar (matrix, scalar, result) → Matrix4
计算矩阵与标量的乘积。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 矩阵。 |
scalar
|
Number | 要乘以的数字。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
//create a Matrix4 instance which is a scaled version of the supplied Matrix4
// m = [10.0, 11.0, 12.0, 13.0]
// [14.0, 15.0, 16.0, 17.0]
// [18.0, 19.0, 20.0, 21.0]
// [22.0, 23.0, 24.0, 25.0]
var a = LSGlobe.Matrix4.multiplyByScalar(m, -2, new LSGlobe.Matrix4());
// m remains the same
// a = [-20.0, -22.0, -24.0, -26.0]
// [-28.0, -30.0, -32.0, -34.0]
// [-36.0, -38.0, -40.0, -42.0]
// [-44.0, -46.0, -48.0, -50.0]
static LSGlobe.Matrix4.multiplyByScale (matrix, scale, result) → Matrix4
乘以仿射变换矩阵(底行为
[0.0,0.0,0.0,1.0]
)通过隐式非均匀比例矩阵。这是一个优化对于
Matrix4.multiply(m,Matrix4.fromUniformScale(scale),m);
,其中
m
必须是仿射矩阵。此函数执行较少的分配和算术运算。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 左侧的仿射矩阵。 |
scale
|
Cartesian3 | 比例尺在右侧。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
// Instead of LSGlobe.Matrix4.multiply(m, LSGlobe.Matrix4.fromScale(scale), m);
LSGlobe.Matrix4.multiplyByScale(m, scale, m);
See:
static LSGlobe.Matrix4.multiplyByTranslation (matrix, translation, result) → Matrix4
乘以一个转换矩阵(底行为
[0.0,0.0,0.0,1.0]
)由
Cartesian3
定义的隐式转换矩阵。这是一个优化对于
Matrix4.multiply(m,Matrix4.fromTranslation(position),m);
而言,分配和运算量较少。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 左侧的矩阵。 |
translation
|
Cartesian3 | 翻译在右侧。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
// Instead of LSGlobe.Matrix4.multiply(m, LSGlobe.Matrix4.fromTranslation(position), m);
LSGlobe.Matrix4.multiplyByTranslation(m, position, m);
static LSGlobe.Matrix4.multiplyByUniformScale (matrix, scale, result) → Matrix4
乘以仿射变换矩阵(底行为
[0.0,0.0,0.0,1.0]
)通过隐式均匀比例矩阵。这是一个优化对于
Matrix4.multiply(m,Matrix4.fromUniformScale(scale),m);
,其中
m
必须是仿射矩阵。此函数执行较少的分配和算术运算。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 左侧的仿射矩阵。 |
scale
|
Number | 右边的统一比例尺。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
// Instead of LSGlobe.Matrix4.multiply(m, LSGlobe.Matrix4.fromUniformScale(scale), m);
LSGlobe.Matrix4.multiplyByUniformScale(m, scale, m);
See:
static LSGlobe.Matrix4.multiplyByVector (matrix, cartesian, result) → Cartesian4
计算矩阵与列向量的乘积。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 矩阵。 |
cartesian
|
Cartesian4 | 向量。 |
result
|
Cartesian4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.multiplyTransformation (left, right, result) → Matrix4
假设两个矩阵的乘积为2,则计算两个矩阵的乘积仿射变换矩阵,其中左上3x3元素是旋转矩阵,第四个元素的前三个元素专栏是翻译。底行假定为[0,0,0,1]。矩阵未验证为正确形式。这种方法比计算一般4x4产品的速度更快使用
Matrix4.multiply
的矩阵。
Name | Type | Description |
---|---|---|
left
|
Matrix4 | 第一个矩阵。 |
right
|
Matrix4 | 第二个矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
var m1 = new LSGlobe.Matrix4(1.0, 6.0, 7.0, 0.0, 2.0, 5.0, 8.0, 0.0, 3.0, 4.0, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0);
var m2 = LSGlobe.Transforms.eastNorthUpToFixedFrame(new LSGlobe.Cartesian3(1.0, 1.0, 1.0));
var m3 = LSGlobe.Matrix4.multiplyTransformation(m1, m2, new LSGlobe.Matrix4());
static LSGlobe.Matrix4.negate (matrix, result) → Matrix4
计算所提供矩阵的求反副本。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 求反的矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
//create a new Matrix4 instance which is a negation of a Matrix4
// m = [10.0, 11.0, 12.0, 13.0]
// [14.0, 15.0, 16.0, 17.0]
// [18.0, 19.0, 20.0, 21.0]
// [22.0, 23.0, 24.0, 25.0]
var a = LSGlobe.Matrix4.negate(m, new LSGlobe.Matrix4());
// m remains the same
// a = [-10.0, -11.0, -12.0, -13.0]
// [-14.0, -15.0, -16.0, -17.0]
// [-18.0, -19.0, -20.0, -21.0]
// [-22.0, -23.0, -24.0, -25.0]
将提供的实例存储到提供的数组中。
Name | Type | Default | Description |
---|---|---|---|
value
|
Matrix4 | 要打包的值。 | |
array
|
Array.<Number> | 要打包的数组。 | |
startingIndex
|
Number |
0
|
可选 开始打包元素的数组索引。 |
Returns:
打包到的数组
static LSGlobe.Matrix4.setColumn (matrix, index, cartesian, result) → Matrix4
计算一个新矩阵,用提供的Cartesian4实例替换提供的矩阵中的指定列。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 使用的矩阵。 |
index
|
Number | 要设置的列的从零开始的索引。 |
cartesian
|
Cartesian4 | 直角坐标系,其值将分配给指定的列。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :索引必须为0、1、2或3。
Example:
//creates a new Matrix4 instance with new column values from the Cartesian4 instance
// m = [10.0, 11.0, 12.0, 13.0]
// [14.0, 15.0, 16.0, 17.0]
// [18.0, 19.0, 20.0, 21.0]
// [22.0, 23.0, 24.0, 25.0]
var a = LSGlobe.Matrix4.setColumn(m, 2, new LSGlobe.Cartesian4(99.0, 98.0, 97.0, 96.0), new LSGlobe.Matrix4());
// m remains the same
// a = [10.0, 11.0, 99.0, 13.0]
// [14.0, 15.0, 98.0, 17.0]
// [18.0, 19.0, 97.0, 21.0]
// [22.0, 23.0, 96.0, 25.0]
static LSGlobe.Matrix4.setRow (matrix, index, cartesian, result) → Matrix4
计算一个新矩阵,用提供的Cartesian4实例替换提供的矩阵中的指定行。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 使用的矩阵。 |
index
|
Number | 要设置的行的从零开始的索引。 |
cartesian
|
Cartesian4 | 直角坐标系,其值将分配给指定的行。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Throws:
-
DeveloperError :索引必须为0、1、2或3。
Example:
//create a new Matrix4 instance with new row values from the Cartesian4 instance
// m = [10.0, 11.0, 12.0, 13.0]
// [14.0, 15.0, 16.0, 17.0]
// [18.0, 19.0, 20.0, 21.0]
// [22.0, 23.0, 24.0, 25.0]
var a = LSGlobe.Matrix4.setRow(m, 2, new LSGlobe.Cartesian4(99.0, 98.0, 97.0, 96.0), new LSGlobe.Matrix4());
// m remains the same
// a = [10.0, 11.0, 12.0, 13.0]
// [14.0, 15.0, 16.0, 17.0]
// [99.0, 98.0, 97.0, 96.0]
// [22.0, 23.0, 24.0, 25.0]
static LSGlobe.Matrix4.setScale (matrix, scale, result) → Matrix4
计算一个新矩阵,用提供的比例尺替换比例尺。假设矩阵是仿射变换
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 使用的矩阵。 |
scale
|
Cartesian3 | 该比例尺替代了所提供矩阵的比例尺。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.setTranslation (matrix, translation, result) → Matrix4
计算一个新矩阵,该矩阵替换提供的最右边一列中的转换具有提供的翻译的矩阵。假设矩阵是仿射变换
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 使用的矩阵。 |
translation
|
Cartesian3 | 该翻译将替换提供的矩阵的翻译。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
static LSGlobe.Matrix4.subtract (left, right, result) → Matrix4
计算两个矩阵的差。
Name | Type | Description |
---|---|---|
left
|
Matrix4 | 第一个矩阵。 |
right
|
Matrix4 | 第二个矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
根据提供的Matrix4实例计算一个数组。该数组将按列优先顺序排列。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 要使用的矩阵。 |
result
|
Array.<Number> | 可选 将结果存储到的数组。 |
Returns:
修改后的Array参数或新的Array实例(如果未提供)。
Example:
//create an array from an instance of Matrix4
// m = [10.0, 14.0, 18.0, 22.0]
// [11.0, 15.0, 19.0, 23.0]
// [12.0, 16.0, 20.0, 24.0]
// [13.0, 17.0, 21.0, 25.0]
var a = LSGlobe.Matrix4.toArray(m);
// m remains the same
//creates a = [10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0]
static LSGlobe.Matrix4.transpose (matrix, result) → Matrix4
计算提供的矩阵的转置。
Name | Type | Description |
---|---|---|
matrix
|
Matrix4 | 要转置的矩阵。 |
result
|
Matrix4 | 将结果存储到的对象。 |
Returns:
修改后的结果参数。
Example:
//returns transpose of a Matrix4
// m = [10.0, 11.0, 12.0, 13.0]
// [14.0, 15.0, 16.0, 17.0]
// [18.0, 19.0, 20.0, 21.0]
// [22.0, 23.0, 24.0, 25.0]
var a = LSGlobe.Matrix4.transpose(m, new LSGlobe.Matrix4());
// m remains the same
// a = [10.0, 14.0, 18.0, 22.0]
// [11.0, 15.0, 19.0, 23.0]
// [12.0, 16.0, 20.0, 24.0]
// [13.0, 17.0, 21.0, 25.0]
static LSGlobe.Matrix4.unpack (array, startingIndex , result ) → Matrix4
从压缩数组中检索实例。
Name | Type | Default | Description |
---|---|---|---|
array
|
Array.<Number> | 压缩数组。 | |
startingIndex
|
Number |
0
|
可选 要解压缩的元素的起始索引。 |
result
|
Matrix4 | 可选 将结果存储到的对象。 |
Returns:
修改后的结果参数;如果未提供,则为新的Matrix4实例。