DOMMatrixReadOnly: toFloat32Array() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

toFloat32Array() 方法是 DOMMatrixReadOnly 接口的一个方法,它返回一个新的 Float32Array,其中包含构成矩阵的全部 16 个元素(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44)。这些元素以单精度浮点数的形式存储在数组中,采用列优先(col-major,或称为“colexographical access”或“colex”)顺序。(换句话说,是从第一列从上到下,然后是第二列,以此类推。)

有关双精度浮点数,请参阅 DOMMatrixReadOnly.toFloat64Array()

语法

js
toFloat32Array()

参数

无。

返回值

一个 Float32Array;一个包含矩阵 16 个元素值的数组。

示例

基本用法

js
const matrix = new DOMMatrixReadOnly();
const float32 = matrix.translate(20, 30, 50).toFloat32Array();
console.log(float32); // Float64Array(16) [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 20, 30, 0, 1 ] ]
console.log(`m41: ${float32[12]}, m42: ${float32[13]}, m43: ${float32[14]}`); // m41: 20, m42: 30, M44: 40

单精度

有多种方法可以访问矩阵的值。此示例通过 30deg 旋转矩阵,使用 DOMMatrixReadOnly.toJSON() 方法将旋转后的状态保存为 JSON 对象,并使用 toFloat32Array() 方法将其保存为单精度数组。

js
const matrix = new DOMMatrixReadOnly();
const json = matrix.rotate(30).toJSON();
const float32 = matrix.rotate(30).toFloat32Array();

console.log(`a: ${json["a"]}, b: ${json["b"]}`); // a: 0.8660254037844387, b: 0.49999999999999994
console.log(`a: ${float32[0]}, b: ${float32[1]}`); // a: 0.8660253882408142, b: 0.5

规范

规范
Geometry Interfaces Module Level 1
# dom-dommatrixreadonly-tofloat32array

浏览器兼容性

另见