Appearance
Matrix4x4 (JavaScript)
Matrix4x4
Scripting Name:Insight.Matrix4x4
4x4 矩阵。
constructor();
Matrix4x4 的构造方法无参数,其值为单位矩阵的值(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1)。
Properties
determinant
type :number
(只读)行列式的值。
inverse
type :Insight.Matrix4
(只读)逆矩阵。
isIdentity
type :boolean
(只读)是否为单位矩阵。
lossyScale
type :Insight.Vector3
(只读)缩放。
rotation
type :Insight.Quaternion
(只读)旋转。
transpose
type :Insight.Matrix4
(只读)转置矩阵。
Static Properties
identity
type :Insight.Matrix4
(只读)单位矩阵。
zero
type :Insight.Matrix4
(只读)零矩阵。
Methods
set
javascript
set(n11: number, n12: number, n13: number, n14: number, n21: number, n22: number, n23: number, n23: number, n23: number, n24: number, n31: number, n32: number, n33: number, n34: number, n41: number, n42: number, n43: number, n44: number): this;
设置向量各个分量的值,返回值为本身。
Parameters
- n11 : number 矩阵的第一行第一个值
- n12 : number 矩阵的第一行第二个值
- n13 : number 矩阵的第一行第三个值
- ……
identity
javascript
identity(): this;
将本矩阵重置为单位矩阵,因此本矩阵的原值可能会被改变。
clone
javascript
clone(): Matrix4;
克隆一个新矩阵等于本矩阵。
copy
javascript
copy(m: Matrix4): this;
将另一个矩阵的值拷贝到本矩阵中。
Parameters
- m : Insight.Matrix4 另一个矩阵
copyPosition
javascript
copyPosition(m: Matrix4): this;
将另一个矩阵的平移向量部分的值拷贝到本矩阵中,因此本矩阵的原值可能会被改变。
Parameters
- m : Insight.Matrix4 另一个矩阵
extractBasis
javascript
extractBasis(xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): this;
将本向量的正交基放到 xAxis,yAxis,zAxis 中。如果矩阵为:
(a, b, c, d,
e, f, g, h,
i, j, k, l,
m, n, o, p)
则 xAxis,yAxis,zAxis 为:
xAxis = (a, e, i)
yAxis = (b, f, j)
zAxis = (c, g, k)
Parameters
- xAxis : Insight.Vector3 正交基的 x 轴
- yAxis : Insight.Vector3 正交基的 y 轴
- zAxis : Insight.Vector3 正交基的 z 轴
makeBasis
javascript
makeBasis(xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): this;
将 xAxis,yAxis,zAxis 表示的正交基组成矩阵,并将值放入本矩阵中,因此本矩阵的原值可能会被丢弃。
矩阵可以表示为:
(xAxis.x, yAxis.x, zAxis.x, 0,
xAxis.y, yAxis.y, zAxis.y, 0,
xAxis.z, yAxis.z, zAxis.z, 0,
0, 0, 0, 1)
Parameters
- xAxis : Insight.Vector3 正交基的 x 轴
- yAxis : Insight.Vector3 正交基的 y 轴
- zAxis : Insight.Vector3 正交基的 z 轴
extractRotation
javascript
extractRotation(m: Matrix4): this;
将矩阵 m 的旋转向量部分提取成新矩阵,并将新矩阵的值放入本矩阵中,因此本矩阵的原值可能会被丢弃。
Parameters
- m : Insight.Matrix4 另一个矩阵
makeRotationFromQuaternion
javascript
makeRotationFromQuaternion(q: Quaternion): Matrix4;
将该矩阵的值设置为由 q 定义的旋转矩阵,因此本矩阵的原值可能会被丢弃。
若 q = w + xi + yj + zk,则旋转矩阵表示为:
矩阵可以表示为:
(1-2y²-2z² 2xy-2zw 2xz+2yw 0,
2xy+2zw 1-2x²-2z² 2yz-2xw 0,
2xz-2yw 2yz+2xw 1-2x²-2y² 0,
0 0 0 1)
Parameters
- q : Insight.Quaternion 待计算的四元数
lookAt
javascript
lookAt(eye: Vector3, target: Vector3, up: Vector3): this;
构造一个新矩阵,从 eye 方向看向 target,并以 up 为上方向,并放入本矩阵中,因此本矩阵的原值可能会被丢弃。
Parameters
- eye : Insight.Vector3 eye 方向
- target : Insight.Vector3 target 方向
- up : Insight.Vector3 up 方向
multiply
javascript
multiply(m: Matrix4): this;
计算本矩阵与矩阵 m 的乘积,并将新矩阵的值放入本矩阵中,相当于 this = this * m。
Parameters
- m : Insight.Matrix4 另一个矩阵
multiplyMatrices
javascript
multiplyMatrices(a: Matrix4, b: Matrix4): this;
计算矩阵 a 与矩阵 b 的乘积,并将新矩阵的值放入本矩阵中,相当于 this = a * b。
Parameters
- a: Insight.Matrix4 矩阵 a
- a: Insight.Matrix4 矩阵 b
multiplyScalar
javascript
multiplyScalar(s: number): this;
计算本矩阵与标量 s 的乘积,并将新矩阵的值放入本矩阵中,相当于 this = this * s。
Parameters
- s: number 标量 s
premultiply
javascript
premultiply(m: Matrix4): this;
计算矩阵 m 与本矩阵的乘积,并将新矩阵的值放入本矩阵中,相当于 this = m * this。
Parameters
- m : Insight.Matrix4 另一个矩阵
determinant
javascript
determinant(): number;
计算本矩阵的行列式。
transpose
javascript
transpose(): this;
计算本矩阵的转置矩阵,并将值放入本矩阵中,因此本矩阵的原值可能会被丢弃。
setPosition
javascript
setPosition(v: Vector3 | number, y?: number, z?: number): this;
将 v 或 vyz 组成的向量作为平移向量部分放入本矩阵中,因此本矩阵的平移向量部分的值可能会被改变,但本矩阵其余的值不会改变。
Parameters
- v: Insight.Vector3 或 number 向量 v 或浮点数 v
- y: number 浮点数 y
- z: number 浮点数 z
getInverse
javascript
getInverse(m: Matrix4): this;
将矩阵 m 的逆矩阵放入本矩阵中,因此本矩阵的原值可能会被丢弃。
Parameters
- m : Insight.Matrix4 矩阵 m
scale
javascript
scale(v: Vector3): this;
计算本矩阵与向量 v 的乘积,并将新矩阵的值放入本矩阵中,相当于 this = m * this。
Parameters
- v : Insight.Vector3 向量 v
getMaxScaleOnAxis
javascript
getMaxScaleOnAxis(): number;
计算用本矩阵表示的三维空间的三个相互垂直的坐标轴的最大长度。
makeTranslation
javascript
makeTranslation(x: number, y: number, z: number): this;
将本矩阵设置为由 xyz 表示的平移矩阵,因此本矩阵的原值可能会被丢弃。
Parameters
- x: number 浮点数 x
- y: number 浮点数 y
- z: number 浮点数 z
makeRotationX
javascript
makeRotationX(theta: number): this;
将本矩阵设置为绕 X 轴旋转 theta(θ)角度(弧度)表示的旋转矩阵,因此本矩阵的原值可能会被丢弃。
矩阵可表示为:
(1 0 0 0,
0 cos(θ) -sin(θ) 0,
0 sin(θ) cos(θ) 0,
0 0 0 1)
Parameters
- theta: number 浮点数 theta
makeRotationY
javascript
makeRotationY(theta: number): this;
将本矩阵设置为绕 Y 轴旋转 theta(θ)角度(弧度)表示的旋转矩阵,因此本矩阵的原值可能会被丢弃。
矩阵可表示为:
(cos(θ) 0 sin(θ) 0,
0 1 0 0,
-sin(θ) 0 cos(θ) 0,
0 0 0 1)
Parameters
- theta: number 浮点数 theta
makeRotationZ
javascript
makeRotationZ(theta: number): this;
将本矩阵设置为绕 Z 轴旋转 theta(θ)角度(弧度)表示的旋转矩阵,因此本矩阵的原值可能会被丢弃。
矩阵可表示为:
(cos(θ) -sin(θ) 0 0,
sin(θ) cos(θ) 0 0,
0 0 1 0,
0 0 0 1)
Parameters
- theta: number 浮点数 theta
makeRotationAxis
javascript
makeRotationAxis(axis: Vector3, angle: number): this;
将本矩阵设置为绕 axis 轴旋转 angle 角度(弧度)表示的旋转矩阵,因此本矩阵的原值可能会被丢弃。
Parameters
- theta: number 浮点数 theta
makeScale
javascript
makeScale(x: number, y: number, z: number): this;
将本矩阵设置为由 xyz 表示的缩放矩阵,因此本矩阵的原值可能会被丢弃。
矩阵可表示为:
(x, 0, 0, 0,
0, y, 0, 0,
0, 0, z, 0,
0, 0, 0, 1)
Parameters
- x: number 浮点数 x
- y: number 浮点数 y
- z: number 浮点数 z
makeShear
javascript
makeShear(x: number, y: number, z: number): this;
将本矩阵设置为由 xyz 表示的切变矩阵,因此本矩阵的原值可能会被丢弃。
矩阵可表示为:
(1, y, z, 0,
x, 1, z, 0,
x, y, 1, 0,
0, 0, 0, 1)
Parameters
- x: number 浮点数 x
- y: number 浮点数 y
- z: number 浮点数 z
compose
javascript
compose(translation: Vector3, rotation: Quaternion, scale: Vector3): this;
用 translation、rotation、quaternion 构造一个新矩阵,并放入本矩阵中,因此本矩阵的原值可能会被丢弃。
Parameters
- translation : Insight.Vector3 平移向量
- rotation : Insight.Quaternion 旋转向量
- scale : Insight.Vector3 缩放向量
decompose
javascript
decompose(translation: Vector3, rotation: Quaternion, scale: Vector3): void;
将本矩阵的值分解到 translation、rotation、quaternion 三个向量中。
Parameters
- translation : Insight.Vector3 平移向量
- rotation : Insight.Quaternion 旋转向量
- scale : Insight.Vector3 缩放向量
makePerspective
javascript
makePerspective(left: number, right: number, bottom: number, top: number, near: number, far: number): this;
构造新的透视矩阵,并放入本矩阵中,因此本矩阵的原值可能会被丢弃。
makePerspective
javascript
makePerspective(fov: number, aspect: number, near: number, far: number): this;
构造新的透视矩阵,并放入本矩阵中,因此本矩阵的原值可能会被丢弃。
makeOrthographic
javascript
makeOrthographic(left: number, right: number, top: number, bottom: number, near: number, far: number): this;
构造新的正交矩阵,并放入本矩阵中,因此本矩阵的原值可能会被丢弃。
equals
javascript
equals(m: Matrix4): boolean;
判断是否等于另一个矩阵 m。
Parameters
- m : Insight.Matrix4 另一个矩阵
toString
javascript
toString(): string;
按照如下的格式输出:
(n11, n12, n13, n14,
n21, n22, n23, n24,
n31, n32, n33, n34,
n41, n42, n43, n44)
fromArray
javascript
fromArray(array: number[], offset?: number): this;
从一个数组 array 中获取矩阵的每个分量的值,并填充到本矩阵中,因此本矩阵的原值可能会被丢弃。
Parameters
- array : number[] 带有 16 个分量值的数组
- offset?: number 可选参数,表示从数组的第 offset 个下标开始获取值,如不填则默认 0
toArray
javascript
toArray(array?: number[], offset?: number): number[];
将本矩阵中的所有分量值填充到 array 数组中。返回值为填充好的 array 数组(与参数中的 array 是同一个)。如 array 数组为空,则返回一个全新的数组。
Parameters
- array : number[] 可选参数,待填充的数组,如不填则返回一个全新的数组
- offset?: number 可选参数,表示从数组的第 offset 个下标开始填充值,offset 的值不能超过数组长度,否则会抛出异常。如不填则默认 0
getColumn
javascript
getColumn(index: number, b: Vector4): void;
获取矩阵的一列。
Parameters
- index : number 列序
- b : Insight.Vector4 将一列的值放入该向量中
getRow
javascript
getRow(index: number, b: Vector4): void;
获取矩阵的一行。
Parameters
- index : number 行序
- b : Insight.Vector4 将一行的值放入该向量中
setColumn
javascript
setColumn(index: number, b: Vector4): void;
设置矩阵的一列。
Parameters
- index : number 列序
- b : Insight.Vector4 一列的值
setRow
javascript
setRow(index: number, b: Vector4): void;
设置矩阵的一行。
Parameters
- index : number 行序
- b : Insight.Vector4 一行的值
setTRS
javascript
setTRS(pos: Vector3, q: Quaternion, s: Vector3): void;
设置矩阵平移、旋转、缩放变换。
Parameters
- pos : Insight.Vector3 平移向量
- q : Insight.Quaternion 旋转四元数
- s : Insight.Vector3 缩放向量
Static Methods
MultiplyPoint
javascript
multiplyPoint(m: Matrix4, b: Vector3): Vector3;
对一个 Vector3 进行矩阵变换,此方法会返回一个全新的向量。
Parameters
- m : Insight.Matrix4 待计算的矩阵 m
- b : Insight.Vector3 三维向量的值 [备注] 这个版本的效率低于 multiplyPoint3x4,但可以用于投影变换。 如果没有投影变换,可以使用 multiplyPoint3x4,以取得更高的效率。
MultiplyPoint3x4
javascript
multiplyPoint3x4(m: Matrix4, b: Vector3): Vector4;
用矩阵 m 对一个 Vector3 进行矩阵变换,此方法会返回一个全新的向量。
Parameters
- m : Insight.Matrix4 待计算的矩阵 m
- b : Insight.Vector3 三维向量的值 [备注] 这个版本的效率高于 multiplyPoint,但不可以用于投影变换。 如果有投影变换,不可以使用本方法。
MultiplyVector3
javascript
multiplyVector3(m: Matrix4, b: Vector3): Vector3;
用矩阵 m 对一个 Vector3 进行旋转缩放,不进行平移,此方法会返回一个全新的向量。
Parameters
- m : Insight.Matrix4 待计算的矩阵 m
- b : Insight.Vector3 三维向量的值
MultiplyVector4
javascript
multiplyVector4(m: Matrix4, b: Vector4): Vector4;
将矩阵 m 与向量 b 相乘,相当于 x = m*b,此方法会返回一个全新的向量。
Parameters
- m : Insight.Matrix4 待计算的矩阵 m
- b : Insight.Vector4 三维向量的值
LookAt
javascript
static LookAt(from: Vector3, to: Vector3, up: Vector3): Matrix4;
创建一个相机矩阵。此方法会返回一个全新的矩阵,而不会修改 matrix 的值。
Parameters
- from : Insight.Vector3 视线起点位置
- to : Insight.Vector3 注视点位置
- up : Insight.Vector3 相机的向上向量
Ortho
javascript
static Ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4;
创建一个正交投影矩阵。此方法会返回一个全新的矩阵,而不会修改 matrix 的值。
Parameters
- left : number 投影椎体左边界
- right : number 投影椎体右边界
- bottom : number 投影椎体下边界
- top : number 投影椎体上边界
- near : number 投影椎体近平面的距离
- far : number 投影椎体远平面的距离
Perspective
javascript
static Perspective(fovy: number, aspect: number, near: number, far: number): Matrix4;
创建一个透视投影矩阵。此方法会返回一个全新的矩阵,而不会修改 matrix 的值。
Parameters
- fov : number field of view
- aspect : number 屏幕宽高比
- near : number 投影椎体近平面的距离
- far : number 投影椎体远平面的距离
Rotate
javascript
static Rotate(q: Quaternion): Matrix4;
创建旋转矩阵。此方法会返回一个全新的矩阵,而不会修改 matrix 的值。
Parameters
- q : Insight.Quaternion 旋转四元数
Scale
javascript
static Scale(s: Vector3): Matrix4;
创建缩放矩阵。此方法会返回一个全新的矩阵,而不会修改 matrix 的值。
Parameters
- s : Insight.Vector3 缩放向量
Translate
javascript
static Translate(s: Vector3): Matrix4;
创建平移矩阵。此方法会返回一个全新的矩阵,而不会修改 matrix 的值。
Parameters
- vector : Insight.Vector3 平移向量
TRS
javascript
static TRS(pos: Vector3, q: Quaternion, s: Vector3): Matrix4;
创建平移、旋转、缩放矩阵。此方法会返回一个全新的矩阵,而不会修改 matrix 的值。
Parameters
- pos : Insight.Vector3 平移向量
- q : Insight.Quaternion 旋转四元数
- s : Insight.Vector3 缩放向量