4x4矩陣,可作為列主順序數組進行索引。對于代碼可讀性,構造函數參數按行主順序排列。
new Matrix4(column0Row0, column1Row0, column2Row0, column3Row0, column0Row1, column1Row1, column2Row1, column3Row1, column0Row2, column1Row2, column2Row2, column3Row2, column0Row3, column1Row3, column2Row3, column3Row3)
Parameters:
column0Row0
(Number)
(default 0.0
)
第0列第0行的值。
column1Row0
(Number)
(default 0.0
)
第1列第0行的值。
column2Row0
(Number)
(default 0.0
)
第2列第0行的值。
column3Row0
(Number)
(default 0.0
)
第3列第0行的值。
column0Row1
(Number)
(default 0.0
)
第0列第1行的值。
column1Row1
(Number)
(default 0.0
)
第1列第1行的值。
column2Row1
(Number)
(default 0.0
)
第2列第1行的值。
column3Row1
(Number)
(default 0.0
)
第3列第1行的值。
column0Row2
(Number)
(default 0.0
)
第0列第2行的值。
column1Row2
(Number)
(default 0.0
)
第1列第2行的值。
column2Row2
(Number)
(default 0.0
)
第2列第2行的值。
column3Row2
(Number)
(default 0.0
)
第3列第2行的值。
column0Row3
(Number)
(default 0.0
)
第0列第3行的值。
column1Row3
(Number)
(default 0.0
)
第1列第3行的值。
column2Row3
(Number)
(default 0.0
)
第2列第3行的值。
column3Row3
(Number)
(default 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
length : Number
獲取集合中的項數。
(static, constant) COLUMN0ROW0 : Number
Matrix4中第0列第0行的索引。
(static, constant) COLUMN0ROW1 : Number
第0列第1行的matrix4索引。
(static, constant) COLUMN0ROW2 : Number
Matrix4中第0列第2行的索引。
(static, constant) COLUMN0ROW3 : Number
Matrix4中第0列第3行的索引。
(static, constant) COLUMN1ROW0 : Number
Matrix4中第1列第0行的索引。
(static, constant) COLUMN1ROW1 : Number
Matrix4中第1列第1行的索引。
(static, constant) COLUMN1ROW2 : Number
Matrix4中第1列第2行的索引。
(static, constant) COLUMN1ROW3 : Number
Matrix4中第1列第3行的索引。
(static, constant) COLUMN2ROW0 : Number
Matrix4中第2列第0行的索引。
(static, constant) COLUMN2ROW1 : Number
Matrix4中第2列第1行的索引。
(static, constant) COLUMN2ROW2 : Number
Matrix4中第2列第2行的索引。
(static, constant) COLUMN2ROW3 : Number
Matrix4中第2列第3行的索引。
(static, constant) COLUMN3ROW0 : Number
Matrix4中第3列第0行的索引。
(static, constant) COLUMN3ROW1 : Number
Matrix4中第3列第1行的索引。
(static, constant) COLUMN3ROW2 : Number
Matrix4中第3列第2行的索引。
(static, constant) COLUMN3ROW3 : Number
Matrix4中第3列第3行的索引。
(static, constant) IDENTITY : Matrix4
初始化為標識矩陣的不可變矩陣4實例。
(static) packedLength : Number
用于將對象打包到數組中的元素數。
(static, constant) ZERO : Matrix4
初始化為零矩陣的不可變矩陣4實例。
Methods
clone(result) → {Matrix4}
復制提供的matrix4實例。
Parameters:
將此矩陣與提供的矩陣組件進行比較,如果相等,則返回
true
,否則返回false
。
Parameters:
將此矩陣與提供的矩陣組件進行比較,如果它們在提供的epsilon中,則返回
true
,否則返回false
。
Parameters:
epsilon
(Number)
用于相等性測試的epsilon。
計算表示此矩陣的字符串,每一行都位于單獨的行上,格式為“(第0列、第1列、第2列、第3列)”。
計算包含所提供矩陣元素的絕對(無符號)值的矩陣。
Parameters:
計算兩個矩陣的和。
Parameters:
復制Matrix4實例。
Parameters:
計算表示無限偏心透視轉換的Matrix4實例。
Parameters:
left
(Number)
攝像機左側將在視圖中的米數。
right
(Number)
攝像機右側將在視圖中的米數。
bottom
(Number)
將在視圖中的相機下方的米數。
top
(Number)
攝像機上方將在視圖中的米數。
near
(Number)
到近平面的距離,單位為米。
計算表示正交變換矩陣的Matrix4實例。
Parameters:
left
(Number)
攝像機左側將在視圖中的米數。
right
(Number)
攝像機右側將在視圖中的米數。
bottom
(Number)
將在視圖中的相機下方的米數。
top
(Number)
攝像機上方將在視圖中的米數。
near
(Number)
到近平面的距離,單位為米。
far
(Number)
到遠平面的距離,單位為米。
計算表示透視轉換矩陣的Matrix4實例。
Parameters:
fovY
(Number)
沿Y軸以弧度表示的視場。
aspectRatio
(Number)
縱橫比。
near
(Number)
到近平面的距離,單位為米。
far
(Number)
到遠平面的距離,單位為米。
Throws
-
DeveloperError : Fovy必須在(0,pi)中。
-
DeveloperError : aspectratio必須大于零。
-
DeveloperError : near必須大于零。
-
DeveloperError : far必須大于零。
計算表示偏心透視轉換的Matrix4實例。
Parameters:
left
(Number)
攝像機左側將在視圖中的米數。
right
(Number)
攝像機右側將在視圖中的米數。
bottom
(Number)
將在視圖中的相機下方的米數。
top
(Number)
攝像機上方將在視圖中的米數。
near
(Number)
到近平面的距離,單位為米。
far
(Number)
到遠平面的距離,單位為米。
計算從世界空間轉換為視圖空間的Matrix4實例。
Parameters:
計算從標準化設備坐標轉換為窗口坐標的Matrix4實例。
Parameters:
viewport
(Object)
(default { x : 0.0, y : 0.0, width : 0.0, height : 0.0 }
)
如示例1所示的視區角。
nearDepthRange
(Number)
(default 0.0
)
窗口坐標中的近平面距離。
farDepthRange
(Number)
(default 1.0
)
窗口坐標中的遠平面距離。
Example
// Create viewport transformation using an explicit viewport and depth range.
var m = bmgl.Matrix4.computeViewportTransformation({
x : 0.0,
y : 0.0,
width : 1024.0,
height : 768.0
}, 0.0, 1.0, new bmgl.Matrix4());
比較提供的矩陣組件,如果它們相等,則返回
true
,否則返回false
。
Parameters:
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(bmgl.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
比較提供的矩陣組件,如果它們在提供的epsilon中,則返回
true
,否則返回false
。
Parameters:
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(bmgl.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
從數組中的16個連續元素創建matrix4。
Parameters:
array
(Array.<Number>)
16個連續元素對應矩陣位置的數組。假定列主順序。
startingIndex
(Number)
(default 0
)
第一個元素數組中的偏移量,它對應于矩陣中第一列第一行的位置。
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 = bmgl.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 = bmgl.Matrix4.fromArray(v2, 2);
從相機計算Matrix4實例。
Parameters:
從列主順序數組計算matrix4實例。
Parameters:
values
(Array.<Number>)
列主順序數組。
從表示旋轉的Matrix3和表示轉換的Cartesian3計算Matrix4實例。
Parameters:
從行主順序數組計算matrix4實例。生成的矩陣將按主列順序排列。
Parameters:
values
(Array.<Number>)
行主順序數組。
計算表示非均勻比例的Matrix4實例。
Parameters:
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 = bmgl.Matrix4.fromScale(new bmgl.Cartesian3(7.0, 8.0, 9.0));
從表示轉換的cartesian3創建matrix4實例。
Parameters:
使用四元數表示的旋轉,從平移、旋轉和縮放(TRS)表示計算Matrix4實例。
Parameters:
Example
var result = bmgl.Matrix4.fromTranslationQuaternionRotationScale(
new bmgl.Cartesian3(1.0, 2.0, 3.0), // translation
bmgl.Quaternion.IDENTITY, // rotation
new bmgl.Cartesian3(7.0, 8.0, 9.0), // scale
result);
從
TranslationRotationScale
實例創建matrix4實例。
Parameters:
計算表示統一比例的Matrix4實例。
Parameters:
scale
(Number)
均勻比例因子。
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 = bmgl.Matrix4.fromUniformScale(2.0);
以cartesian4實例的形式檢索所提供索引處的矩陣列的副本。
Parameters:
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 = bmgl.Matrix4.getColumn(m, 2, new bmgl.Cartesian4());
//Example 2: Sets values for Cartesian instance
var a = new bmgl.Cartesian4();
bmgl.Matrix4.getColumn(m, 2, a);
// a.x = 12.0; a.y = 16.0; a.z = 20.0; a.w = 24.0;
Throws
-
DeveloperError : 索引必須是0、1、2或3。
在提供的行和列處計算元素的數組索引。
Parameters:
row
(Number)
行的從零開始的索引。
column
(Number)
列的從零開始的索引。
Example
var myMatrix = new bmgl.Matrix4();
var column1Row0Index = bmgl.Matrix4.getElementIndex(1, 0);
var column1Row0 = myMatrix[column1Row0Index];
myMatrix[column1Row0Index] = 10.0;
Throws
-
DeveloperError : 行必須是0、1、2或3。
-
DeveloperError : 列必須是0、1、2或3。
獲取所提供矩陣的左上3x3旋轉矩陣,假定該矩陣是仿射變換矩陣。
Parameters:
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 bmgl.Matrix3();
bmgl.Matrix4.getMatrix3(m,b);
// b = [10.0, 14.0, 18.0]
// [11.0, 15.0, 19.0]
// [12.0, 16.0, 20.0]
假設矩陣是仿射變換,則計算最大比例。最大比例是左上3x3矩陣中列向量的最大長度。
Parameters:
獲取所提供矩陣的左上3x3旋轉矩陣,假定該矩陣是仿射變換矩陣。
Parameters:
Deprecated: moved to Matrix4.getMatrix3
以cartesian4實例的形式檢索所提供索引處的矩陣行的副本。
Parameters:
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 = bmgl.Matrix4.getRow(m, 2, new bmgl.Cartesian4());
//Example 2: Sets values for a Cartesian instance
var a = new bmgl.Cartesian4();
bmgl.Matrix4.getRow(m, 2, a);
// a.x = 18.0; a.y = 19.0; a.z = 20.0; a.w = 21.0;
Throws
-
DeveloperError : 索引必須是0、1、2或3。
假設矩陣是仿射變換,則提取不均勻尺度。
Parameters:
獲取所提供矩陣的轉換部分,假定該矩陣是仿射變換矩陣。
Parameters:
使用Cramers規則計算所提供矩陣的逆矩陣。如果行列式為零,則矩陣不能反轉,并引發異常。如果矩陣是仿射變換矩陣,用
Matrix4.inverseTransformation
倒轉更有效。
Parameters:
Throws
-
RuntimeError : 矩陣不可逆,因為它的確定度為零。
假設所提供的矩陣是仿射變換矩陣,其中左上3x3元素是旋轉矩陣,第四列中的上三個元素是平移,則計算所提供矩陣的逆矩陣。假定底行為[0,0,0,1]。未驗證矩陣的形式是否正確。此方法比使用
Matrix4.inverse
計算一般4x4矩陣的逆矩陣更快。
Parameters:
計算兩個矩陣的乘積。
Parameters:
將轉換矩陣(底行為
[0.0, 0.0, 0.0, 1.0]
)乘以3x3旋轉矩陣。這是針對Matrix4.multiply(m, Matrix4.fromRotationTranslation(rotation), m);
的優化,具有較少的分配和算術運算。
Parameters:
Example
// Instead of bmgl.Matrix4.multiply(m, bmgl.Matrix4.fromRotationTranslation(rotation), m);
bmgl.Matrix4.multiplyByMatrix3(m, rotation, m);
計算矩陣和a
Cartesian3
的乘積。這相當于用一個Cartesian4
調用Matrix4.multiplyByVector
,組件w
為1,但返回一個Cartesian3
而不是一個Cartesian4
。
Parameters:
Example
var p = new bmgl.Cartesian3(1.0, 2.0, 3.0);
var result = bmgl.Matrix4.multiplyByPoint(matrix, p, new bmgl.Cartesian3());
Parameters:
Example
var p = new bmgl.Cartesian3(1.0, 2.0, 3.0);
var result = bmgl.Matrix4.multiplyByPointAsVector(matrix, p, new bmgl.Cartesian3());
// A shortcut for
// Cartesian3 p = ...
// bmgl.Matrix4.multiplyByVector(matrix, new bmgl.Cartesian4(p.x, p.y, p.z, 0.0), result);
計算矩陣和標量的乘積。
Parameters:
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 = bmgl.Matrix4.multiplyByScalar(m, -2, new bmgl.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]
將仿射變換矩陣(底行為
[0.0, 0.0, 0.0, 1.0]
)乘以隱式非均勻比例矩陣。這是對Matrix4.multiply(m, Matrix4.fromUniformScale(scale), m);
的優化,其中m
必須是仿射矩陣。此函數執行的分配和算術運算更少。
Parameters:
Example
// Instead of bmgl.Matrix4.multiply(m, bmgl.Matrix4.fromScale(scale), m);
bmgl.Matrix4.multiplyByScale(m, scale, m);
將轉換矩陣(底行為
[0.0, 0.0, 0.0, 1.0]
)乘以由Cartesian3
定義的隱式轉換矩陣。這是針對Matrix4.multiply(m, Matrix4.fromTranslation(position), m);
的優化,分配和算術運算更少。
Parameters:
Example
// Instead of bmgl.Matrix4.multiply(m, bmgl.Matrix4.fromTranslation(position), m);
bmgl.Matrix4.multiplyByTranslation(m, position, m);
將仿射變換矩陣(底行為
[0.0, 0.0, 0.0, 1.0]
)乘以隱式均勻比例矩陣。這是對Matrix4.multiply(m, Matrix4.fromUniformScale(scale), m);
的優化,其中m
必須是仿射矩陣。此函數執行的分配和算術運算更少。
Parameters:
Example
// Instead of bmgl.Matrix4.multiply(m, bmgl.Matrix4.fromUniformScale(scale), m);
bmgl.Matrix4.multiplyByUniformScale(m, scale, m);
計算矩陣和列向量的乘積。
Parameters:
假設兩個矩陣是仿射變換矩陣,其中左上3x3元素是旋轉矩陣,第四列中的上三個元素是平移,則計算兩個矩陣的乘積。假定底行為[0,0,0,1]。未驗證矩陣的形式是否正確。此方法比使用
Matrix4.multiply
計算一般4x4矩陣的產品更快。
Parameters:
Example
var m1 = new bmgl.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 = bmgl.Transforms.eastNorthUpToFixedFrame(new bmgl.Cartesian3(1.0, 1.0, 1.0));
var m3 = bmgl.Matrix4.multiplyTransformation(m1, m2, new bmgl.Matrix4());
計算所提供矩陣的否定副本。
Parameters:
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 = bmgl.Matrix4.negate(m, new bmgl.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]
將提供的實例存儲到提供的數組中。
Parameters:
array
(Array.<Number>)
要打包的數組。
startingIndex
(Number)
(default 0
)
數組中開始打包元素的索引。
計算用提供的cartesian4實例替換所提供矩陣中指定列的新矩陣。
Parameters:
index
(Number)
要設置的列的從零開始的索引。
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 = bmgl.Matrix4.setColumn(m, 2, new bmgl.Cartesian4(99.0, 98.0, 97.0, 96.0), new bmgl.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]
Throws
-
DeveloperError : 索引必須是0、1、2或3。
計算用提供的cartesian4實例替換所提供矩陣中指定行的新矩陣。
Parameters:
index
(Number)
要設置的行的從零開始的索引。
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 = bmgl.Matrix4.setRow(m, 2, new bmgl.Cartesian4(99.0, 98.0, 97.0, 96.0), new bmgl.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]
Throws
-
DeveloperError : 索引必須是0、1、2或3。
計算用提供的比例替換比例的新矩陣。假設矩陣是仿射變換。
Parameters:
計算一個新的矩陣,用所提供的翻譯替換所提供矩陣最右列中的翻譯。假設矩陣是仿射變換。
Parameters:
計算兩個矩陣的差。
Parameters:
從提供的Matrix4實例計算數組。數組將按列主順序排列。
Parameters:
result
(Array.<Number>)
存儲結果的數組。
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 = bmgl.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]
計算所提供矩陣的轉置。
Parameters:
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 = bmgl.Matrix4.transpose(m, new bmgl.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]
從壓縮數組中檢索實例。
Parameters:
array
(Array.<Number>)
壓縮數組。
startingIndex
(Number)
(default 0
)
要解包的元素的起始索引。