跳到主要内容
版本:9.4.1

函数(Math)

Matrix4

一个 4x4 矩阵。Matrix4 方法的任何参数都可以是纯 JavaScript 数组。

用法

let Matrix4 =window.mapmost.Matrix4;

将矩阵复制到 Matrix4 以便可以使用 Matrix4 方法对其进行操作(如平移):

const IDENTITY = [1, 0, ..., 1];
const m = new Matrix4(IDENTITY).translate([1, 0, 0]);

反转矩阵

const inverse = matrix.invert();

方法

构造函数

创建一个空 Matrix4

new Matrix4()

identity()

将矩阵设置为乘法单位矩阵。

matrix4.identity()

set(...number)

设置矩阵的元素。

matrix4.set(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33)

invert()

将此矩阵设置为其逆矩阵。逆矩阵反映了对角线中的原始矩阵元素。

matrix4.invert()

multiplyLeft(matrix: number[16])

从左边乘以另一个矩阵。用于 Matrix4 变换向量时,向量从右侧相乘。这意味着从左侧乘以矩阵将导致它在转换期间最后应用(当然,除非从左侧乘以其他矩阵)。

matrix4.multiplyLeft(matrix4)

multiplyRight(matrix: number [16] )

从右边乘以另一个矩阵。

matrix4.multiplyRight(matrix4)

rotateX(radians: number)

围绕 X 轴添加给定角度的旋转。相当于将新变换右乘到矩阵中,但性能更高。

matrix4.rotateX(radians)

rotateY(radians: number)

围绕 Y 轴添加给定角度的旋转。

rotateY(radians)

rotateZ(radians: number)

围绕 Z 轴添加给定角度的旋转。

matrix4.rotateZ(radians)

rotateXYZ(angles: [rx: number, ry: number, rz: number])

围绕 X、Y 和 Z 轴按给定角度添加连续旋转。

rotateXYZ([rx, ry, rz])

scale(factor: number | number[3])

添加缩放变换,每个轴都可以独立缩放。

matrix4.scale(factor) 
factor(数字) - 应用于每个轴的比例因子。
matrix4.scale([x, y, z])
x(number) - 要乘以 x 分量的比例因子
y(number) - 要乘以 y 分量的比例因子
z(number) - 要乘以 z 分量的比例因子

相当于将新变换右乘到矩阵中,但性能更高。

matrix4.scale([x, y, z])
在矢量变换期间,所有坐标都将乘以给定的因子。
scale -1 将翻转该轴上的坐标系。
scale -0 将删除该组件。

translate(scale: number[3])

向矩阵添加平移。

matrix4.translate([x, y, z])
x(number) - 要添加到 x 组件的平移
y(number) - 要添加到 y 分量的平移
z(number) - 要添加到 z 分量的平移

相当于将新变换右乘到矩阵中,但性能更高。在向量变换期间,给定的平移值被添加到正在变换的向量的每个分量。

案例

    const TILESET_URL = "<your url>";
// 创建初始化的单位矩阵
let matrix = new window.mapmost.Matrix4();
// 添加平移旋转变换
let matrix4 = matrix.translate([0, 0, 200]).rotateX(Math.PI / 2);
map.add3dTilesLayer(
{
id: 'tile-3d-layer',
data: TILESET_URL,
transform: matrix4
}
)

参考 示例