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