函数(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
}
)
参考 示例。