premultiply 是 Yuka js 库中 Matrix4 的一个方法之一。该方法可将当前矩阵与给定的矩阵相乘,并将结果存储在当前矩阵中。
Matrix4.premultiply(matrix);
matrix:Array,必需。要与当前矩阵相乘的矩阵。premultiply 方法将给定的矩阵 matrix 乘以当前矩阵。乘积的结果代替当前矩阵,并返回该矩阵。
矩阵乘法是非交换的,即如果有两个矩阵 A 和 B,那么 AB 与 BA 的结果将是不同的。通常来说,我们使用 premultiply 方法时,我们使用 B 参数(即当前矩阵),以便获得正确的结果。
const matrix1 = new Matrix4();
matrix1.makeScale(2, 3, 4);
const matrix2 = new Matrix4();
matrix2.makeRotationX(Math.PI / 2);
matrix1.premultiply(matrix2);
console.log(matrix1.elements);
// [2, 0, 0, 0,
// 0, 0, 3, 0,
// 0, -4, 0, 0,
// 0, 0, 0, 1]
在此示例中,我们创建了两个矩阵 matrix1 和 matrix2。然后,我们使用 makeScale() 和 makeRotationX() 方法将其修改为比例矩阵和绕 x 轴的旋转矩阵。
最后,我们使用 premultiply() 方法将 matrix2 与 matrix1 相乘,并将结果存储在 matrix1 中。最终的矩阵将包含先缩放再旋转的变换。